Your tmux,
in your pocket.
One command turns the tmux server you already run into a browser session you can open anywhere. Real panes. Real prefix key. Truecolor. And a push notification the second your agent finishes — or quietly gets stuck.
Three lines, then close the laptop.
The daemon lives next to your tmux server. Nothing is copied, nothing is synced — your browser is just another client attaching to the same session.
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 sticky modifier row puts ⌃b, esc, tab, alt and the arrows one thumb away — remappable to your own leader.
Reflow mode stacks a 3-pane layout vertically on a phone and restores it when you reattach on desktop.
24-bit color, powerline glyphs, box drawing and inline images render exactly as they do in your terminal emulator.
Pinch to zoom out of 10k lines of history, then / to search it. Copy-mode selections land in your device clipboard.
Frames are buffered and replayed on reconnect, so a dead spot in the subway costs you scroll position, not output.
Diff-based cell updates over a single WebSocket — typically 20–40 ms of added latency on the same continent.
Know the moment it stalls.
Long agent runs have two failure modes: finishing while you're away, and silently waiting for a keypress. mtmux reads the pane, not just the exit code — so you hear about both.
mtmux ships a preset for Claude Code: it recognises the idle prompt, tool-approval questions and permission dialogs, and includes the last diff summary in the push body.
Patch-approval prompts arrive as a high-priority push with y / n actions, so you can unblock a run from the lock screen without opening the session.
Anything that writes to a pane can be watched: aider, gemini-cli, make, terraform, a 40-minute test suite, a stuck rsync.
Your code never leaves the machine it's on.
The relay forwards sealed frames it cannot read. Keys are generated on your box and on each device, and pairing is a one-time exchange you can revoke in a keystroke.
Read the threat model →Free for one machine. Forever.
Pay when you have more boxes than hands.
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.
No. The client is a PWA — open the URL, add to home screen if you want the native push prompt and fullscreen keyboard handling. iOS Safari, Chrome, Firefox and Edge are supported.
Three signals, combined: pattern matches on the last screen (approval prompts, y/n questions), the process tree state, and an output-silence timer you set per agent. Presets ship for Claude Code, Codex, Gemini CLI and aider.
Yes — that's what the modifier row is for. Esc, ⌃, alt, tab and arrows are always reachable, chords like ⌃b % are two taps, and you can bind your own macro strip for the commands you repeat.
It can't be. Session keys are established between daemon and device; the relay only forwards sealed frames. If you'd rather not trust it at all, run your own with one flag or use LAN mode.
tmux is first-class today. Zellij support is in beta behind --mux zellij, and any bare pty can be served with mtmux run -- $SHELL.