looprail runs the agent CLIs you already have (Claude Code, Codex, Copilot, Gemini, aider, opencode, local models) in one loop that only exits when real tests pass and a critic on a different provider signs off. Cross-model review is the point: a vendor can't be its own honest reviewer.
npx looprail demo
8 agent adapters1,250+ testsMIT$0 API keys, reuses your CLI logins
the loop
Prompt-level rules ("never modify the tests") demonstrably don't hold. Production reward-hacking studies show agents deleting assertions, patching pytest configs, and special-casing test inputs. looprail's answer is structural: anchor every check to something the model can't fake.
rails
Every rail is deterministic: file hashes, exit codes, registry responses, diffs. No rail needs its own model call, so no rail can be gamed the way a prompt can.
Test files are hashed at run start. Any edit fails the iteration with a revert instruction; a repeat halts the run. Covers the documented exploits, from deleted assertions to conftest and jest-config patching.
The critic reviews the actual git diff since run start, never the worker's own description of what it did. A model can lie about its work; it can't lie about the diff.
An allowlist of what the task may touch. Asked for a modal fix and got twelve files? Out-of-scope changes fail the iteration with a revert instruction.
Every package the agent adds is checked against its registry. Hallucinated names fail the iteration; freshly published lookalikes get flagged as a squat signal.
Every verdict lands in a hash-chained, committable file: who judged what, on which model, with a digest of the judged output. Rewrite history and the chain breaks, verifiably.
Hard ceilings on iterations, dollars, and wall-clock. Checked before each node starts, counting real and estimated spend. A loop halts the moment it would go over, not one expensive step later.
quickstart
No API keys of its own. Adapters reuse each CLI's existing login.
# see the whole loop first - offline, nothing installed, ~5 seconds npx looprail demo # then in your project npm install -g looprail looprail init # detects your agent CLIs + your real test command looprail run --dry-run # preview nodes, models, budget - spends nothing looprail run # exit 0 only when it's actually done
long run
Self-review is barely better than a coin flip, and judges prefer output that looks like their own. The strongest critic is on a different provider than the worker, something no single vendor's orchestration can offer about itself. How it compares →
Queue goals overnight; gates park instead of failing and notify you. Resume never re-bills finished work. Rate-limited provider? The agent's fallback chain hops to another one. Watch everything from one dashboard.
context: fresh rebuilds the executor's prompt each iteration from goal, plan, feedback, and its own on-disk notes, never a growing transcript. Disk is the memory.
init --from-spec prd.md: the planner maps every requirement to implementing and verifying nodes, an independent critic re-reads the spec and fails on gaps, and you approve the plan at a gate before anything executes.