|
| 1 | +[Herdr](https://herdr.dev/) [@herdr] |
| 2 | +is a terminal multiplexer built for running several coding agents at once |
| 3 | +(measured 2026-09-09). |
| 4 | +It describes itself as "the runtime your coding agents live on": |
| 5 | +a background server owns the real terminal processes, |
| 6 | +clients attach to render them, |
| 7 | +and the server keeps every agent running when the client closes |
| 8 | +or an SSH connection drops. |
| 9 | +On top of that `tmux`-like core it detects which agent is running in each pane |
| 10 | +and reports whether that agent is working, blocked, done, or idle, |
| 11 | +so the operator looks only at the pane that needs attention. |
| 12 | + |
| 13 | +#### Maker and activity |
| 14 | + |
| 15 | +Herdr is developed by [`herdrdev`](https://github.com/herdrdev/herdr) [@herdr_github], |
| 16 | +a one-person company founded in 2026 by Can Celik in Ankara, Turkey, |
| 17 | +and part of the Y Combinator Fall 2026 batch [@herdr_yc]. |
| 18 | +The project is written in Rust and licensed under Apache 2.0. |
| 19 | +The GitHub repository was created on 2026-03-27 |
| 20 | +and had about 37,000 stars, 2,700 forks, and 326 open issues on 2026-09-09, |
| 21 | +with the most recent commit the day before; |
| 22 | +the latest stable release was v0.9.0 on 2026-09-07, |
| 23 | +following v0.8.2 (2026-08-19) and v0.8.0 (2026-08-03) [@herdr_github]. |
| 24 | +A Show HN thread drew 166 points and 110 comments [@herdr_hn], |
| 25 | +and a community-maintained list of plugins and integrations |
| 26 | +has grown around the tool [@awesome_herdr]. |
| 27 | +The software is pre-1.0 and changes quickly, |
| 28 | +so expect some of what follows to be out of date. |
| 29 | + |
| 30 | +#### What it does |
| 31 | + |
| 32 | +Herdr organizes terminals into a hierarchy of |
| 33 | +sessions, workspaces, tabs, and panes [@herdr_concepts]. |
| 34 | +A pane is a real terminal (a PTY) that the server owns; |
| 35 | +a workspace groups the tabs and panes for one repository, task, or investigation. |
| 36 | +The distinctive features, beyond ordinary multiplexing, are: |
| 37 | + |
| 38 | +- **Agent status detection**: |
| 39 | + Herdr recognizes 21 coding agents out of the box, |
| 40 | + including Claude Code, Codex, Cursor Agent CLI, OpenCode, GitHub Copilot CLI, |
| 41 | + Hermes Agent, Pi, Amp, Grok CLI, Antigravity CLI, and Kiro CLI, |
| 42 | + with Gemini CLI and Cline detected but less thoroughly tested [@herdr_agents]. |
| 43 | + Where an agent ships lifecycle hooks, the hook reports state authoritatively; |
| 44 | + otherwise Herdr matches the bottom of the live terminal buffer |
| 45 | + against a TOML detection manifest, |
| 46 | + and marks a pane `blocked` only when that snapshot matches |
| 47 | + a known approval, question, or permission prompt. |
| 48 | +- **Git worktree management**: |
| 49 | + the socket API exposes `worktree.list`, `worktree.create`, `worktree.open`, |
| 50 | + and `worktree.remove`, |
| 51 | + which "manage Git checkouts as Herdr workspaces" [@herdr_socket_api]. |
| 52 | + Creating a worktree checks out (or creates) a branch |
| 53 | + and opens the checkout as a new workspace grouped under the source workspace; |
| 54 | + the CLI form is `herdr worktree create --branch <name>` [@flaviocopes_herdr]. |
| 55 | +- **A CLI and socket API for agents to drive**: |
| 56 | + the two are "the same surface agents drive", |
| 57 | + speaking newline-delimited JSON over a Unix socket |
| 58 | + (a named pipe on Windows) at `~/.config/herdr/herdr.sock`. |
| 59 | + Methods include `pane.read` to read a pane's recent output, |
| 60 | + `agent.prompt` to send a prompt, |
| 61 | + and `agent.wait` to block until another agent reaches `done` or `blocked` |
| 62 | + rather than polling [@herdr_socket_api]. |
| 63 | +- **Persistence and resume**: |
| 64 | + detaching with `ctrl+b q` leaves every process running; |
| 65 | + a server restart stops processes but restores workspaces, tabs, panes, |
| 66 | + working directories, and layout from a `session.json` snapshot, |
| 67 | + and supported agents can resume their own conversation |
| 68 | + (for example `claude --resume <id>`) from a saved session reference [@herdr_session_state]. |
| 69 | +- **Remote machines**: |
| 70 | + `herdr machine add <ssh-host>` registers a machine reachable over ordinary SSH, |
| 71 | + installs or starts the Herdr server there, and folds its agents |
| 72 | + into one combined agent list; |
| 73 | + authentication stays with OpenSSH, |
| 74 | + and Herdr stores no keys or passwords [@herdr_machines]. |
| 75 | + Remote servers must run Linux or macOS; |
| 76 | + a native Windows server is not supported as an SSH target. |
| 77 | + |
| 78 | +#### Install and use |
| 79 | + |
| 80 | +Herdr ships stable binaries for Linux, macOS, and Windows x86_64 [@herdr_install]. |
| 81 | +The one-line installers are: |
| 82 | + |
| 83 | +```bash |
| 84 | +curl -fsSL https://herdr.dev/install.sh | sh |
| 85 | +``` |
| 86 | + |
| 87 | +```powershell |
| 88 | +powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex" |
| 89 | +``` |
| 90 | + |
| 91 | +Homebrew (`brew install herdr`), `mise`, and Nix are also supported. |
| 92 | +Run `herdr` to start the server and attach a client, |
| 93 | +`herdr agent list` to see detected agents and their states, |
| 94 | +`herdr status` to summarize the runtime, |
| 95 | +and `herdr update` to upgrade. |
| 96 | +The default prefix key is `ctrl+b`, as in `tmux`, |
| 97 | +and the configuration file lives at `~/.config/herdr/config.toml` |
| 98 | +(`%APPDATA%\herdr\config.toml` on Windows) [@herdr_agent_guide]. |
| 99 | +The maintainers publish an |
| 100 | +[agent guide](https://herdr.dev/agent-guide.md) [@herdr_agent_guide] |
| 101 | +meant to be handed to a coding agent so it can set Herdr up for you. |
| 102 | + |
| 103 | +#### Pricing and license |
| 104 | + |
| 105 | +The runtime is free and open source under the Apache 2.0 license. |
| 106 | +The landing page announces a paid "Herdr Cloud" as "coming soon", |
| 107 | +described as connecting your own machines without configuring SSH, |
| 108 | +with a waitlist and no published pricing (measured 2026-09-09) [@herdr]. |
| 109 | + |
| 110 | +#### Useful to us? |
| 111 | + |
| 112 | +Herdr overlaps with two things the lab already does |
| 113 | +(@sec-orch-baseline): |
| 114 | +running several Claude Code sessions in parallel, |
| 115 | +and isolating each one in its own git worktree. |
| 116 | +It does not replace either. |
| 117 | +Herdr runs the same agent CLIs unchanged, |
| 118 | +and its worktree commands wrap the same `git worktree` calls |
| 119 | +that Claude Code's own worktree isolation makes. |
| 120 | +What it adds is the layer between those sessions and the person watching them: |
| 121 | + |
| 122 | +- **An attention queue instead of a wall of terminals.** |
| 123 | + When a dozen sessions run at once, |
| 124 | + the expensive part is finding the one waiting on a permission prompt. |
| 125 | + The blocked, working, and done states Herdr aggregates across every workspace |
| 126 | + and every machine answer that question at a glance, |
| 127 | + which is the gap one early adopter reported it filling |
| 128 | + when herding parallel agents on a remote box [@coles_herdr]. |
| 129 | +- **Sessions that survive a closed laptop.** |
| 130 | + Long runs of the lab's review-and-iterate loop |
| 131 | + currently die with the terminal that started them |
| 132 | + unless they are already running on a server under `tmux`. |
| 133 | + Herdr gives the same persistence with a friendlier client, |
| 134 | + and can reattach to a Claude Code conversation by session ID after a restart. |
| 135 | +- **A machine-readable control surface.** |
| 136 | + `agent.wait` and `pane.read` let a supervising agent |
| 137 | + spawn helpers in separate worktrees, wait until each is done or blocked, |
| 138 | + and read their output, |
| 139 | + without the polling loops our current scheduled check-ins use. |
| 140 | + |
| 141 | +The same early adopters name the limits [@coles_herdr; @flaviocopes_herdr]. |
| 142 | +Herdr provides no sandboxing and does not isolate file changes |
| 143 | +between agents sharing a directory; |
| 144 | +worktrees, permissions, and network egress remain the user's problem, |
| 145 | +so our hooks and permission rules stay in place unchanged. |
| 146 | +Windows support is in beta, |
| 147 | +a Windows machine cannot serve as a remote target, |
| 148 | +and the tool is pre-1.0. |
| 149 | +It also sits beside, not inside, the editor-hosted session views |
| 150 | +described in @sec-ai-vscode-agent-sessions: |
| 151 | +VS Code discovers CLI sessions and hands work between harnesses, |
| 152 | +while Herdr owns the terminals those sessions run in. |
| 153 | + |
| 154 | +The practical recommendation is to try Herdr on a Linux workstation or server |
| 155 | +where a lab member already runs several Claude Code sessions, |
| 156 | +using one workspace per worktree. |
| 157 | +It is a small, reversible addition |
| 158 | +(no wrapper around the agent, no change to `ai-config`), |
| 159 | +and the status sidebar alone may justify it. |
| 160 | +Adopting the socket API as an orchestration layer is a larger step |
| 161 | +that we should defer until the project reaches a stable release. |
0 commit comments