Herdr vs T3 Code vs Amp: Software Factory Test
Herdr, T3 Code and Amp all promise to help you run lots of coding agents at once, but they aren't the same kind of tool. Herdr and T3 Code are control surfaces for agents you already have: Herdr in your terminal, T3 Code
Herdr, T3 Code and Amp all promise to help you run lots of coding agents at once, but they aren't the same kind of tool. Herdr and T3 Code are control surfaces for agents you already have: Herdr in your terminal, T3 Code as a desktop, web and mobile app. Amp is a coding agent with its own cloud machines and its own manager agent, Puck. To see how they compare in practice, I built the same minimal software factory with each one: open GitHub issues, let agents turn them into pull requests, and have the merges deploy a website to GitHub Pages.
All three got there, on free plans, with my Claude subscription doing the work. Each factory shipped five issues to the live site in under eight minutes with no help from me. None of them noticed new issues on its own. About an hour in, GitHub suspended my account, and I explain why below.
Herdr vs T3 Code vs Amp: the quick verdict
| Herdr | T3 Code | Amp | |
|---|---|---|---|
| What it is | Terminal multiplexer for coding agents | Desktop, web and mobile app for coding agents | Coding agent plus cloud machines and a manager agent |
| Price | Free, open source (Apache-2.0) | Free, open source (MIT) | Hobby plan is free; Puck and Amp-hosted machines need credits |
| Runs agents | In terminal panes on your machine | On your machine | On Amp's cloud machines ("orbs") or your own ("runners") |
| Agents it manages | Claude Code, Codex, Amp and 20+ others | Claude Code, Codex, Cursor, OpenCode, Grok, Antigravity, plus the ACP registry | Amp only |
| Wave 1: five issues to the live site | 5.3 min | 3.8 min | 7.7 min |
| Picked up new issues by itself | No | No | No (only with paid hosted machines) |
| Best for | Terminal users who want to see every agent at once | People who want a GUI over the agents they already pay for | People who want agents to keep working after they close the laptop |
The speed differences are small and mostly reflect how long each Claude run took. What separates the tools is how you watch and steer the agents, and what each one locks behind a paid plan.
What each tool actually is
It's easy to assume you'd use T3 Code to manage your Amp agents, until you notice Amp has its own manager, Puck. The tools sit in two layers: agents like Claude Code, Codex and Amp hold the model and do the work, and Herdr and T3 Code sit on top of agents you already have so you can run, watch and steer many at once. Amp is the odd one out, because it brings its own control layer too.
- Herdr is a terminal workspace manager for coding agents, written in Rust. It works like tmux, with panes, prefix keys and sessions that survive disconnects, but it also knows which agent is in each pane and whether it's working, blocked or done. That's the difference from plain tmux, which only shows you terminals. Its command-line tool lets one agent create worktrees, start other agents, prompt them and wait for them.
-
T3 Code, from Theo Browne and Ping.gg, is a desktop, web and mobile app for the agents already installed on your machine, using your existing subscriptions. It isn't a harness itself: it gives each Claude Code or Codex thread its own git worktree and shows its status and pull request. It also installs a
t3command for starting and messaging threads from a script. It calls itself "very very early", and I used version 0.1.5. - Amp is a coding agent. Its threads can run on "orbs", which are Amp's cloud machines billed by the minute, or on your own computer as a "runner". Puck, its manager agent, starts and monitors Amp threads from the web, the apps, Slack or any MCP client. Together they do the job of Herdr and T3 Code, but only for Amp.
How I tested
The goal was the smallest software factory that's still a factory: issues go in, a live website comes out, and I don't touch the code.
- The site. A static site called Cape Trails, about day hikes around Cape Town, in plain HTML, CSS and JavaScript. The starting code had three trail cards, a planted bug (the Kasteelspoort card opened the Pipe Track page) and a typo in the footer.
-
The repo. Each tool's agent created its own public repository from the same starting folder, turned on GitHub Pages, and confirmed the site was live. A
checkworkflow ran a link checker on every pull request, and every push tomaindeployed the site. -
The rules. The same
AGENTS.mdin each repo: one branch per issue, open a pull request that saysCloses #N, wait for the check, squash-merge, rebase if the merge conflicts. It also said to touch no other repository. - Wave 1. I opened five issues at once: add a Lion's Head trail page, add difficulty filter buttons, add dark mode with a toggle, fix the Kasteelspoort link, and "Homepage feels a bit plain. Can we make the homepage look nicer?" Filters, dark mode and the homepage polish all touch the same CSS, so conflicts were likely.
- The dispatcher. In each tool, one agent got the same prompt: list the open issues, start a separate agent per issue in its own git worktree using this tool, run them in parallel, keep them going until every issue is closed by a merged pull request, then check the live site. The only difference between the three prompts was one line naming the tool's command.
- Wave 2. After wave 1, I opened two more issues (an About page and the footer typo) and waited ten minutes without saying anything, to see if anything picked them up. Then I told the dispatcher: "Two new issues have been opened. Handle them the same way."
- Free plans only. Herdr and T3 Code are free. Amp was on the free Hobby plan with my Claude subscription linked, running in Amp's "Claude Code mode" on my Mac as a runner. Every agent in every tool was Claude Opus 5.5 through the same subscription, so the tools are the only thing that changes.
-
No approval prompts. Amp and T3 Code ran agents with full access by default. In Herdr I started Claude Code with
--dangerously-skip-permissionsto match. - Timings come from GitHub: when each issue was opened, when its pull request was opened and merged, and when the Pages deploy containing it finished.
I ran the tools one after another, on 30 October 2026, so they weren't competing for the same subscription limits.
Amp Code: works free, but Puck doesn't
Amp's free Hobby plan lets you link a Claude or ChatGPT subscription and run Amp in "Claude Code mode", with no Amp credits used. I ran amp --no-tui --runner-id ritza-mac in the project folder, and threads started from the Amp CLI or website ran on my Mac.
My first plan was to have Puck dispatch the work, since that's what Puck is for, but on the free plan it refused.
So Amp's dispatcher was an ordinary Amp thread instead. It created a git worktree per issue, added each one to the runner with amp runner dirs add, and started five threads with amp -m claude-code --executor runner:ritza-mac -x "<prompt>". Each thread appeared in the Amp web app as it started, which made it easy to follow along.
| Issue | To PR | To merge | Live |
|---|---|---|---|
| Kasteelspoort opens the wrong page | 1.6 min | 2.0 min | 2.4 min |
| Add a Lion's Head trail | 2.2 min | 2.6 min | 2.9 min |
| Filter trails by difficulty | 2.6 min | 3.1 min | 3.5 min |
| Homepage feels a bit plain | 2.6 min | 4.4 min | 4.8 min |
| Add dark mode | 3.3 min | 7.3 min | 7.7 min |
Dark mode was last because by the time it was ready, the filter and Lion's Head changes were already on main, and its pull request conflicted. The agent rebased, resolved the conflict by switching the new filter buttons to the dark mode colours, and added the theme toggle to the new Lion's Head page as well. The dispatcher then checked that the live files matched main, removed the worktrees and runner folders it had created, and noted that it hadn't looked at the site in a browser.

