Skip to content

features

What tmuxnet does.

One list of every tmux session on every machine, a real terminal to type in, and a composer for longer prompts, files and screenshots.

capabilities

4 rows

The session list is the app.

Every machine, one list
One session list across every machine you add, grouped per host with live previews. Attach, switch, and kill without caring which machine owns what.
Every network, same list
A tailnet, a second tailnet, a VPN tunnel, a box on plain SSH, all connected at once, each machine on its own route. Their sessions share one list. You never switch networks to look.
No VPN app, no profiles
The tunnels run in userspace inside tmuxnet. Sign in once and nothing appears in iOS Settings: no profile to toggle, and the phone’s one system VPN slot stays free.
Status read from the screen
Reads Claude Code and Codex screens as running, waiting, needs input, idle or error, so the list shows who needs you before you attach.

the composer

4 screens

Say more than a keystroke.

The key bar completes what the shell offers. The composer drafts the whole prompt, mentions files, and carries photos and clips, marked up on the phone, to whichever machine the pane is on.

typing

A zsh shell on mac-studio in ~/checkout: an ls listing of the project above the prompt, pnpm te typed at it, and the shell's grey autosuggestion completing the line to pnpm test --filter checkout --reporter verbose. In the key bar beside the shell chip, the teal offer chip quotes the same completion. One tap takes it.
autocomplete
The composer over Claude Code's web session with the mention panel open above the keyboard: the draft reads Explain what @ and the panel lists the pane's own project: src/, tests/, .gitignore, README.md, package.json, server.js, src/settings/, listed over SSH, a folder drilling in on tap.
@ mention a file

attachments

The composer over Claude Code's ui session: a marked screenshot of a storefront already a tile in the attachment strip, its uploaded path in the draft tinted as a file, followed by The cart sits on the logo on a phone. Keep the logo left and the cart right.
attach a screenshot
The clip markup workspace over a screen recording of a checkout page, reading Mark up, 0:02.2 of 0:06.0, moment 1: the clip paused just after a free shipping banner pushed Place order down, a numbered pin marking the button, the transport row with its frame counter, the filmstrip below with moment 1 pinned to its instant and its hold bar, the moment's thumbnail, and the same inks and tool bar as the photo workspace.
mark up a clip

classification

table A

Five states, read from the screen.

No plugins on the machine, no agent hooks. tmuxnet reads what the terminal shows, the same way you would.

  • ▶ running

    running: The agent is working. Nothing needed from you.

    tell: spinner frames advancing

  • ⧗ waiting

    waiting: Claude Code is idle, but a shell, monitor or agent it started is still running. It wakes by itself when that work reports back.

    tell: a task count under the prompt, like 1 shell

  • ● needs input

    needs input: Blocked on you: an approval prompt or a choice picker.

    tell: numbered options under a question

  • ‖ idle

    idle: Agent open and ready for a new prompt, nothing running.

    tell: fresh prompt after settled output

  • ! error

    error: A terminal API error: auth, usage or quota, not a retry.

    tell: error banner at the input line

table A: the five agent states, as the list badges them.