cat posts/2026-04-06-a-team-of-agents-in-my-terminal.md

A team of agents in my terminal

· 4 min read · ai agents tools terminal

For the last week the left half of my screen has had an agent writing code and the right half has had a different agent reading what the first one wrote and telling me what’s wrong with it. They’re both Claude Code, in two panes of the same terminal tab, and the tool holding them is Herdr, which showed up on GitHub at the end of March and has shipped about ten releases since.

I’ve run several agents at once before, in Ghostty splits or in tmux, and the problem was always the same. You can’t tell from across the room which one is waiting for you. An agent that’s been sitting on a permission prompt for fifteen minutes looks exactly like one that’s still working, until you click into it. Herdr’s answer is a sidebar that lists every agent it can find in your panes and marks each one working, blocked or idle. It knows Claude Code, Codex and a few others by default, and as of last week’s 0.3 release it can take state from Claude Code’s hooks directly instead of guessing from the screen. There’s an optional chime when a background agent finishes and a different one when something needs input, which sounds silly and is the feature I’d miss most.

The rest will feel familiar if you’ve used tmux. Workspaces hold panes, tabs inside workspaces arrived on Thursday, and the prefix key is ctrl+b, which it moved to from ctrl+s in an early release so it stops fighting with terminal flow control. The first version I tried had trouble with a few arrow-key combinations in Ghostty on the Mac, and that was fixed a couple of days later. It’s young software. It checks for updates on its own, and some days there’s been more than one.

Two agents, two jobs

What I’ve been doing with it is less about running more agents and more about giving them different jobs.

The writer gets a normal Claude Code session in a repo, with the task, the spec and its usual instructions. The reviewer is a second session in the same checkout with a different set of instructions. It’s told it’s a reviewer, it can read anything and run the tests, and it can’t edit files. When the writer says it’s done, the reviewer reads the diff against the spec and writes its findings as a numbered list. Then I read the list and reply with the numbers I agree with, something like “1, 3 and 5, not 2, and 4 is wrong because the old behavior was deliberate”. The writer applies exactly those, and nothing else.

That last step is the one that matters. I tried a version early in the week where the reviewer’s findings went straight to the writer, and it was a mess within an hour. The reviewer found eleven things, about seven of them were real, and the writer dutifully “fixed” all eleven, including two where the reviewer had misread the code. Agents are agreeable with each other in the same way they’re agreeable with you. Putting myself in the middle, picking from numbered proposals, costs me a couple of minutes per round, and it’s the only point in the loop where someone who knows what the code is for gets a say.

It also makes the reviewer better, oddly. Because I’m rejecting its findings with a reason, and the reason goes into its context, its next round is more useful. By the third round on Wednesday it had stopped flagging the house style as a bug.

Agents driving the terminal

Herdr has a local socket API and a CLI on top of it, added in 0.2, that let a process in one pane read another pane, type into it, or wait until the agent in it goes idle or blocked. The point is that agents can orchestrate other agents, and the docs include instructions you can give an agent so it knows how.

I tried it. I let the writer run herdr wait on the reviewer’s pane and then read its output when it finished, so the handoff happened without me switching panes. It worked the first time, which surprised me. Then I turned it off, because the handoff that was automated was exactly the one I want to be standing in. I use the CLI for the other direction now. A small script waits for either pane to go blocked and sends a notification to my phone, so I can be in the kitchen while they work.

What it’s actually like

I can supervise about two agents properly. Three if one of them is doing something mechanical. Herdr didn’t change that number, and I don’t think any tool will, since the limit is how much I can read. What it changed is how much of my attention went into checking on them. I used to cycle through panes every few minutes to see who was stuck. Now I don’t look until the sidebar or the chime tells me to, which means the time I do spend is spent reading diffs and findings, not reading spinners.

The setup is one workspace per project, and I keep work and personal in separate workspaces, which matches the separate Claude Code profiles I already use for each (separate accounts and separate memory). The writer and reviewer instructions are just Markdown files in the repo that each session is told to read first. None of that is specific to Herdr. You could do the same in tmux with a bit of discipline. The difference is that I didn’t, for a year, and this week I did.

My one reservation is the obvious one for a tool this new, which is that it’s sitting between me and every agent session I run, it pulls down its own updates, and it’s not two weeks old. It’s open source, and I’ve read enough of the code to be comfortable using it on my own machine. I’d want to read a lot more of it before I suggested it to the team.