Wave 2: nothing happened in the ten minutes after I opened the two new issues. Once I messaged the dispatcher, both were merged within two minutes and live within four and a half.
Amp is the only one of the three that can react to new work on its own. Orbs can wake on a schedule, on outside events, and through webhooks a plugin registers, and Amp works Linear issues natively. But the webhook docs describe them for Amp-managed orbs, which on Hobby are pay-as-you-go (from $0.08 an hour). On a free plan with your own machine, Amp waits for you like the others.
Herdr: multiple Claude Code agents in one terminal
Herdr runs in your terminal, so I opened it in a Terminal window in the project folder. On first launch, it offered to install "agent integrations". For Claude Code, that adds four hooks to your global ~/.claude/settings.json, so Claude Code reports its status to Herdr directly instead of Herdr reading it off the screen. I installed it, and removed it afterwards with herdr integration uninstall claude.

The setup agent created the repo and confirmed the live site in 51 seconds. The dispatcher then ran herdr --skill, read the instructions, and used Herdr's own commands rather than plain git:
herdr worktree create --cwd "$PWD" --branch issue-1-lions-head-trail --base origin/main --label issue-1 --no-focus
herdr agent start issue1 --kind claude --pane w2:p1 -- --model claude-opus-5-5 --dangerously-skip-permissions
herdr agent prompt issue1 "Resolve GitHub issue #1 in hashkader47/factory-herdr. Follow AGENTS.md."
herdr agent wait issue1
herdr worktree create makes the git worktree and a Herdr workspace for it in one step, so every agent got its own named workspace in the sidebar, with a live working, blocked or done status. Of the three tools, this was the clearest view of what every agent was doing at any moment.

