A beautiful TUI for managing Xray proxy configurations with a built-in Tor IP changer
| Feature | Description |
|---|---|
| 🖥️ Interactive TUI | Navigate, manage, and connect to Xray proxy configs using keyboard and mouse |
| 🔗 Config Import | Paste vless://, vmess://, trojan://, ss://, hysteria2:// URLs or raw JSON |
| 🧦 Manual SOCKS | Create SOCKS proxy configs interactively step-by-step |
| 📡 Subscription Manager | Import, save, and manage subscription links |
| 📊 Latency Testing | Ping configs with TCP or real proxy latency measurement |
| 🌍 Server Regions | Auto-detect geographic regions via GeoIP and browse configs grouped by country |
| 🔄 IP Changer | Launch a Tor-based IP rotation tool with custom intervals |
| 🔍 Config Details | View full JSON, copy to clipboard, or export as shareable link |
| 🔎 Search & Filter | Search by name/server/protocol, filter by working/errored/unpinged |
- Go 1.25+ (for building from source)
- Xray core binary (
xray) installed in your PATH (download here) - Tor (optional, for IP Changer — auto-installed if missing)
git clone https://github.com/AmirabbasRouintan/Xray.git
cd Xray
go build -o xray-app ../xray-appOr directly from source:
go run .1 Connect — Browse and connect to saved configs
2 Add Config — Import new configs (paste URL/JSON, manual SOCKS, file)
3 Subscriptions — Manage subscription URLs
4 Settings — Configure HTTP/SOCKS ports and ping timeout
5 IP Changer — Launch Tor IP rotation tool
6 Xray Info — View Xray core status and version
7 Sorter — Browse configs grouped by geographic region
8 Quit — Exit the application
| Option | Description |
|---|---|
| Paste Config | Paste vless://, vmess://, trojan://, ss://, hysteria2:// URLs or JSON |
| Manual SOCKS | Step-by-step SOCKS proxy creation |
| Load JSON File | Import from a local .json file |
| Setting | Default | Description |
|---|---|---|
| HTTP Port | 10808 |
Local HTTP inbound port when connecting |
| SOCKS Port | 10809 |
Local SOCKS inbound port when connecting |
| Ping Timeout | 8s |
Timeout per ping request |
Configs are stored in ~/.config/xray-configs/ as individual JSON files.
The active config is symlinked at ~/.config/xray/config.json.
Settings, ping cache, and region cache are saved to:
~/.config/xray-configs/settings.json~/.config/xray-configs/ping_cache.json~/.config/xray-configs/region_cache.json
The Tor-based IP changer requires root privileges and supports:
- Automatic Tor installation — Detects your Linux distro and installs Tor
- Custom intervals — Set time between IP changes (in seconds)
- Fixed or infinite rotation — Choose how many times to change IP
- Current IP display — View your Tor exit node IP address
./xray-app # Select "IP Changer" from menu
sudo ./xray-app --ipchanger-mode # Run in IP changer mode directlySupported Distributions:
- Ubuntu, Debian (apt-get)
- Fedora, CentOS, RHEL, Amazon Linux (yum)
- Arch, Manjaro (pacman)
| Protocol | URL Format | Status |
|---|---|---|
| VLESS | vless:// |
✅ Full support |
| VMess | vmess:// |
✅ Full support |
| Trojan | trojan:// |
✅ Full support |
| Shadowsocks | ss:// |
✅ Full support |
| Hysteria2 | hysteria2:// / hy2:// |
✅ Full support |
| JSON Config | Raw JSON | ✅ Full support |
| SOCKS | Manual entry | ✅ Full support |
- Bubble Tea — Go framework for terminal user interfaces
- Lipgloss — Style definitions for terminal apps
- Bubbles — TUI components (spinner, textarea, textinput)
- Catppuccin Jade — Beautiful color palette
- Xray-core — The proxy core
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
This project is MIT licensed.