justray

Last commit Platforms Version

A modern VPN client that lives in your terminal

English / Русский / 简体中文

meow >.<

### Features - **Modern protocols:** VMess, VLESS, Trojan, WireGuard/AmneziaWG, Shadowsocks, Hysteria 1/2, TUIC, AnyTLS, SOCKS5 and other - **Flexible:** import subscriptions from raw links or Clash/Mihomo YAML, sing-box or Xray json with automatic refresh and a wide range of settings - **Headless:** the daemon and embedded sing-box core run independently from the TUI, keeping connections alive after you detach - **Lightweight:** ~50 MB RAM on Linux/macOS and ~100 MB on Windows - **Cross-platform:** runs in modern terminals on Linux, macOS 13+, and Windows 1803+, including native PowerShell and WSL ### Installation Using package manager: ```bash # macOS or Linux brew install luynrs/tap/justray # Arch Linux (AUR) yay -S justray-bin # Windows winget install luynrs.justray ``` Alternatively, with [x-cmd](https://www.x-cmd.com/mod/eget): ```bash x eget use luynrs/justray ``` Or via script: ```bash # Linux / macOS curl -fsSL https://raw.githubusercontent.com/luynrs/justray/main/install.sh | sh ``` ```powershell # Windows irm https://raw.githubusercontent.com/luynrs/justray/main/install.ps1 | iex ``` Nix: The flake supports Linux (x86_64/aarch64) and Apple Silicon. On Intel Macs, use Homebrew or binaries The Home Manager module starts the daemon on Linux; on macOS it only installs the package. ```bash # Run directly nix run github:luynrs/justray ``` ```nix # Home Manager { imports = [ justray.homeManagerModules.default ]; services.justray.enable = true; } ``` ### Usage Package manager and script installations also provide `jray` as a short alias for `justray` > [!NOTE] > WinGet provides only `justray` and `justrayd`; the `jray` alias must be added manually - `jray`: open the TUI #### Connection - `jray up [--tun | --proxy]`: start the daemon and connect - `jray down`: disconnect - `jray stop`: stop the daemon - `jray probe [sub | id | name]`: probe node latencies - `jray status [--json]`: show connection status - `jray logs [daemon | engine] [-f]`: view logs #### Subscriptions & Nodes `jray subscription` or `jray sub` - `add`: add a subscription or raw protocol link - `remove`: remove a subscription by ID or name - `refresh`: refresh subscriptions - `list [--json]`: list subscriptions and nodes #### Additional - `-h`, `--help`: show help - `-v`, `--version`: show the current version ### Keybinds | **Key** | **Action** | **Key** | **Action** | | ------------ | ----------------------- | ------------- | ----------------------- | | `↑/↓`, `k/j` | Navigate | `Shift+↑/↓` | Reorder subscriptions | | `←/→`, `h/l` | Fold / expand | `Enter` | Toggle / connect | | `t` / `T` | Ping selected / all | `r` / `R` | Refresh selected / all | | `m` | Switch mode (PROXY / TUN) | `/` | Filter nodes | | `a` | Add subscription / node | `d` | Delete subscription | | `o` | Open settings | `Esc` | Save settings / cancel edit | | `Tab` | Switch settings tabs | `q`, `Ctrl+C` | Exit TUI | ### Screenshots Main UI ![JustRay](.github/assets/screenshots/main.png) ![JustRay (Add)](.github/assets/screenshots/add.png) Main UI in TTY mode ![JustRay (TTY)](.github/assets/screenshots/tty.png) Settings UI ![JustRay (Settings)](.github/assets/screenshots/settings.png) ### License [GPL-3.0-or-later](LICENSE)