A modern VPN client that lives in your terminal
Features
- Modern protocols: VMess, VLESS, Trojan, WireGuard, 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:
# macOS or Linux brew install luynrs/tap/justray # Arch Linux (AUR) yay -S justray-bin # Windows winget install luynrs.justray
Alternatively, with x-cmd:
x eget use luynrs/justray
Or via script:
# Linux / macOS curl -fsSL https://raw.githubusercontent.com/luynrs/justray/main/install.sh | sh
# 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
# Run directly
nix run github:luynrs/justray# 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 <node> [--tun | --proxy]: start the daemon and connectjray down: disconnectjray stop: stop the daemonjray probe [sub | id | name]: probe node latenciesjray status [--json]: show connection statusjray logs [daemon | engine | tui] [-f]: view logs
Subscriptions & Nodes
jray subscription or jray sub
add: add a subscription or raw protocol linkremove: remove a subscription by ID or namerefresh: refresh subscriptionslist [--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 |
Back / cancel |
Tab |
Switch panel | q, Ctrl+C |
Exit TUI |
