Role
Architect · author
Status
Active · Nerds Run maintains
Stack
Go · NATS · BadgerDB · Bleve
Evaluated on
128GB Strix Halo · Vulkan

01 · Thesis

Most “AI coding” tools are single-shot assistants dressed up as agents. harness-go is the opposite bet: a long-running pipeline where planning, implementation, and review are separate roles with separate memories and separate failure modes. The pipeline can reject its own output, regenerate, and learn across sessions. That's the only way this ever becomes production-grade.

The claimAn agent pipeline that can reject its own output, keep policy hot, and maintain cross-session memory is categorically different from one that can't. The difference shows up in the eval, not the demo.

02 · Architecture

Three agent roles — Proctor, Coder, Reviewer — communicate over NATS JetStream. Each generation N produces 3–5 candidate implementations in isolated git worktrees, scored and either merged or rejected. Rejection feeds back into the Proctor with structured rationale, not a vibes retry.

// HARNESS-GO · AUTONOMOUS MULTI-AGENT CODING PIPELINE LINEAR issue ingest SLACK ops · commands GITHUB webhooks PROCTOR plans · decomposes · assigns GENERATION N worktree pool · parallel candidates CODER A git-wt-0 CODER B git-wt-1 CODER C git-wt-2 CODER D git-wt-3 CODER E git-wt-4 CODER F git-wt-5 spec · ctx REVIEWER scores · rejects · merges ↺ reject · regenerate ORCHESTRATION + MEMORY durable substrate NATS JetStream work · events · ack BadgerDB kv · lsm store Bleve full-text index OpenTelemetry traces · metrics · logs Hot-reload policy · atomic pointer swap Compaction window · safe reconfiguration GITHUB PR merged · signed LINEAR closed · notified CI / DEPLOY gated · observed * every signal enters the same durable queueLOCAL MODELS · 128GB STRIX HALO · EVAL HARNESS · NO CLOUD LLM COSTS · AUDITABLE · OFFLINE-CAPABLE

Why NATS JetStream

We need durable, ordered, replayable work queues with consumer-group semantics and exactly-once delivery when we ack. JetStream gives us that without the operational weight of Kafka, and the ack-nak semantics map cleanly onto “generation produced valid candidate / needs regeneration.”

03 · Memory model

Two stores, one purpose:

  • BadgerDB — key-value, LSM-backed, for structured episodic memory: run artifacts, decision trees, per-agent scratchpads.
  • Bleve — full-text, for semantic recall across sessions: “have we tried this refactor before? what happened?”

Both are embedded — no external dependency, no network, and a single Go binary ships the entire harness. This matters for local-model evaluation where we're running on one box.

04 · Hot-reload policy via atomic pointer swap

Policy (scoring weights, reviewer thresholds, tool allow-lists) is a struct behind an atomic.Pointer. Updates build a new policy graph, validate it, then swap the pointer during a safe compaction window. In-flight work holds references to the old policy until it completes; new work reads the new policy. No drain, no stop-the-world.

Why this mattersLive-tuning a running agent pipeline is the difference between “useful R&D toy” and “thing we iterate on during a client engagement.” Restarting to change a threshold is not a serious operating model.

05 · Evaluation harness

We benchmark harness-go against a fixed 60-task suite (bug fixes, small features, refactors, test authoring) across frontier models and the local weights we run in-house. Local models run on 128GB Strix Halo via Vulkan — gfx1151 has a ROCm hang on this generation, so Vulkan is the compatibility path.

Public results and methodology live on me.nerds.run; numbers refresh monthly.

06 · Takeaway

Three things came out of building harness-go that are reshaping every client engagement we take on: (1) agent pipelines must be able to reject their own output or they're just slower autocompletes; (2) cross-session memory is underrated and underbuilt; (3) local models on serious hardware are now competitive for a surprising chunk of real coding work, and organizations with regulated data should be watching.

Let's talk

Tell us what you're trying to ship
we'll tell you what it looks like to get there.

We take one or two new engagements per quarter. No published pricing — every engagement is scope- and duration-dependent, so pricing is a conversation. Bring the problem. We'll bring the questions.