v0.6.3scan a code, you're in
Your tmux sessions in any browser, even the one in your pocket.
The same tmux server your laptop attaches to, open in a browser tab on your phone.
- no SSH keys on your phone
- end-to-end encrypted
- works on cellular
exactly what mtmux prints when you run it — the code above is real, its pairing digits expired long ago
mtmux is a command-line tool that serves the tmux sessions already running on your machine to any web browser. Install it with npm i -g mtmux, run mtmux, and scan the QR code it prints: your phone attaches to the same tmux server over an end-to-end encrypted tunnel. No port forwarding, no VPN and no SSH key on the phone.
attaches to what you already run
- tmux
- neovim
- claude code
- codex cli
- gemini cli
- aider
- lazygit
- htop
- k9s
see it work
One command, then close the laptop.
mtmux runs next to your tmux server. Nothing is copied and nothing is synced — your browser is just another client attaching to the same session. Here is the whole thing, start to finish.
A replay of a terminal running mtmux beside a phone browser. The terminal installs mtmux, runs it, and prints a pairing code; the phone enters the code, attaches to the session, and swipes between three tmux windows.
Now showing: Run it
fidelity
Real tmux. Not a screenshot of one.
Every keystroke goes to the same pty your laptop talks to. Your config, your plugins, your keybinds — untouched.
A prefix key you can actually press
A sticky modifier row puts ⌃b, esc, tab, alt and the arrows one thumb away, so a chord is two taps instead of a contortion.
Panes that fit the screen you have
Reflow stacks a three-pane layout vertically on a phone and leaves the tmux window your desktop is attached to alone.
Truecolor and the glyphs you use
24-bit colour, powerline separators, box drawing and Nerd Font icons render the way they do in your terminal emulator.
Scrollback with real search
Scroll back through a pane's history and search it, and copy-mode selections land in your device clipboard.
Survives the tunnel
The client reconnects on its own, so a dead spot in the subway costs you a moment rather than the session.
A file browser when you need one
Read a diff or a log without leaving the tab. Paths are allow-listed, so a paired browser only reaches what you let it.
coding agents
Check on the run without going back.
Long agent runs are why most people want this. Claude Code, Codex or aider is thirty minutes into a refactor and you are not at the desk — so open the session on your phone and look at it.
mtmux does not send notifications. There is no push, no Slack routing and no agent detection. It is pull, not push — you open the session and look.
The same pane, not a summary
You see exactly what the agent printed, because you are attached to the same pty. Nothing is parsed, sampled or reworded on the way to you.
Answer the prompt yourself
Agents stop on approval dialogs and y/n questions. From a phone that is one tap on the modifier row, and the keystroke goes straight to the pane.
Start the next one from the platform
Scrollback, search and a real prefix key mean you can read the diff, kick off the next task and get off the train.
Nothing to configure
mtmux does not watch your panes, match on output or try to guess what an agent is doing. It attaches to tmux, and that is the whole feature.
security
The relay cannot read your session.
Pairing is a PAKE, so the four secret digits never reach our broker — not even as a hash. Everything after that is sealed under keys nobody on the path can derive.
End-to-end encrypted
CPace over ristretto255 to pair, HKDF-SHA256 to derive keys, AES-256-GCM per frame. The broker moves ciphertext.
Nothing to port-forward
The CLI dials out. No firewall hole, no VPN, no dynamic DNS, no sshd facing the internet.
Per-device revocation
mtmux devices revoke forgets a browser's key by id, so it cannot reconnect.
Or skip us entirely
mtmux start --local contacts no broker at all, and MTMUX_API_URL points at your own.
pricing
Free for one machine. Forever.
Local and LAN traffic never touches our infrastructure, so it is never metered. Relayed bytes are the only thing that costs us anything, so they are the only thing we count.
Free
$0
1 server · 3 devices
Pro
$10/mo
Unlimited servers & devices
faq
Questions people actually ask.
No. It attaches to the tmux server you already run, the same way tmux attach does. Uninstall mtmux and every session keeps running.
Neither. The client is a web app — open the URL the QR points at, or add it to your home screen for fullscreen keyboard handling. An account is optional and only buys you more than one registered server.
No, and we would rather say so than imply otherwise. mtmux has no notifications, no agent detection and no push. What it gives you is a session you can open from a phone in a couple of seconds and read.
For edits, yes — that is what the modifier row is for. Esc, ctrl, alt, tab and the arrows are always reachable and modifiers latch, so a chord is two taps. Writing a new module on a phone is still a bad idea.
It cannot be. The code splits into a routing half the broker sees and a secret half it never receives, and the session keys come out of a PAKE run between your machine and your browser. The broker forwards sealed frames and holds no key.
No. mtmux start --local serves your LAN and loopback and contacts no broker whatsoever. If you want the tunnel but not our broker, MTMUX_API_URL points the CLI at your own.
tmate spins up a new session on its own relay so a guest can join you. mtmux attaches you to the tmux server you already run, from your own browser, and the secret half of the pairing code never reaches our broker. The full comparison covers where each one fits.
Leave the desk. Keep the session.
One command, one scan. No account, no config file, and nothing to open on your router.