| Issue | To PR | To merge | Live |
|---|---|---|---|
| Kasteelspoort opens the wrong page | 0.9 min | 1.3 min | 1.8 min |
| Homepage feels a bit plain | 1.0 min | 1.4 min | 2.2 min |
| Add a Lion's Head trail | 1.4 min | 1.7 min | 2.3 min |
| Filter trails by difficulty | 0.9 min | 2.8 min | 4.2 min |
| Add dark mode | 1.6 min | 4.5 min | 5.3 min |
The dispatcher started all five agents within 30 seconds of being prompted, then waited on herdr agent wait in the background until they were done. No agent got stuck. One Pages deploy was cancelled because a newer merge replaced it, and the dispatcher spotted that and confirmed the later deploy had shipped the change.
Wave 2: again, nothing in ten minutes. After the prompt, both issues were closed in under two minutes, but only one by a pull request. The agent working on "Homepage feels a bit plain" in wave 1 had fixed the footer typo in passing, so the wave 2 agent checked main, found the fix, and closed the issue with a comment pointing at the commit. That's tidy, but it's also an agent going beyond "the smallest change that resolves the issue", which is worth knowing if your factory has stricter rules.
Herdr left the seven workspaces and worktrees open afterwards and offered to close them.
T3 Code: a GUI with a CLI behind it
T3 Code picked up my existing Claude Code login straight away. Its web interface on 127.0.0.1:3773 asks for a pairing token, so I used its command-line tool instead, which talks to the running desktop app. Setup took 59 seconds.
The dispatcher started each worker with one command, which created the worktree and branch for it:
~/.t3/bin/t3 thread start . "Resolve GitHub issue #1 in hashkader47/factory-t3. Follow AGENTS.md." \
--provider claudeAgent --model claude-opus-5-5 --worktree main --branch issue-1-agent
Each thread appeared in the T3 Code app with its worktree, status and pull request number.

| Issue | To PR | To merge | Live |
|---|---|---|---|
| Homepage feels a bit plain | 0.9 min | 1.4 min | 1.8 min |
| Add a Lion's Head trail | 0.7 min | 2.4 min | 2.8 min |
| Kasteelspoort opens the wrong page | 0.6 min | 2.4 min | 3.1 min |
| Filter trails by difficulty | 0.8 min | 3.1 min | 3.6 min |
| Add dark mode | 1.1 min | 3.4 min | 3.8 min |
T3 Code was the fastest to a pull request every time, and the fastest to finish wave 1, but it also had the most confusing moment. The workers opened their pull requests and then ended their turns. One explained that it couldn't sit and wait for CI in this environment, so it had asked T3 to wake it when the checks finished. The dispatcher saw four threads marked "completed" with open pull requests, decided they had stalled, and sent each one a message with t3 thread send telling it to merge.
Most of those messages weren't needed: two workers had already merged by the time the message arrived, and replied to say so. The other two had conflicts by then and rebased. The dark mode agent, finding the filter buttons had arrived first, opened a second, follow-up pull request to give them dark colours, where Amp's agent had fixed the same thing inside one pull request.
Wave 2: T3 Code started no threads in the ten minutes after the new issues were opened. Then GitHub suspended my account, so I couldn't finish it.
Herdr vs T3 Code vs Amp: results side by side
The vague issue, "Homepage feels a bit plain", got three different answers. Amp and T3 Code both added a gradient header banner. Herdr's agent coloured the title and added a rule under the header instead. All three gave the cards a coloured edge by difficulty, which none of the issues asked for. These screenshots are each repo's final main branch, served locally after the suspension took the live sites down.
Amp

Herdr

T3 Code

