Sparra came out of a single idea I could not stop turning over after watching Build Agents That Run for Hours, an Anthropic workshop by Ash Prabaker and Andrew Wilson. The pitch was that an agent can do real work for a long stretch if you give it the right scaffolding: a clear contract for "done," a way to check its own output, and state that lives on disk so the whole thing survives interruptions. I wanted to feel that for myself, on my own projects, so I built a harness around it.
The shape is a loop. Each work item gets negotiated into a small, checkable contract (a handful of assertions, not a wishlist), handed to a generator that implements it, then handed to an adversarial evaluator that does not take the generator's word for anything. The evaluator actually runs the artifact, reads the evidence, and refuses to pass something that only works on a degenerate input or whose own tests crash as delivered. Stuck items get discarded and restarted from scratch rather than nursed along. The part I care about most is the cross-model judging: Claude can build while Codex judges, or the reverse, which gives a genuinely independent second opinion instead of a model grading its own homework.
Driving the loop from a Claude Code session, several work items at once, here while Sparra improves itself. It runs the cross-model pairing in reverse: Codex generates each item while Fable, a Claude model, judges it. Five role-runs are in flight, and U1 (nine files, self-verify green across 774 tests) is committing its checkpoint before its evaluation begins.
The guiding principle is that the filesystem is the source of truth and the only shared state. Every step reads its inputs from disk and writes its outputs back, so a run is inspectable, diffable, and resumable from any point. That one decision is what makes the long-running part actually work. When a model hits a rate limit at hour two, the loop can wait the window out or fall back to another provider and pick up exactly where it left off.
There are two ways to drive it. Most of my sessions are interactive: a /sparra-loop skill puts me on the wheel inside Claude Code, steering between contract, generate, evaluate, and accept, with a holdout wall the builder cannot see enforced by the runner. The other way is to hand off entirely and let the CLI run plan → freeze → build → reflect unattended. Both modes share the same on-disk state and the same role-runner underneath.
Another run, and the adversarial gate doing the exact job it exists for. Codex evaluated the generator's first attempt and failed it, 72 of 75, on two real problems: a genuine scope hole and an incomplete docs pass. So the work goes back for a second round instead of being waved through. The whole loop can report where it is because every step's state lives on disk.
It is early and it is personal, but it has already built real things, including large parts of itself. The updates below are the build log: the whole loop standing in a day, teaching the judge to run an iOS app and read its screenshots, cross-model judging, closing the door on contracts the generator could game, surviving provider rate limits mid-run, driving it by hand from Claude Code, and the day it started auditing its own prompts.