A modern VPN client that lives in your terminal
- Modern protocols: VMess, VLESS, Trojan, Shadowsocks, Hysteria1/2, TUIC, AnyTLS, SOCKS5 and more
- Flexible: subscriptions from raw links or Clash/Mihomo YAML, auto-refreshing and a wide list of settings
- Headless: daemon and embedded sing-box core run independently from the TUI
- Lightweight: up to ~50 MB of RAM on unix-based systems, ~100 MB on Windows
- Crossplatform: runs in every terminal on macOS, Linux and Windows (PowerShell and WSL)
Using package manager:
# macOS or Linux
brew install luynrs/tap/justray
# Windows
winget install luynrs.justray
# Arch Linux (btw)
yay -S justray-bin
Or via script:
# Windows:
irm https://raw.githubusercontent.com/luynrs/justray/main/install.ps1 | iex
# macOS or Linux:
curl -fsSL https://raw.githubusercontent.com/luynrs/justray/main/install.sh | shNix flake:
nix run github:luynrs/justray# Home Manager: justrayd as a systemd --user service
{
imports = [ justray.homeManagerModules.default ];
services.justray.enable = true;
}If justray is installed via a script or packet manager the jray alias is available. But! Winget provides justray and justrayd.
jray: open the TUI
jray up <node> [--tun | --proxy]: start the daemon and connectjray down: disconnectjray stop: shut down the daemonjray status: show connection status
jray subscription or jray sub
add: add a subscription or raw protocol linkremove: remove a subscription or node by IDlist: list subscriptions and nodes
-h,--help: show help-v,--version: show the current version
| Key | Action | Key | Action |
|---|---|---|---|
↑/↓, k/j |
Move | shift+↑/↓ |
Reorder subscription |
←/→, h/l |
Fold or cycle | enter |
Connect, edit or choose |
t / T |
Ping / Ping all | r / R |
Refresh / Refresh all |
m |
Toggle PROXY / TUN | / |
Filter |
a |
Add subscription | d |
Delete subscription / rule |
o |
Open settings | esc |
Back, cancel or clear |
tab |
Switch tab | q / ctrl+c |
Quit |


