Run your coding agent unattended. Trust the result.
curl -fsSL https://deadreckon.sh/install.sh | sh $ deadreckon start "build the drawing app" run id m7q3-paint-a1f2 mode worktree · dr/build-the-app $ deadreckon status turn 14 spend $4.18 ▰▰▰▰▰ 5/5 passed gate marker stamped · ready to promote next deadreckon finish latest $ deadreckon finish latest applied dr/build-the-app → your branch artifact RUN-NARRATIVE.md · RUN-DECISIONS.md · manifest.json
Three things deadreckon adds that your agent CLI can't.
It can't fake the finish.
You define "done" in plain English. deadreckon turns it into checks only a separate watchdog can mark passed, so the agent can't sign off its own work.
$ deadreckon def-done "sign up, log in, save a drawing" compiled 3 checks: cargo_test, file_exists, content_match agent$ echo '{"ok":true}' > proofs/turn-acceptance.json agent$ deadreckon finish latest refused: marker stamp does not match the run nonce $ dr-gate sign checks 3/3 passed stamped ✓
Walk away for real.
Every turn is saved to disk. Close the laptop, lose the network, kill the model, then attach from another terminal and resume from the last completed turn. Worst case, you redo one turn.
┌─ run m7q3 · build the app ─────────────┐ │ turn 14 wall 1h:42m spend $4.18 │ │ provider cli:codex ctx 38% / 200k │ ├─ acceptance ───────────────────────────┤ │ ▰▰▰▰▰ cargo_test passed │ │ ▰▰▰▰▰ file_exists passed │ │ ▰▰▰▰▰ content_match passed │ │ ▰▰▰▱▱ build_success running... │ ├─ activity ─────────────────────────────┤ │ 14:33 edit src/auth/mod.rs │ │ 14:35 dr-gate stamping marker... │ └────────────────────────────────────────┘
Evidence, not a transcript.
Every finished run becomes a record you read like a pull request: what changed, why,
which prompt touched which file, and what it cost. attach --view narrative
shows it live.
## What changed Added password-based signup, login, and a saved- drawing route in src/auth/ and src/drawings/. ## Why Turn 4 found an existing `User` model in `src/db/users.rs` and reused it. ## Files touched (provenance.jsonl) src/auth/session.rs turns 3, 5, 7, 9 src/drawings/save.rs turns 11, 12 tests/auth_test.rs turns 6, 8, 10
The agent owns the coding. deadreckon owns the boundary.
Your repo never moves. Everything happens in an isolated worktree, gated before it lands.
The whole tool is five commands: start · attach · status
· list · finish. Everything else is optional.
Run more than one agent. Let them check each other.
Mix CLIs. Add a reviewer.
orchestrate review runs a coder, then a fresh reviewer that fixes its work
before anything promotes. Point each role at a different CLI.
orchestrate full-plan splits a goal into child runs and merges them, fixing
conflicts on its own.
$ deadreckon orchestrate review "build the drawing app" \ --coder-provider cli:claude-code \ --reviewer-provider cli:codex plan m9k2-review-3c7a coder cli:claude-code ▰▰▰▰▰ done reviewer cli:codex 2 fixes applied gate marker stamped · ready to promote
Or run a whole campaign.
deadreckon campaign turns one goal into up to six independent orchestrations,
each gated on its own, then composes them into a single result.
Bring the CLI you already pay for.
Subscription CLIs run on your seat, API routes on your key, smoke on nothing. Same supervision either way.
Switching in? deadreckon import pulls your claude-code, codex, and cursor
history in read-only.
Install the RC. Prove the harness. Then pick a provider.
$ curl -fsSL https://deadreckon.sh/install.sh | sh $ deadreckon doctor $ deadreckon try $ deadreckon start "make a small safe change" $ deadreckon attach latest $ deadreckon finish latest
macOS or Linux, plus curl or wget. The installer resolves the newest release from github.com/gregce/deadreckon and verifies it against SHA256SUMS; no Rust toolchain needed. Current release: a release candidate, not a 1.0.
Pipe a tag into the installer: curl -fsSL https://deadreckon.sh/install.sh | DEADRECKON_TAG=v0.3.1 sh.
deadreckon try runs a keyless proof. For a full throwaway run, DEADRECKON_HOME=$PWD/.dr-smoke deadreckon run "tiny hello rust" --smoke --sandbox none --max-spend 1 fakes only the model; the worktree, sandbox, snapshots, and the gate are real.
The installer verifies assets against SHA256SUMS when present; best-effort, not enforced. State writes under ~/.deadreckon/; set DEADRECKON_HOME to sandbox a throwaway run.
Honest answers, including the ones that make this look smaller.
Does deadreckon replace Claude Code or Codex?
No. It runs the CLI you already use inside an isolated, sandboxed worktree and supervises the loop. deadreckon owns the boundary; the agent owns the intelligence.
Is the gate stamp real cryptography?
No, and we won't pretend it is. It's a plain hash, not real cryptography. It works because the secret behind it sits outside the agent's sandbox, where the agent can't read it. Run --sandbox none and you lose that.
What happens if the run crashes mid-turn?
deadreckon resume picks up from the last completed turn. It snapshots every turn, so the worst you lose is one. Use deadreckon resume latest --from-turn N to choose where to start.
Can I import what I already have in other tools?
Read-only. deadreckon import pulls your claude-code, codex, gemini, opencode, copilot, pi, and cursor history into searchable runs. It never writes back to those tools.
What's still rough?
Native sandboxing is macOS and Linux only; on Windows you'd use the docker backend. It's a release candidate (v0.3.1), not a shipped 1.0, so pin the tag if you need stability. For ordered steps, deadreckon chain gates each one and stops at the first failure by default.