What a multiplexer does for agents

A coding agent is a long-running terminal program. Without a multiplexer it belongs to whatever terminal window or SSH connection started it, and dies when that goes away. tmux and Herdr both run sessions on the computer independently of any client: you detach, close the laptop, connect from a phone an hour later, and the agent is still there, mid-task. That part is table stakes for both.

tmux

tmux has been around since 2007 and is installed, or one package away, on every Unix machine you'll ever touch. Sessions contain windows, windows contain panes. Everything is driven by a prefix key (Ctrl+B by default) plus a letter, and it's endlessly scriptable.

What it doesn't know is what's running inside a pane. To tmux, Claude Code waiting for your approval and Claude Code compiling for ten minutes look the same. Any "agent needs you" notification has to come from the agent's own hooks, and any "which of my six agents is stuck" answer means looking at each window.

Herdr

Herdr uses the same shape, workspaces holding tabs holding panes, with the same prefix-key habits (Ctrl+B by default, prefix+c for a new tab, prefix+q to detach). The difference is that it looks inside panes. For a list of agents that includes Claude Code, Codex, Copilot CLI, Cursor, OpenCode, Gemini CLI and a dozen more, Herdr detects the agent process and reads the live bottom of its screen against a set of rules, and reports one of idle, working, blocked or done. Agents with a Herdr integration report their own state instead. Workspaces roll that up, so the sidebar shows which project has something waiting.

That status is exposed everywhere: in the TUI sidebar, through a CLI (herdr agent prompt, herdr agent attach, waits like --until blocked), a socket API with events, and plugins that run a command when a pane's agent status changes. Phone apps like Moshi and Melta build their notifications and pane lists on exactly that.

Herdr is younger and only runs on Linux and macOS as a server (Windows support is in beta). Blocked detection is deliberately conservative: per its docs, an unfamiliar prompt can show as idle until Herdr learns the screen shape, and Codex can sit at unknown after a reply because its idle screen looks like its working screen. It ships rule updates to fix these without a restart.

Side by side

tmuxHerdr
Keeps agents alive when you disconnectYesYes
Knows what's an agentNoYes, for about two dozen agents
Agent status (working, blocked, done)NoYes, per pane, rolled up per workspace
"Which agent needs me?"Look at each windowSidebar, CLI, socket events
Send a prompt from a scriptsend-keys, blindagent prompt, with waits for the result
Phone notificationsVia the agent's own hooksPlugin on status change; used by Melta and Moshi
AvailabilityEverywhere, including containersLinux, macOS; Windows beta
Maturity18 yearsNew, moving fast
Remote attach over SSHssh, then tmux attachSame, or herdr --remote host with local keybindings

Which one

Stay with tmux if you already have years of muscle memory, work on many machines and containers where installing something new is friction, or run one agent at a time and don't need to be told when it's waiting. Nothing about agents requires Herdr.

Try Herdr if you run two or more agents at once, want a notification when one is blocked instead of checking, or want a phone app that shows agents as a list instead of a shrunken desktop. The prefix key and the detach-and-reattach model are the same, so the switching cost is small and reversible. Install with curl -fsSL https://herdr.dev/install.sh | sh or brew install herdr; our Herdr cheat sheet has the keys and commands.

You can also run both: tmux on servers you don't control, Herdr on the machine where your agents live.

Sources