| Amp | Herdr | T3 Code | |
|---|---|---|---|
| Setup (repo, Pages, live site) | Not comparable (my GitHub token lacked the workflow scope) |
51 s | 59 s |
| Wave 1: all five issues live | 7.7 min | 5.3 min | 3.8 min |
| Wave 1: times I had to step in | 0 | 0 | 0 |
| Dispatcher interventions | 0 | 0 | 4 messages, mostly unneeded |
| Picked up wave 2 issues without a prompt | No | No | No |
| Wave 2 after the prompt | Both live in 4.2 min | Both closed in 1.8 min | Interrupted |
| Cost | $0 | $0 | $0 |
Every agent in every tool used the same model and subscription, and one run per tool isn't enough to rank them on speed. A dark mode rebase in one run and not another is the kind of thing that decides these times. What is consistent is that all three tools could be driven entirely by an agent, from the command line, on a free plan.
How my GitHub account got suspended
At 13:31 UTC, about an hour after the first repository was created, GitHub suspended my account and the three Pages sites went offline. GitHub hasn't given a reason yet and I've asked support to reinstate it, but the hour's activity looks like a bot: three new public repos, 21 issues, 19 agent-merged pull requests and about 40 Actions runs, all from one personal account. Every agent stayed inside its own test repository and stopped cleanly when requests failed.
If you build a factory like this, use a dedicated GitHub account or organisation, not your main one, and ramp up slowly. A suspension also cuts you off from every organisation you belong to.
Can you manage Amp with T3 Code or Herdr?
Herdr: yes. Amp is one of Herdr's built-in agent kinds (herdr agent start --kind amp), and Herdr ships rules for reading Amp's working, blocked and idle states.
T3 Code: sort of. T3 Code doesn't support Amp directly, but it can add agents from the Agent Client Protocol registry, and Amp is listed there as an "ACP wrapper for Amp". It's a community adapter built on Amp's SDK, not something Amp or T3 publishes, and users in T3 Code's issue tracker report that it streams whole blocks of output rather than token by token. I didn't install it, because I couldn't confirm it would use my Claude subscription rather than Amp credits.

Amp's Puck: only Amp, and only paid. Puck manages Amp threads, not other agents, and on the free plan it doesn't run at all.
Which one should you use?
- You live in the terminal and want to see every agent's state at a glance: Herdr. It was the clearest view of five agents at once, its command-line interface is the most complete of the three, and it supports Amp out of the box.
-
You want a polished app over the agents you already pay for: T3 Code. Worktrees and pull requests are built into every thread, it works on your phone, and its
t3command means you can script it too. It's early software, and it showed: agents ending turns while waiting for CI confused its own dispatcher. - You want agents to keep working after you close the laptop, and you'll pay for it: Amp. It's the only one with cloud machines, schedules, webhooks and a manager agent. On the free plan you get none of those, but a good agent that runs on your own Mac with your own subscription, and a web and phone view of every thread.
- You want issues to become deployed code with nobody watching: none of them, for free. You'd need Amp's paid orbs and webhooks, or your own trigger, such as a GitHub Action or a scheduled script that starts the dispatcher.
For more on the agents themselves, see our coding agent harness comparison, Claude Code vs Amp Code and Replit vs Amp.
Frequently asked questions
What about Paseo?
Paseo is closest to T3 Code and Herdr: a local service that runs Claude Code, Codex, OpenCode and others in git worktrees, with desktop, mobile, web and command-line clients, and built-in skills for agents to hand work to each other. I left it out to keep the test small. Its README doesn't list Amp.
Is T3 Code free?
Yes. T3 Code is free and open source under the MIT licence, and it uses the subscriptions you already have for Claude Code, Codex and the other agents it supports. You can download it from t3.codes or the GitHub releases page, or install it on a Mac with brew install --cask t3-code.
Is Amp Code free?
Amp's Hobby plan is free, and you can link a Claude or ChatGPT subscription so that Amp uses it instead of Amp credits. Running threads on your own machine as a runner is free. Puck, Amp's own agent modes and Amp-hosted orbs need credits or a paid plan.
Is T3 Code any good?
For running several agents you already pay for, yes. In this test it was the quickest to get every issue to a pull request, and each thread showed its worktree, status and pull request in one place. It's also early (version 0.1.5): its workers ended their turns while waiting for CI, which confused the dispatcher watching them, and its web interface needs a pairing token before you can use it in a browser.
How do you run multiple Claude Code agents with git worktrees?
Give each agent its own git worktree and branch, so they never edit the same checkout. Herdr does this with herdr worktree create, which also opens a workspace for the agent. T3 Code does it with --worktree and --branch on t3 thread start. With Amp, the dispatcher ran git worktree add itself and served each worktree to the runner with amp runner dirs add. In all three, agents that touched the same files still had to rebase when the first one merged.
Is Herdr better than tmux for Claude Code?
If you run several Claude Code sessions at once, yes. Herdr keeps tmux's panes, prefix keys and persistent sessions, and adds agent status (working, blocked, done), notifications when an agent needs you, and an API that lets one agent start and prompt others. For a single session, tmux is enough.
Can Claude Code run multiple agents in parallel by itself?
Claude Code has its own subagents, but they run inside one session. To run several independent Claude Code sessions, each in its own worktree and each opening its own pull request, you need something like Herdr, T3 Code or a script around git worktrees. In this test, a single Claude Code dispatcher used each tool's command line to start and watch the others.
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.