Skip to content

Repository files navigation

workbench

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

Start here

The tools

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.)

Layout

  • 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 behind cmd/local and cmd/eval; leaf-checked like contracts.
  • cmd/<tool>/ — one binary per tool, guts private under cmd/<tool>/internal/, docs beside it (README.md, and for most tools a CLAUDE.md and AGENTS.md pair CI keeps identical).
  • docs/ — the charter (DESIGN.md), the teaching docs, the autonomy doctrine, and docs/features/<feature>/ with a spec and evidence per feature. Decisions that cut across tools live there too, for example docs/features/org-fleet-boundary/spec.md, which settles what org owns and what fleet owns.

The one rule

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.

Where to read, by question

Develop

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.

About

Go tools for letting coding agents ship real PRs under control: gate authorizes merges from evidence, triage tiers review risk, tracelens diagnoses agent runs, flare pages you on escalations. One module; tools share contracts, not call stacks.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages