░██ ░██ ░██
░██ ░██
░████████ ░█████████████ ░██ ░██ ░██ ░██ ░██ ░████████ ░███████
░██ ░██ ░██ ░██ ░██ ░██ ░██ ░██ ░██░██ ░██ ░██ ░██
░██ ░██ ░██ ░██ ░██ ░██ ░█████ ░██░██ ░██ ░█████████
░██ ░██ ░██ ░██ ░██ ░███ ░██ ░██ ░██░██ ░███ ░██
░████ ░██ ░██ ░██ ░█████░██ ░██ ░██ ░██ ░█████░██ ░███████The terminal that understands your agents.
2.7Other tools rebuild the terminal to understand agents. tmux-ide teaches the terminal you already use to understand them. One command adds a native chrome to any tmux session — ground-truth agent status, notifications, and crash-proof restore. Zero lock-in.
One command on the tmux you already run
tmux-ide adopt <session> drops a native chrome row onto any existing session — fleet tabs, live agent glyphs, home / switch / keys triggers. It's just tmux options: unadopt reverts it, and if tmux-ide ever dies your sessions are untouched plain tmux. No new terminal to learn, no lock-in.
Ground-truth agent status, at a glance
Install the Claude Code integration and working / blocked / done come straight from the agent's own lifecycle — not a guess. Border chips show claude · working per pane; a toast fires on every attached client the moment an agent goes blocked or done. One glance tells you who needs you.
Rebuild the whole fleet after a crash
Continuous snapshots mean a tmux server death isn't a lost afternoon. tmux-ide restore rebuilds every session, window, layout, cwd, and title — and --resume-agents revives your Claude conversations from their recorded session ids. Nothing was lost.
Teams of any agents
Run a heterogeneous fleet — Claude Code, codex, cursor-agent, aider, anything — in one set of sessions, and let them coordinate. Every agent's status is on a shared bus every other agent can read; one agent can task another by typing into its prompt; and any agent can block until a teammate finishes. It's agent-agnostic by design: Claude Code reports automatically, everyone else self-reports with a one-line pane option.
One app, a keystroke away
Once a session is adopted, the whole UI is a prefix twin away — reliable under every keyboard protocol, with an ⌥ fast-path on top. One grammar, one theme.
prefix h · ⌥hHome cockpit
Bare tmux-ide is the home screen — a fleet tree, detail pane, live preview, and rollup header. prefix h opens it as a popup over any session.
prefix b · ⌥bSidebar
A nav column you toggle in any session. The fleet, a keystroke away, without leaving your work.
prefix e g vFloating panels
File explorer, git changes, and the config editor as popups over whatever you're doing. esc to close.
prefix u · right-clickActions menu
Right-click any pane or the status bar for a native tmux menu at the pointer — the same actions, wherever you are.
prefix k · ⌥kCheat sheet
Every key on one iPadOS-style sheet. One interaction grammar everywhere: j/k move, enter opens, / filters, esc backs out, ? asks.
prefix + letter, alwaysReliable keys
Prefix twins work under every keyboard protocol; the ⌥ fast-path is a one-key shortcut when your terminal allows it. One theme file colors chrome AND widgets.
Features
The dock
A native tmux chrome row on any session: clickable fleet tabs with blocked / working / done / idle glyphs, plus home, switch, and keys triggers.
Two-layer detection
Authoritative status from Claude Code hooks; process-tree + evidence-tuned screen manifests as the fallback. User-overridable, debuggable with agent explain.
Self-report contract
Any agent can join the authority layer by writing one pane option: tmux set-option -p @agent_state working:$(date +%s). No integration required.
The who-needs-me loop
Toasts on any client when an agent goes blocked or done anywhere, optional macOS notifications, and per-pane border chips.
Event stream
tmux-ide events --follow is a JSONL stream of every agent-status transition — pipe it anywhere.
Coordination primitives
wait agent-status and wait output --match block until a session hits a status or a pane matches a regex. Scriptable synchronization.
Crash-proof restore
Continuous snapshots; tmux-ide restore rebuilds sessions, windows, layouts, cwds, and titles after a tmux server death.
Conversation revival
restore --resume-agents brings Claude conversations back via their recorded session ids (claude --resume).
Worktree flow
tmux-ide worktree create <branch> = a git worktree plus an adopted session inside it. Parallel agents on parallel branches.
Works over SSH
The chrome lives server-side, so it renders from any client — including SSH from a laptop or a phone.
ide.yml layouts
Optional: describe rows, panes, commands, and a sidebar in one file. tmux-ide init scaffolds it from your detected stack.
Programmatic CLI
--json on every command. status, inspect, events, and agent explain all speak structured output for scripting.
From zero to fleet in three commands
Adopt
$ tmux-ide adopt workAdd the chrome to a session you already have. Fleet tabs, agent glyphs, and triggers appear. Nothing else changes.
Integrate
$ tmux-ide integration install claudeHook Claude Code's lifecycle so working / blocked / done are ground truth. Any agent can self-report the same way.
Work
$ tmux-ide events --followGlance at the dock, get toasts when an agent needs you, and restore the whole fleet if the server ever dies.
Trust
- ◇ Adopt is just tmux options — reversible
- ◇ If tmux-ide dies, plain tmux remains
- ◇ Ground-truth status from agent hooks
- ◇ agent explain shows exactly why
- ◇ User-overridable detection
Resilience
- ◇ Continuous fleet snapshots
- ◇ Restore sessions, windows, layouts
- ◇ Cwds and titles come back too
- ◇ Revive Claude conversations on resume
- ◇ Worktree-per-branch isolation
Developer experience
- ◇ One command to adopt
- ◇ One grammar: j/k · enter · / · esc · ?
- ◇ One theme file for everything
- ◇ Renders over SSH, any client
- ◇ --json everywhere, open source
Get started
Keep your terminal. Add the chrome. Adopt a session in seconds.