Skip to content

Deploying

Reaching the daemon from outside localhost

The tmux-rc daemon has no authentication — no login, no API key, no token. POST /api/panes/{id}/send types into a real terminal on your machine, so anyone who can reach its port can control your terminal. It binds 127.0.0.1:18030 to keep that “anyone” down to your own machine — which is why tmux-rc is for single-user machines only: loopback is not a permission check, and on a shared host every other account can reach that port. The moment you put it on a network, whatever you place in front of it is the entire access-control system.

These pages cover the ways to do that safely.

Tell the daemon its public name

The daemon answers only requests whose Host it knows: localhost, 127.0.0.1, [::1] and a specific TMUXRC_HOST bind. Tunnels and reverse proxies forward the name the phone typed, so until that name is in TMUXRC_ALLOWED_HOSTS=tmux.example.com (comma-separated, no scheme) every request gets 400 Host is not allowed and WebSockets close with code 1008. Browser writes also need the public origin in TMUXRC_ALLOWED_ORIGINS=https://tmux.example.com. Put both in .env and restart the daemon. They are DNS-rebinding and cross-site defences, not a login; see SECURITY.md . Let the proxy pass the daemon’s Cache-Control headers through untouched: everything is no-store except the immutable assets under /v/<version>/, so a proxy with caching rules of its own serves stale JS after an upgrade.