herdr – The Runtime Your Coding Agents Live On
🐑 herdr – The Runtime Your Coding Agents Live On
If you run more than one AI coding agent at a time — multiple Claude Code sessions side by side, or Claude Code in one project and Codex in another, maybe a third one grinding through a refactor — you quickly run into a boring but real problem: where do all these terminals live, and which one is actually waiting for me?
I used to solve this with screen (see my earlier post) or tmux. That works, but a multiplexer doesn't know what an agent is. It can't tell you that the pane in the corner has been blocked on a yes/no question for the last twenty minutes.
That's the gap herdr fills.
- Project: github.com/herdrdev/herdr
- Docs: herdr.dev/docs
🚀 What is herdr?
herdr is a terminal multiplexer written in Rust, designed around coding agents instead of generic shells. It runs a background server that owns your terminals; the client you look at is just a view on top of it.
The headline features:
- Detach without stopping work — close the client or lose your SSH connection, and your agents keep running in the background server. Reattach later with
herdr. - Agent status at a glance — every pane is marked working, blocked, done or idle. When an agent stops and needs an answer, the sidebar tells you so. No more hunting for the stuck one.
- Several machines, one window — local work and saved SSH machines live together, with one combined agent list and independent reconnects.
- Agent-native — agents can drive herdr through its CLI and socket API: spawn panes, prompt each other, and wait until another agent is genuinely blocked.
- Runs what you already run — Claude Code, Codex, Cursor, OpenCode, and the rest. herdr doesn't wrap or replace them; it just owns their terminals.
- Keyboard and mouse, both first-class — tmux-style prefix keys and click, drag, split, right-click menus.
- One Rust binary, no Electron — runs inside whatever terminal you already use.
🛠️ Installation
Linux / macOS:
curl -fsSL https://herdr.dev/install.sh | sh
Or via a package manager:
brew install herdr
# or
mise use -g herdr
Windows (PowerShell):
powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"
Prebuilt binaries are on the releases page.
▶️ Getting started
Start it from any project directory:
herdr
herdr launches (or attaches to) your default background session and opens a workspace — a project-level container for tabs, panes and agents. Give each project its own workspace so the agent list in the sidebar stays readable.
Then just start an agent in a pane:
claude
Or codex, opencode, or any other supported agent. herdr detects it automatically and starts tracking its state.
⌨️ Keyboard basics
If you know tmux you'll feel at home. The prefix is ctrl+b:
| Action | Key |
|---|---|
| Split right | prefix + v |
| Split down | prefix + - |
| New tab | prefix + c |
| Next / previous tab | prefix + n / prefix + p |
| Workspace navigation | prefix + w |
| New workspace | prefix + shift+n |
| Copy mode | prefix + [ |
| Show all bindings | prefix + ? |
| Detach | prefix + q |
The keyboard is optional though: everything can also be done with the mouse. Drag borders to resize, right-click for split/tab menus, drag-select to copy.
🔌 Detach, reconnect, restart
The workflow I care about most:
- SSH into the box, run
herdr, start a couple of agents. - Close the laptop. Agents keep working in the background server.
- Come back, run
herdragain — same layout, same panes, and the sidebar shows which agents finished and which are blocked waiting for me.
After a server or machine reboot herdr restores the saved layout and can resume supported agent sessions (the original processes themselves don't survive a reboot, of course). Details in the session state docs.
🧠 Why I like it
- It replaces a
screen/tmuxhabit with something that understands what I'm actually running. - The blocked indicator alone is worth it when you juggle three agents.
- It's a single binary, so it's trivial to put on every machine.
- Plugins and a socket API mean it can grow into an orchestration layer if you want it to — but you don't have to.
If you're running multiple coding agents and still alt-tabbing between terminal windows to find the one that's asking a question, give herdr a try.