A modern, lightweight desktop GUI for the Mihomo proxy core. Manage profiles, proxy groups, rules and connections from a clean interface — with system proxy and TUN mode, connection inspector with per-process grouping and app icons, built-in profile editor, auto-updater and a polished UX.
Grab the latest build from the Releases page.
- Installer:
Nyx_<version>_x64-setup.exe— run it and follow the prompts. On first launch Nyx asks for elevation to install the helper service required for TUN mode; accept it once and you are set. - Portable:
Nyx-x86_64-windows.zip— unzip anywhere and runnyx.exe. No install, settings live in your user data dir.
Pick the package for your distro, or the portable tarball:
- Debian/Ubuntu:
Nyx_<version>_amd64.deb—sudo apt install ./Nyx_<version>_amd64.deb - Fedora/RHEL:
Nyx-<version>.x86_64.rpm—sudo dnf install ./Nyx-<version>.x86_64.rpm - Arch:
Nyx-<version>-x86_64.pkg.tar.xz—sudo pacman -U ./Nyx-<version>-x86_64.pkg.tar.xz - Portable:
Nyx-x86_64-linux.tar.gz— extract and run./nyx
Nyx ships a flake. Run it directly without installing:
nix run github:BX-Team/NyxOr add it to your own flake as an input:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nyx.url = "github:BX-Team/Nyx";
};
outputs = {
self,
nixpkgs,
nyx,
...
}: {
...
};
}Then add the package to your environment.systemPackages or home.packages:
# NixOS configuration
{
pkgs,
inputs,
...
}: {
environment.systemPackages = with pkgs; [
inputs.nyx.packages.${pkgs.system}.nyx
];
}# Home Manager configuration
{
pkgs,
inputs,
...
}: {
home.packages = with pkgs; [
inputs.nyx.packages.${pkgs.system}.nyx
];
}On NixOS the /etc unit directory is read-only, so the in-app installer has to
fall back to /usr/local/lib/systemd/system and asks polkit for a password
after every rebuild that moves the binary. The module declares the service
instead — no password prompt, ever, and TUN works out of the box:
# NixOS configuration
{ inputs, ... }: {
imports = [ inputs.nyx.nixosModules.default ];
programs.nyx = {
enable = true;
# The account you run the GUI from; only it may drive the service.
service.user = "alice";
};
}The module installs the package too, so it replaces the environment.systemPackages
entry above. With it in place Nyx hides the install/uninstall buttons in
Settings → System service and leaves the unit to your configuration. Set
programs.nyx.service.enable = false if you would rather manage the core
yourself in direct mode.
To pull a prebuilt binary from the Cachix cache instead of compiling locally, add the substituter and its public key:
nix = {
settings = {
substituters = [
"https://bx-team.cachix.org"
];
trusted-public-keys = [
"bx-team.cachix.org-1:tnGNc1rsS8QOav+VGxXCZzf/Y0/SGchOwVCCBA/eG6E="
];
};
};Nyx is a single pure-Rust gpui application. The only hard requirement is a stable Rust toolchain.
git clone https://github.com/BX-Team/Nyx.git
cd Nyx
cargo run # run in development
cargo build --release # produce an optimized binary at target/release/nyxOn Linux you also need the gpui/tray system libraries. On Debian/Ubuntu:
sudo apt-get install -y \
libgtk-3-dev libxdo-dev \
libxkbcommon-dev libwayland-dev \
libx11-dev libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libfontconfig1-dev libfreetype6-dev \
libvulkan-dev mesa-vulkan-driversOr just use the flake: nix develop drops you into a shell with everything wired up.
We welcome contributions to Nyx! If you have an idea for a new feature or found a bug, please feel free to submit a pull request. Before you start, please read our contributing guidelines to understand our contribution process.
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
Nyx was based on or inspired by these projects:
- MetaCubeX/mihomo: A rule-based tunnel in Go.
- DINGDANGMAOUP/mihomo-rs: A Rust SDK for Mihomo, manages versions, configs and other things.
- zed-industries/zed: Home of the gpui GPU-accelerated UI framework that Nyx is built on.
- longbridge/gpui-component: The gpui component library powering Nyx's widgets.
- zzzgydi/sysproxy-rs: Vendored and trimmed as
crates/nyx-sysproxy— reads and writes the OS system proxy on Windows and Linux.
