Encrypted Proxy Tunnel
When HTTP is all you've got.
Route SOCKS5 and HTTP(S) proxy traffic through plain HTTP, end-to-end encrypted with ChaCha20-Poly1305. Built for environments that serve HTTP but block direct TCP.
Works behind:
Architecture
Features
Dual-Protocol Listener
SOCKS5 and HTTP proxy on the same port, auto-detected from the first byte.
End-to-End Encryption
ChaCha20-Poly1305 AEAD with per-message random nonce, Argon2id key derivation.
Connection Multiplexing
Many local connections share a single SSE stream to the server.
Custom Header Injection
Cookie-authenticated reverse proxies like Cloud Shell and Codespaces.
Hot Reload
Poll config.toml every 3s and swap password, headers, and routing via ArcSwap — no restart.
Bounded Recovery
Stable sessions, a 15s SSE connect timeout, and controlled reconnects prevent hangs and recovery death spirals.
Encrypted File Transfer
push and pull files or directories over the tunnel, streamed as zstd-compressed tar archives.
Remote Shell
Open an interactive PTY session over the tunnel with full terminal resize and exit-code relay.
Installation
Homebrew
brew install aeroxy/tap/tunnixFrom Source
cargo install --git https://github.com/aeroxy/tunnixQuick Start
Start the server
tunnix server \
--listen 0.0.0.0:8080 \
--password "your-secret"Connect the client
tunnix client \
--server https://your-host \
--password "your-secret" \
--local-addr 127.0.0.1:7890Use it
Configure your application to use the proxy.
curl --socks5 127.0.0.1:7890 https://ifconfig.meTransfer files
requires --allow-transferPush, pull, and stream remote command output without corrupting stdout (v0.5.0+).
tunnix push ./build --server https://your-host --password "your-secret"
tunnix pull /var/log/app.log --server https://your-host --password "your-secret"Changelog
Recent releases
- ›Half-close preserved; full replies survive upload EOF
- ›Abort messages stop wasted target reads
- ›Bounded teardown and configurable reconnect give-up
- ›15s timeout for establishing SSE connections
- ›Stable session IDs through HTTP 503 recovery
- ›Logs and completion status moved to stderr
- ›push / pull file transfer over the tunnel
- ›Streaming zstd-compressed tar archives
- ›Global config discovery via XDG path
Stack