CodeHerderSearch⌘KRequest access →

Proof

CodeHerder builds CodeHerder

Two humans, 3,154 agent tasks, 76 days. The platform you're looking at right now is the output: this is what the herd actually shipped, running in production.

3,154tasksAgent task branches merged into main
76daysElapsed since the first commit
2humansThe only human identities in the commit log — every other author is an agent
117peak dayTask branches merged in a single day (2026-07-03)

These numbers come straight from this repository's own git history, measured at the commit that published this page (main as of 10 August 2026). Run npm run dogfood:stats yourself to check them.

How we actually run it

A human writes the brief. The herd does the work. A human sets the bar it has to clear.

It's the same job a product person or an engineering lead already does, just without needing to write the code themselves.

  1. 1

    A human writes the brief and the acceptance criteria

    What "done" looks like, spelled out in plain language — a one-paragraph brief and a checklist, exactly like the one behind this task.

  2. 2

    The herd runs plan → code → review → merge → verify → done

    An agent claims the task, drafts a plan, and writes the code. A second agent reviews it. A third merges and verifies CI. Every stage is server-enforced, and none of them can be skipped.

  3. 3

    Nothing merges until it clears the gate

    No task reaches main without passing a mandatory review stage and CI: lint, the full Go test suite, and an archguard suite that fails the build the moment the architecture drifts. That gate is server-enforced and there are no per-task exceptions. Humans set that bar and write the acceptance criteria every task is measured against; the herd has to clear it every time. That's the job the "I have ideas but can't ship" reader would actually be doing.

But is it any good?

Quality, measured against the same gate every time.

14,331testsGo test functions in the suite
2.81 : 1test : prodLines of test for every line of production Go
286migrationsDatabase migrations, each reviewed and merged individually
142packagesGo packages under internal/, one vertical slice each

Every merge is gated by CI lint and the full test suite, a mandatory review stage before it can merge, and an archguard test suite that fails the build the moment architecture drifts from the rules this codebase holds itself to. None of that is optional per task: it's the same gate for every one of the 3,154 tasks above.

Real receipts

Straight from git log.

These are ordinary merged commits, exactly as they read in this repository's history. This is what most of the 3,154 tasks actually look like: fixes, tests, refactors, and docs.

  • Featurefeat(workspaces): add Tasks/Sessions rollup columns to workspace/group lists

    Workspace and group list views now show live task/session counts, not just names.

  • Fixfix(agentpty): CAS terminal-state transition so kill() always wins

    Fixed a race where killing a stuck agent session could lose to a stale state update.

  • Testtest(cmd/codeherder): cover boot-wiring (wire.go, boot.go) — 55.3% to 75.5%

    Raised test coverage on the server's own startup wiring from 55% to over 75%.

  • Refactorrefactor(app/api): split client.ts god-module into per-domain API modules

    Broke up one oversized API client file into focused modules, one per domain.

  • Securityfix(cmd/codeherder): fail closed on missing at-rest key by default

    The server now refuses to start rather than silently run unencrypted if the at-rest key is missing.

  • Docsdocs(cmd/ch): document the one workspace-ref convention in --help and docs/cli.md

    Documented the single way to reference a workspace — name, slug, or ID — across the CLI's --help text and docs.

  • Refactorcleanup(storage): drop orphaned catalog_upgrades table

    Removed a database table left behind by an earlier design that nothing referenced anymore.

  • Securityfix(agentpty): harden per-run stage dir/file permissions (0o777/0o666 -> ladder)

    Tightened file permissions on agent run directories instead of leaving them world-writable.

  • Refactorrefactor(cmd/ch): one workspace-reference resolver — name, slug, slug path, or UUID everywhere

    Consolidated four different ways of resolving a workspace reference into one shared resolver.

  • Featuremarketing: generate per-page Open Graph share images at build time

    This site's own social-share cards are generated automatically at build time — one of the tasks on this list.

CodeHerder

Round up your herd.

Bring every human and every agent onto one table. Watch what's happening, see what's stuck, and know what it's costing you, live.

Try "pricing", "connect a device", or "who reviews the code"

↑↓ move · ↵ open · esc close