Every terminal on every computer you own — in your pocket.
webmux_half.mp4
A tiny self-hosted web terminal for your tmux sessions, built for phones. Run your long-lived terminals — coding agents, dev servers, builds — in tmux on your machines at home; check on and steer them from your phone, from anywhere, over your private Tailscale network.
You run claude, codex, dev servers, and builds in tmux on your big machine. Then you leave the desk.
webmux puts a real terminal in your pocket. From your phone, anywhere on your private network:
- See everything at a glance — every session on every machine, with its live command and directory, plus each box's CPU / GPU / RAM / free disk at the top. You instantly know where the action is.
- Jump in and steer — read what your agent is doing, answer its prompt with one tap (
y·continue·approve), paste a fix,^Ca runaway, scroll back through the output. - Nothing is ever lost — every session lives in tmux on the PC, so when your phone sleeps, drops Wi-Fi, or switches to cellular, webmux just re-attaches. Pick up exactly where you left off — and when you're back at the desk, the same session is right there in a real terminal window.
It's "keep an eye on the agents running at home, from the train."
|
📟 Built for thumbs
A full terminal over WebSocket with momentum scrolling, a soft-key bar ( ✍️ Type without fighting your keyboard A compose field where predictive text / T9 work without the character-doubling you get typing straight into a terminal — with a navigable input history, auto-grow, and an undo for accidental big pastes. ⚡ One-tap answers
A row of editable quick-reply chips ( 🔎 Find anything Search the scrollback with match-count and next/prev. |
🖥️ One app for every box Discovers your other webmux instances over Tailscale and shows them as live machine cards (CPU/GPU/RAM/disk + a CPU sparkline; tap for top processes, temperature, uptime). The session switcher lists every machine's sessions, grouped by box. 🚀 Run it everywhere at once Push a command to your whole fleet and see each machine's output. Update every box to the latest with one tap and a live progress window. 🔔 It pings you Opt-in push notifications when a session that was busy goes quiet — your agent finished and is waiting. Tap to jump straight in. 🪟 Always at your desk too New sessions also open a real terminal window on the PC, so when you sit back down it's right where the phone left it. |
curl -fsSL https://raw.githubusercontent.com/samoylenkodmitry/webmux/main/install.sh | bashInstalls a background service on 127.0.0.1:8083 (systemd on Linux, launchd on macOS) and can configure your private Tailscale share for you. Then open the printed https://…ts.net URL on your phone and Add to Home Screen.
Requires Node ≥ 18, npm, tmux, and a C toolchain for the native PTY module. Linux & macOS (Windows via WSL). To update later — or update your whole fleet — just hit ⬆ Update in the menu.
Important
webmux has no authentication — anyone who can reach the port gets a shell as you. That's intentional and safe only because it binds to 127.0.0.1 and you expose it through your private Tailscale tailnet (which authenticates devices). Never bind it to 0.0.0.0, the public internet, or a tailscale funnel. Treat the URL like SSH access to your machine.
Your phones can host terminals, not just view them. Install the WebMux Host app (sideload the APK), tap Start, and the phone runs tmux + webmux + current Claude Code inside a glibc Debian (via proot) and shows up in every other webmux's picker like a PC — open its sessions, steer Claude running on the phone, from your laptop. No Termux, survives reboots; it just needs the Tailscale app. arm64 only. Details in android/.
Configuration, the HTTP/WebSocket API, how the fleet update and activity alerts work, and other internals live in docs/TECHNICAL.md.
Built with xterm.js; the backend bridges a WebSocket to tmux attach over a real PTY.
MIT




