collie/ harness
GitHub ↗
collie
A coding agent that proves its work

Watch the gate go green.

collie finds the bug, writes a reproduction that must fail, makes the smallest diff that flips it to passing — and hands you the receipt. Quietly. For pennies. With the proof kept on disk.

$ pip install collie-agentcopy star on GitHub
$ collie -p "fix parse_duration compound units" → exit 0 = verified
collie  ~/timeparse  · gpt-5.6 · auto

        
REPRO armed ·0 tok ·0.0s ·$0.000 ·ctx 8% v verbose · u undo · esc steer
The signature

The verification gate is the hero, not a footnote.

Every other agent buries “I ran the test” in a tool log. collie commits to a falsifiable target first — a reproduction it wrote and executed — then refuses to call the job done until that same assertion flips from failing to passing. One object, two states, tracked by your eye.

✗ armed · failing
assert parse_duration("1h30m")
   == 5400
Written before a single edit. Executed on the unfixed code — exit 1, got 1800. If it can’t fail here, it’s not a real gate, and collie throws it out.
the diff
that flips it
✓ verified · passing
total += SECONDS[unit] * int(val)
# was: total =
A +1 −1 change. The assertion runs again — exit 0. Only now is the run “done,” and the repro is kept on disk as evidence.
Seven principles

Lean is the brand — so the interface earns every line.

01 Gate first

The proof is the most prominent live thing

A persistent REPRO gate sits in the HUD, failing→passing. A run isn’t “done,” it’s “verified ✓ in 12.8s.”

02 Quiet by default

~1/6 the tokens should feel true

One narrative line per action, thinking collapsed, no chain-of-thought wall. A whole fix fits in ~16 lines. Verbosity is one keypress, never the default.

03 Show where it looked

Localization is visible

Semantic code_search prints ranked candidate sites with similarity scores — you watch it reason about location before it touches code.

04 Honest receipt

tokens · time · $ always on screen

Glanceable in a one-line HUD, never dumped per-turn. The “most-capable-per-token” claim is a receipt you can read, not marketing.

05 Smallest diff

Scope bound by the assertion

The repro defines “done,” so the edit is the smallest change that flips the gate. Diff size (+7 −2) shows as a virtue, not a wall of new code.

06 Git is undo

Approvals are a dial, not a modal storm

Auto-checkpoint before each edit; u reverts. Because reversal is cheap and every edit is verified, collie defaults to low-friction — the #1 documented killer, sidestepped.

07 Degrade cleanly

Meaning never lives in color alone — and it runs everywhere

The gate reads ✓ passing / ✗ failing in words, not just green and amber. Plain output when it’s not a TTY, NO_COLOR respected, progress to stderr and result to stdout. Lean also means uncorrupted over SSH, CI logs, and Windows Terminal.

The receipt

Truth-in-advertising, rendered as UI.

The field sells scores on benchmarks it now calls contaminated. collie sells the opposite: a live, real tally of what the run cost and the executed evidence it produced. Expand it any time with /cost.

verified · session receipt
repro gate✓ passing
tokens loc 1.1k / edit 0.9k / vfy 1.4k3,410
wall time12.8s
cost$0.006
diff+5 −2 · 1 file
evidencerepro_1h30m.py
Interaction model

Approvals are a dial. The repro and git are the safety net.

collie can afford to be quiet because every edit is reversible and executed-verified. Modes cycle live with Shift+Tab; the active one always shows in the HUD.

ModeReads · code_searchIn-repo editsShell · test runNetwork · out-of-repo
plansilentshown, not applied
defaultsilentask once / patternaskask
autorecommendedsilentsilent · git-reversibleverify pre-allowed
other shell classifier-gated
ask
yolosilentsilentsilentsandbox only

deny → ask → allow, first match wins · approvals session-sticky · a blocked action returns to the agent (“find a safer path”), escalating to a human only after 3 denials — deny-and-continue, never silent-halt.

/planpropose, don’t write
/verifyre-run repro + regression tests
/reproopen the reproduction collie wrote
/costtokens · time · $ by phase
/diffworking-tree diff since start
/undorevert to a checkpoint
/modelswitch model or effort
/quiet /verboseset default verbosity
/dashboardopen the control tower
0exit 0 — repro verified passing. collie is a CI verifier, not just an editor.
1exit 1couldn’t reach a passing assertion
2exit 2error
The control tower

The CLI is the cockpit. The dashboard is history and 2-D review.

A terminal streams one run beautifully and reviews a session badly. The web view owns what the terminal can’t — and never becomes required.

run timeline — locate │ edit │ verify · width = time · ✓ marks the gate flip
flask-5014✓ 9.1s
seaborn-3069✓ 21.4s
django-13121✓ 14.0s
sympy-21596✗ 18.2s
locateeditverify retries show as repeated verify segments — seaborn re-armed once, then held.

Plus the one view no competitor has: a verification ledger — every run with its kept repro, the executed assertion, and its exit code. One click to the exact script and its output. The anti-contaminated-benchmark artifact: here is the assertion, here is that it ran, here is that it passed.

What we won’t build

Restraint is a feature. Every surface must serve locate → edit → verify.

  • No full-screen TUI framework. Keep the append-only stream — it works over SSH, CI, and Windows. Repaint only the HUD line.
  • No approval-modal maze. Repro + git are why collie can be quiet. Per-edit prompting imports the exact fatigue everyone complains about.
  • No chain-of-thought wall. Reasoning is dimmed and opt-in. A verbose collie undercuts the 1/6-token story on sight.
  • No fuzzy search/replace edit engine. Exact line-anchored edits + re-read on failure. Aider’s single biggest pain — refused.
  • No emoji chrome, no warm closers, no persona zoo. The output is receipts, not personality.
  • No 40 slash-commands, no plugin marketplace, no per-turn cost spam. Nine commands. The receipt lives in the HUD.

collie shows you where it looked, arms a failing assertion, makes the smallest diff that flips it to green, and hands you the receipt — quietly, for pennies, with the proof kept on disk.