Herdr
TL;DR
Herdr is an Apache-2.0 terminal workspace manager written in Rust, developed in the herdrdev organization. It keeps agent terminals running in a background server, shows each pane as working, blocked or idle, and exposes a CLI and socket API so scripts or agents can start other agents. It suits tmux-style users running several coding agents, locally or over SSH.
Key facts
| Type | Orchestrator |
|---|---|
| Languages / SDKs | Rust |
| License | Apache-2.0 |
| Pricing model | Open source, free |
| Orchestration pattern | Other |
| GitHub stars | 41,580 (as of 2026-09-30) |
| GitHub forks | 3,205 |
| Last push | 2026-09-30 |
| Latest release | v0.9.3 |
| Repository | herdrdev/herdr |
| Website | herdr.dev |
| Documentation | herdr.dev |
| Last verified | 2026-09-30 |
Key features
- A background server keeps panes and agents running after the client detaches or an SSH connection drops;
herdrreattaches to the same session. (source) - Each pane is tracked as working, blocked, done, idle or unknown for recognized agents, with notifications when an agent finishes or needs input. (source)
- Recognizes Claude Code, Codex, OpenCode, Hermes Agent and many others; other programs run as plain terminals. (source)
- Agent automation commands (
agent start,agent prompt,agent wait) let a script or another agent launch agents, send prompts and wait for their state. (source) herdr worktree create/open/removemanages git worktrees as workspaces grouped under the parent repository workspace. (source)- Local and saved SSH machines can be used from one window, with a combined agent list and independent reconnects. (source)
- Integrations installed with
herdr integration install <name>report agent state and let supported agents resume their session after a server restart. (source) - Local plugins add actions, event hooks and panes; a marketplace lists community plugins. (source)
Architecture and orchestration pattern
Pattern: Other
Herdr is one Rust binary that acts as a session server plus terminal clients. The server owns the terminals (panes), grouped into tabs and workspaces, and keeps them alive when clients detach. It does not wrap or replace the coding agents: the agent runs as an ordinary process in a pane, and Herdr recognizes it from the foreground process, screen-detection manifests, or an installed integration that reports state.
Coordination is done by whoever drives the CLI or socket API. The docs describe three primitives: layout (workspaces, tabs, pane splits), pane (raw terminal control) and agent (a recognized coding agent addressed by name). An agent with the skill file installed can create panes, start other agents, prompt them and wait until they are idle or blocked. Herdr itself does not assign tasks or merge results.
State is the server's live process tree plus a saved layout. After a server or machine restart the layout returns but the original processes do not; agents whose integration reports a resume command can pick up the same session. Herdr does not call any model, so it does not proxy model traffic.
Human in the loop
Agents run in real terminals, so a person can attach, read and type at any time. Herdr marks a pane blocked when the visible screen shows an approval, question or permission prompt, and notifies the user. Scripts can send text or keys to an agent. The docs say a wrong status guess only affects the displayed status and waits, and should not make Herdr send input or take destructive action. There is no built-in diff review or approval step; that stays in the agent and in the user's own git tooling.
Harnesses it can drive
- Claude Code (evidence)
- Codex (evidence)
- OpenCode (evidence)
- Hermes (evidence)
Protocols
| Protocol | Support | Note |
|---|---|---|
| MCP | Unknown | Searched the README, all docs pages listed in llms.txt and GitHub code search for 'mcp'. The only hit is a changelog note that Claude Code MCP question prompts show as blocked; that is prompt detection, not MCP support. |
| A2A | Unknown | Searched the README, docs pages and GitHub code search for 'a2a'; nothing about the Agent2Agent protocol found. Agent-to-agent control goes through Herdr's own CLI and socket API. |
| AG-UI | Unknown | Searched the README, docs pages and code search for 'ag-ui'; nothing found. |
Best for
- tmux-style users running several Claude Code, Codex or OpenCode sessions in one persistent, mouse-friendly terminal workspace. (shortlist)
- Letting one agent start and prompt other agents through the CLI and socket API, for example a reviewer agent in a second pane. (shortlist)
- Keeping long agent runs alive on a remote server and reattaching over SSH.
- Scripting agent panes and git worktrees from shell scripts or plugins. (shortlist)
Not for
- Users who want a built-in diff viewer, PR flow or merge tool; the docs describe none.
- Anyone who needs agent processes to survive a server or machine restart: the layout returns, the processes do not.
- Users who want a GUI desktop app rather than a terminal program.
Quickstart
curl -fsSL https://herdr.dev/install.sh | sh curl -fsSL https://herdr.dev/install.sh | sh # or: brew install herdr
herdr # start or attach to the background session
# Scripting: create a workspace, split a pane, start Codex in it, prompt it
created=$(herdr workspace create --cwd ~/project --label api --no-focus)
pane_id=$(printf '%s\n' "$created" | jq -r '.result.root_pane.pane_id')
split=$(herdr pane split "$pane_id" --direction right --no-focus)
review_pane=$(printf '%s\n' "$split" | jq -r '.result.pane.pane_id')
herdr agent start reviewer --kind codex --pane "$review_pane"
herdr agent prompt reviewer "Review the current diff" --wait --timeout 120000
herdr worktree create --cwd ~/project --branch review # git worktree as a workspace
# detach with ctrl+b q; run `herdr` again to reattach; `herdr server stop` ends the session
Common pitfalls
- Detaching keeps agents running;
herdr server stopends the session and its panes. - After a server or machine restart the layout is restored but the original processes are not; agent session resume needs the agent's integration (
herdr integration install <name>). agent startneeds an existing pane sitting at a shell prompt.- Blocked detection is strict: unusual new prompts may show as idle, and Codex can stay
unknown, so waits for idle may time out (see the Agents page). - Native Windows is supported but some capabilities differ or are unsupported (for example
herdr terminal attach); the installer is a PowerShell command.
Pros
- Agents keep running when the client detaches or the SSH link drops. (source)
- Does not wrap the agents: they run as normal processes in real terminals, so their own permission prompts and logs stay visible. (source)
- Scriptable: the CLI and socket API expose layout, pane, agent and worktree operations, and the docs include a skill file so an agent can drive Herdr. (source)
- Single Rust binary with Apache-2.0 licensing; supports macOS, Linux and native Windows. (source)
- Active releases: v0.9.3 was published on 2026-09-29. (source)
Cons
- A server or machine restart ends the original processes; only the layout (and, with integrations, agent sessions) come back. (source)
- State detection is screen-based for many agents; unusual prompts can show as idle and Codex can stay unknown, so scripted waits can time out. (source)
- Native Windows support has documented gaps, and open issues report problems such as the working directory not being preserved. (source)
- No built-in review or merge flow is described in the docs; worktree creation is provided, but reviewing diffs and merging is left to the agent and your git tools. (source)
Alternatives
FAQ
Does Herdr support MCP?
Nothing in the README or docs describes MCP support, so the record marks it unknown. Herdr's own control surface is a CLI and a socket API.
Which coding agents does it work with?
The Agents page lists Claude Code, Codex, OpenCode, Hermes Agent and many more as supported, and any other program runs as a plain terminal. OpenClaw is not on that list.
Is Herdr free?
Yes. It is Apache-2.0 licensed. The README lists an enterprise and partnership contact address but no paid plan.
Does it isolate agents with git worktrees?
It can create and open worktrees as workspaces with herdr worktree create, but using them is up to you or your scripts; there is no automatic one-worktree-per-agent rule in the docs.
How is it different from Claude Squad?
Herdr is a persistent terminal multiplexer with agent state tracking and a scripting API, and it runs any program. Claude Squad is a TUI that starts each agent session in its own tmux session and worktree and adds diff and commit shortcuts.