Dazzle

the question everybody asks first

Claude Code in tmux,
across more than
one machine.


How is this different from ssh and tmux?

It is the first thing anybody says, and the honest answer is that ssh and tmux work. People do exactly this today: mosh into the box from a phone, attach to the session, read the pane. One of them put it well on Hacker News: "I login on phone to ssh (mosh) with Termius and connect to the tmux session running claude. I use this approach when watching TV with the family and laptop is not appreciated on the sofa."

What that does not do is tell you which pane to look at. With one session it is not a problem. With eight it is the only problem, and the rest of this page is about that.

Nothing attaches to your tmux.

Dazzle runs exactly two tmux commands: capture-pane -p -e to read a pane with its colour codes intact, and send-keys to type into it. It never attaches a client.

That is not a detail. A tmux client that attaches imposes its own size, so a phone joining a session resizes the real window on the desk: split panes jump, the layout redraws, and whoever is sitting in front of the machine watches their terminal reflow. Because nothing attaches, a session with somebody at the desktop and somebody on the phone never fight over pane geometry, and nothing is installed inside the pane for this to work.

One feed, and it holds still.

The feed sorts by tier, then session name, then pane id. Four tiers: needs you, working, quiet, stale. Recency is not consulted at all.

That is a correction, not a preference. The first version sorted by status and then by last-changed, and last-changed is a hash of the pane’s visible text. A Claude statusline ticks every second, so all eight live panes reported a change zero to one minutes old and a key carrying almost no information decided the whole order: the list reshuffled under a thumb on every five-second poll. Now a card moves only when its tier changes, so the list you scanned a minute ago is the list you are looking at.

A push on the edge into waiting.

One notification, fired on the transition into waiting for input, and never a reminder while it waits. The badge is the exact number of sessions currently sitting on a question.

A watcher on the machine does the looking, on its own loop, independent of whether anybody has the app open. That is what makes it arrive with the app closed, and it is the part an ssh client cannot have: something has to be watching the pane when you are not.

More than one machine, without wrapping ssh around tmux.

The obvious way to add a second box is to prefix every tmux call with ssh. It would work for an afternoon and be quietly wrong, because tmux is only half of what a pane is. The session transcript is read off the disk of the box that owns the pane. A screenshot has to be written into that box’s home directory, because the agent reads it back by path. The working directory only exists over there. The account a pane is signed into comes from ps over there.

So instead a full Dazzle runs on every box, and the one your phone points at merges the rest in. Every per-pane feature runs on the machine that owns the files, and the feed you read is all of them at once.

A send is confirmed, not assumed.

Typing into a pane from a phone can silently fail: the keystroke is delivered, the newline is swallowed, and the instruction sits in the composer unsent while you walk away believing you answered it. So a send is read back off the pane afterwards. If your own text is still sitting there, the newline is sent again, and if it still did not land the request fails and tells you, rather than returning a cheerful 200 for a message that was never delivered.

What else does this, and what Dazzle is.

Fairly: Anthropic ships this. Claude Code has a Remote Control feature, free on every plan, that continues a local session from the phone app with push notifications for permission prompts, and an Agent View that puts the sessions needing you at the top of one screen. If you run your agents on one machine, that is very likely the right answer and it costs nothing.

Dazzle is a personal tool, built for one desk, and the part it is built around is the part above: more than one machine merged into one feed, an order that does not move, and a send that is checked. It is not distributed and it is not for sale. There is nothing to download.

What it looks like on a phone →