Skip to content

v0.12.1scan 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.

2-minute quickstart
  • no SSH keys on your phone
  • end-to-end encrypted
  • works on cellular
mbp — mtmux
npm i -g mtmux
+ mtmux@0.12.1
mtmux
Scan to open your terminal
or go to app.mtmux.com
and enter 492 716 384
Waiting for a device…

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
new to tmux? start here →

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

mbp — mtmux

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.

iphone — work:1
⏺ Update(src/auth/middleware.ts)
+ 24 - 11 · 14 files changed
⏺ Bash(pnpm test)
27 passed, 0 failed
Apply patch to migrations/0042.sql?
❯ 1. Yes
2. No, tell Claude what to do differently
to be clear

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 six 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.

open source

MIT licensed. Run all of it yourself.

The CLI, the browser client, the relay and the pairing broker are one public repo under one MIT licence. There is a hosted broker because it is convenient, not because anything depends on it.

The CLI is already self-hosted

It runs on your machine, talks to your tmux, and holds its own token. Nothing is uploaded and no account is created. For one machine this is the whole answer.

npm i -g mtmux

Contacting no broker is the default

mtmux start serves your LAN and loopback and dials nothing. Reaching the internet is the thing you opt into, with --hosted, and not the thing that happens to you for typing the shortest command. Put your own reverse proxy in front of the single port and you are reachable from anywhere without us.

mtmux start

Or run the pairing broker too

The broker is in the same repo and is blind by construction — it never sees the secret half of a code, and it moves ciphertext it cannot open. Point the CLI at yours with mtmux config set api.

docker compose up

your own broker, in four lines
git clone https://github.com/mtmux/mtmux.git
cd mtmux
cp .env.example .env
docker compose up
api broker on :24400 · web client on :24100

It comes up working with DATABASE_URL unset: no accounts, no billing, no secrets to manage, anonymous pairing on. Accounts are optional forever, and that is the default rather than a degraded mode.

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

Unlimited sessions and panesTunnel included, 5 GB/monthUnmetered on your own network
POPULAR

Pro

$10/mo

Unlimited servers & devices

200 GB/month relayedName your machines$100/year billed annually

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.

Leave the desk. Keep the session.

One command, one scan. No account, no config file, and nothing to open on your router.

Read the docs