The home for the Go agentic-infra family: one repo, one Go module, nineteen tools (twenty binaries) that let one person run a team of coding agents and trust what comes back. Tools live side by side and share contracts, not call stacks: they compose at runtime through artifacts (exit codes and JSONL on disk), never by importing each other's decision code.
go install github.com/itsHabib/workbench/cmd/<tool>@latest
- Run several agents at once and always know who is doing what:
cmd/fleet. Read the overview, then install and onboarding; if you want the habits without the machinery, the minimum. - Decide whether an exact pull-request head may merge, with a record:
cmd/gate. - What is this whole system?
docs/workbench-101.md, the teaching doc;docs/plain-language-overview.mdis the same picture with no jargon;docs/README.mdis the full table of contents.
Grouped by what they own. Each has its own README under cmd/<tool>/.
Running agents
| tool | what it does |
|---|---|
fleet |
the substrate for a team of agents: a hook that derives identity, liveness and leases from harness events; seats, assignment rows, receipts, role-addressed mail, one Go watcher for the board, headless polling, assignment/mail wakeups and recurring lead ticks |
org, org-mcp |
editable Markdown role cards and an optional parent directory; register, read, list. Work, messaging and checkpoints need no Org lifecycle; old lifecycle callers are removed during cutover |
runway |
foreground execution-runtime controller: one admitted request at a time |
dispatch |
placement: which engine and where a task runs |
driverstate |
the human and cron CLI over the driver-state event ledger |
codexguard |
the deterministic policy floor for Codex tool calls |
Deciding what may merge
| tool | what it does |
|---|---|
gate |
the merge-authorization boundary: scoped, tiered, time-boxed grants; a verifier ladder; a hash-chained decision log; exit codes 0 pass, 1 blocked, 2 parked, 3 refused, 4 error |
triage |
PR risk classification: a deterministic floor plus an escalate-only advisory (triage-floor, triage-advisory) |
review |
who has to review an exact head, and whether they have |
reviewfindings |
one artifact over the reviewers' findings: a producer that reads GitHub, and an address verb that records each finding's lifecycle in the driver-state ledger; it records, it does not judge |
escalate |
the agent → human → agent back-channel: ingests a human's decision for a parked gate run and closes it |
Seeing and being told
| tool | what it does |
|---|---|
console |
a local, read-only web view of gate's inbox |
flare |
notifications on authoritative receipts; a best-effort sink, never a gate |
tracelens |
agent trace diagnostics: loops, redundant calls, retry storms, and what to change |
workbench-mcp |
the unified MCP surface over the workbench verbs |
Local models and secrets
| tool | what it does |
|---|---|
local, eval |
hand one sub-task to a local model (Ollama) with an escalate-on-uncertainty gate; measure which tasks can be exported to it |
custody |
a localhost credential broker: the agent calls an API it is never handed the secret for; every request is an injected pass or a fail-closed refusal |
A taste, the local primitive classifying a CI log line on a local model (needs Ollama):
$ echo "Error: connect ETIMEDOUT registry.npmjs.org:443" | \
env local -prompt "Classify this CI line: flake, infra, or real-break." \
-schema '{"type":"object","properties":{"class":{"type":"string"}},"required":["class"]}'
{"source":"local","result":{"class":"infra"}} # output varies by model; verified on qwen2.5:7b(env sidesteps the local builtin in bash and zsh.)
contracts/— the shared vocabulary: the verdict schema and Go types every verifier emits, the artifact envelope every producer writes, the org record types. A leaf package that imports nothing else in the module.local/— the shared local-model mechanism behindcmd/localandcmd/eval; leaf-checked likecontracts.cmd/<tool>/— one binary per tool, guts private undercmd/<tool>/internal/, docs beside it (README.md, and for most tools aCLAUDE.mdandAGENTS.mdpair CI keeps identical).docs/— the charter (DESIGN.md), the teaching docs, the autonomy doctrine, anddocs/features/<feature>/with a spec and evidence per feature. Decisions that cut across tools live there too, for exampledocs/features/org-fleet-boundary/spec.md, which settles whatorgowns and whatfleetowns.
A tool may share types and schemas through contracts. A tool may not import another
tool's decision logic. When a tool needs another tool's output, it reads an artifact. CI
enforces this (the hygiene job); it is not a convention.
- How does the daily work run?
docs/workflow-mechanics.md. - How far may an agent act unattended?
docs/auto-mode-defaults.mdand its executable half,docs/auto-mode-rulebook.md. - What did building it teach?
docs/lessons.md. - What do the words mean?
docs/glossary.md. - How do I prove a fleet build works?
cmd/fleet/docs/e2e.md. - What else exists around this repo?
docs/projects.md, and the skills that drive the workflow at github.com/itsHabib/skills.
gofmt -l . && go vet ./...
golangci-lint run ./...
go test ./...
Third-party Go dependencies are allowed. Every change lands from a worktree; main in the
root checkout stays clean.