Subscription support
Add groups with subscription URLs, refresh profiles, view metadata — traffic used, limit, expiry.
A modern terminal-based VPN client.
Rust TUI frontend. Go engine backed by Xray-core. Built in the open under the MIT license.
WhoisThat is a modern, terminal-based VPN client for Linux. A Rust TUI talks to a Go daemon over a length-prefixed JSON protocol on localhost. The daemon launches Xray-core as a subprocess and controls a TUN device through file capabilities — no root, no setuid, no sudo.
Profiles, groups, routing rules, and subscription metadata are stored encrypted at rest with AES-256-GCM. The TUI never touches the network. All VPN logic lives in the core.
Three layers. The TUI never touches the network. The core speaks a custom TCP/JSON protocol on localhost. Xray-core handles all protocol-level work as a subprocess.
Add groups with subscription URLs, refresh profiles, view metadata — traffic used, limit, expiry.
Auto-generated hardware ID sent with subscription requests. Remnawave-compatible x-hwid headers. Toggle, reset, customize.
Domain, IP, protocol, port → proxy / direct / block. GeoIP and GeoSite support. Auto-downloaded dat files.
When enabled, blocks all non-VPN traffic if the connection drops. Dedicated firewall table. SOCKS and TUN modes.
tun2socks + iptables/nftables, auto-detected. No root required — runs under Linux file capabilities.
Three methods: TCP connect, HTTP GET via SOCKS5, HTTP HEAD. Scan-all with dedup across all groups.
AES-256-GCM at rest. Key auto-generated on first run. Transparent read/write, automatic migration.
q leaves the VPN running in the background. Reopen the TUI to reattach. Autoconnect on startup.
The subject in its native environment. Tokyo Night-inspired palette. Keyboard-driven. Mouse optional.

curl -fsSL https://raw.githubusercontent.com/kvunoff/whoisthat/main/install.sh | bash
Auto-detects distro, builds from latest tagged release, installs to /usr/local/bin. Xray-core included.
paru -S whoisthat
Also: yay -S whoisthat. pkgrel handled automatically by CI on tag push.
git clone https://github.com/kvunoff/whoisthat.git cd whoisthat cd parser && cargo build --release && cd .. cd core/core && go build -o whoisthat-core && cd ../.. cargo build --release
TUN mode: sudo setcap cap_net_admin,cap_net_raw,cap_setpcap=+ep /usr/local/bin/whoisthat-core
No telemetry. No tracking. No proprietary blobs. Source on GitHub under the MIT license. Contributions, issues, and forks welcome.