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.
# 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.
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/.
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.
Merge deterministically
A Go reconciler clusters findings by location, dedupes by similarity, and scores confidence by reviewer agreement. Disagreements are preserved, not flattened.
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.
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.
Recently reconciled findings
Example output from the public conformance suite. Each row is a cluster of one or more raw findings, scored by agreement.
session before accessing
.User
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.