Agent Team Code Review

A review panel, not a reviewer.

Fan a diff out to a panel of heterogeneous models. A deterministic reconciler clusters their findings, dedupes them, and scores confidence by how many independent models agreed. The output is one file on disk — this one.

$ go install github.com/samestrin/atcr/cmd/atcr@latest Read the docs
.atcr/reviews/r-4f2a/reconciled/report.md
# Reconciled review — PR #402
3 sources · 5 panelists · 6 findings clustered to 3 · suite v1.4.2

## Confirmed

HIGH  auth.go:42  nil-pointer deref on empty session
      → fix: guard session before .User access
      sources: greta, bruce, mira   ●●●○○  3/5 · 94%

MEDIUM   store.go:15  arch drift: view layer reaches into db
      → fix: route through the repository interface
      sources: kai, otto             ●●○○○  2/5 · 88%

## Disputed

HIGH  users.go:88  possible SQL injection in filter clause
      → fix: parameterize the query
      sources: mira (bruce objected: input is escaped upstream)
      ●●⊘○○  2/5 · 71%
# SEVERITY|FILE:LINE|PROBLEM|FIX|CATEGORY|EST|CONFIDENCE|SOURCES
HIGH|auth.go:42|nil-pointer deref on empty session|guard session before .User|correctness|10|94|greta,bruce,mira
MEDIUM|store.go:15|view layer reaches into db|route through repository interface|architecture|25|88|kai,otto
HIGH|users.go:88|possible SQL injection in filter|parameterize the query|security|15|71|mira
[
  {
    "severity": "HIGH", "location": "auth.go:42",
    "problem": "nil-pointer deref on empty session",
    "confidence": 94, "status": "confirmed",
    "sources": ["greta", "bruce", "mira"]
  },
  {
    "severity": "MEDIUM", "location": "store.go:15",
    "problem": "view layer reaches into db",
    "confidence": 88, "status": "confirmed",
    "sources": ["kai", "otto"]
  },
  {
    "severity": "HIGH", "location": "users.go:88",
    "problem": "possible SQL injection in filter",
    "confidence": 71, "status": "disputed",
    "sources": ["mira"], "objections": ["bruce"]
  }
]

The same review, three machine-parseable formats. Every handoff is a file.

How it works

Three commands. One artifact.

No SaaS, no dashboard to log into. The binary runs locally against your keys and writes everything it does to .atcr/.

greta bruce kai mira otto reconcile report ·  94%
01 · review

Fan out

Resolve the git range, build the payload, and dispatch it to every persona in the roster — different models, different providers, different lenses — in parallel.

02 · reconcile

Merge deterministically

A Go reconciler clusters findings by location, dedupes by similarity, and scores confidence by reviewer agreement. Disagreements are preserved, not flattened.

03 · report

Read the verdict

Render the reconciled findings as markdown, JSON, or a checklist. The high-confidence items rose to the top because more than one model independently caught them.

The signal

Agreement is the confidence score.

Anyone can fan a diff out to five models and get five walls of prose. The merge is the hard part — and the product. A finding two independent models both caught is worth more than either model's opinion alone.

atcr renders that agreement literally: every finding shows which panelists raised it, who objected, and the confidence that falls out of the math. Cross-model consensus is the whole point.

How this compares to single-model reviewers →

auth.go:42 · nil-pointer
3/594% confirmed
users.go:88 · SQL injection
2/571% disputed
legacy.go:9 · style nit
1/531% low signal
From the conformance suite

Recently reconciled findings

Example output from the public conformance suite. Each row is a cluster of one or more raw findings, scored by agreement.

HIGH
auth.go:42
nil-pointer deref when session is empty on the unauthenticated path
fix: guard session before accessing .User
94%
greta · bruce · mira
confirmed
MEDIUM
store.go:15
architecture drift — the view layer reaches directly into the database
fix: route the call through the repository interface
88%
kai · otto
confirmed
HIGH
users.go:88
possible SQL injection in the filter clause — one panelist objected
fix: parameterize the query (bruce: input is escaped upstream)
71%
mira
disputed
Local-first · BYO-keys · one Go binary

Run the panel on your next PR.

Two commands on a feature branch and you have a reconciled report. The CLI, an MCP server, and an Agent Skill all run on the same engine.

$atcr review && atcr reconcile Get started