herd your agents.
a terminal-native agent multiplexer. workspaces, tiled panes, automatic agent detection, and a socket API. all inside your existing terminal. no electron, no web dashboard, no gui window.
a shared control surface for you and your agents.
curl -fsSL https://herdr.dev/install.sh | sh
supervise, triage, act
orchestrate, spawn, wait
the sidebar is split into two layers. scan the workspace list for the most urgent signal, then drill into the agents causing it.
each workspace shows one aggregate dot — the most urgent state across all its agents. yellow means something is working. you scan the full list in a glance.
the bottom section shows which specific agents are running in the selected workspace, with their individual state. pi is working, droid is idle.
one binary, no dependencies. run herdr in your terminal. onboarding takes 10 seconds.
press n to create a workspace. it opens as a terminal context, labels itself from git repo or folder name.
start your agents in panes like you normally would. herdr detects them automatically — no hooks, no config.
herdr detects agents by reading foreground process and terminal output patterns. zero config required.
| agent | idle / done | working | blocked |
|---|---|---|---|
| pi | ✓ | ✓ | partial |
| claude code | ✓ | ✓ | ✓ |
| codex | ✓ | ✓ | ✓ |
| droid | ✓ | ✓ | ✓ |
| amp | ✓ | ✓ | partial |
| opencode | ✓ | ✓ | ✓ |
| gemini cli | detected, not fully tested | ||
| cursor agent | detected, not fully tested | ||
| cline | detected, not fully tested | ||
agents can use herdr too
herdr exposes a local unix socket that agents can talk to directly. create workspaces, split panes, spawn agents, read output, wait for state changes.
the same surface is available as CLI commands (herdr workspace, herdr pane, herdr wait) and as a reusable agent skill.
# create a workspace herdr workspace create --root ~/project # split a pane and run a command herdr pane split --workspace 1 herdr pane send --pane 1-2 --text "npm test" # wait for an agent to finish herdr wait --pane 1-1 --state idle # read pane output herdr pane read --pane 1-2 --lines 50