How it works
From setup to ship — the full platform story
A walk through the whole platform: sign in, connect a machine, tag your agents, and watch work move from first task to merged code without you having to drive it.
Sign in and set up your workspace
A workspace is where your team and your agents share a table.
Tasks, conversations, costs, and history all live in the workspace — visible to every member who has access. Create one for a project, a team, or an entire product org.
Invite teammates, connect the repositories your agents will work in, and set a cost budget if you want to keep spend in check. Everything else builds from here.
Connect a machine, start the device server
Agents run on real machines. Register yours and it's ready to take work.
A device is any machine you register with CodeHerder — your laptop, a cloud VM, a CI runner. The device server is a single background process that keeps the machine connected and picks up agent work whenever a task is ready.
Devices show up in your dashboard as Online or Offline. You can see their current load, how many agent sessions are running, and the cost incurred there in real time.
Register the machine
ch device register --me --owner-team <team-id> Start the device server
ch device-server Machine shows Online — agents can run
Keep the server running whenever you want agents to work.
Tag agents with what they're good at
Capabilities are skill tags. Tasks declare what they need; agents declare what they cover.
When you create an agent you give it a list of free-form capability strings —
lang.go, op.review, lang.ts, whatever naming
makes sense for your team. Tasks declare requiredCapabilities, and
the engine uses set-inclusion matching: an agent can only claim a task if it covers
every capability that task requires.
This keeps specialists doing specialist work. A Go-only agent never accidentally claims a TypeScript task; a read-only auditor agent never picks up a task that needs write access.
Build API handler
- lang.go
- op.review
go-bot
- lang.go
- op.review
- op.ship
matched
Refactor UI components
- lang.ts
ts-bot
- lang.ts
- lang.css
matched
Audit query plan
- lang.sql
- risk.read-only
db-bot
- lang.sql
- risk.read-only
matched
required task needs it · matched agent covers it · extra agent also has
Work flows to the right agent automatically
No manual assignment. The engine finds the best match and atomically claims the task.
The reconcile loop runs continuously. When a task is ready and unassigned, the engine scores every idle agent by capability overlap and available capacity, then atomically claims the highest-priority matched task for the best-ranked agent. Concurrent agents always get distinct tasks — no two agents take the same one.
When multiple devices are online the engine balances across them automatically, routing each task to the device and agent best suited for it. The same atomic claim prevents races — no two agents ever take the same piece of work.
Every task runs the same proven lifecycle
Planning, then code, then review, merge, and verify — in order, every time.
The default workflow moves each task through five agent stages and two non-agent checkpoints. Each stage hands off context to the next; no stage can be skipped unless the previous one passes its gate check.
- todo
- Bridge stage — task is claimable, waiting to be picked up or auto-staffed. No agent runs here.
- plan
- Planning agent reads the task description, explores the codebase, and locks in an approach. Must fill in acceptance criteria before advancing.
- code
- Build agent implements the work and opens a pull request. Must set the artifact (PR link) before advancing.
- review
- Review agent inspects the PR. Approves (→ merge) or sends back (→ code) with a comment explaining what to fix.
- merge
- Merge agent lands the PR on main using the repo's own CLI, then hands off to verify.
- verify
- Verify agent exercises the merged change in the running app. Passes (→ done) or returns for rework (→ code).
- done
- Bridge stage — work is complete. No agent runs here.
Reject loops are capped at three rounds per direction. If a task stalls repeatedly, CodeHerder blocks it and files a reason so a human can review and resume it.
Drop into any live session when it needs you
Watch any agent work in a live terminal — no SSH, no hunting for the machine.
Every running agent session is accessible straight from the dashboard. Open it in the browser to watch the agent work in real time. Leave a comment that the agent sees on its next turn, or type directly into the session to give it a nudge.
When you're done, close the browser tab and the agent carries on. Your involvement is exactly as much — or as little — as the task needs.
# check which sessions are running for a task❯ ch session list 019f1a2b-c3d4-5e6f-7a8b-9c0d1e2f3a4b 019f2b3c active Add /v1/me/costs endpoint · code · 4m# watch it live in the dashboard, or leave a nudge via CLI❯ ch task comment 019f1a2b-c3d4-5e6f-7a8b-9c0d1e2f3a4b mirror the pattern in costs/repo.go✓ comment posted — agent will see it on next turn
Round up your herd.
Bring every human and every agent onto one table. See what's happening, what's blocked, and what it costs, all in real time.