Watch a lie get caught 👻

A friendly ghost moves into your repo, reads every PR against the ticket it claims to close, and hands down a verdict your agent can’t fake. Here’s the whole haunting, step by step.

~/your-repo — zsh

$

every agent does this. every single one.

01install

Let the ghost in

Install the app on a repo — one click, no CI YAML, no runner to babysit. The ghost moves in and starts watching PRs.

nohup verify — on your own subscription
nohup verify — on your own subscription
your-org/your-repo
main · 42 PRs open
the ghost moved in
02you open a pr

It reads the ticket AND the code

Not just the diff. The ghost pulls the ticket, scans the changes, and adversarially checks the claim against what actually shipped.

real demo — drop a recording here
real demo: PR #42 getting scanned
PR #42FAC-123 · add-webhook-handler
ticket
“Verify webhook signatures. Reject unsigned events. Add tests.
diff
+ verifySignature(req)
+ if (!ok) return 401
… no test files changed
03the verdict

A verdict, derived in code

Pass or fail with scored, per-criterion checks. It’s computed from evidence — not trusted from the model — so a lying agent can’t fake a pass.

the ghost catching a fake done
the ghost catching a fake done

deriving verdict…

SpecReview — fail

  • [x]Signatures verified
  • [x]Unsigned events rejected
  • [ ]Ticket required tests — none ran

derived in code · uncheatable

04the gate

It gates the merge

The verdict posts as a required commit status. Red and blocked until it passes — so “done” finally means proven, not promised.

real demo — drop a recording here
real demo: merge button unblocking on pass
SpecReview — required check

“done” now means proven.

05it learns

Every verdict is kept and scored

The ledger fills with claim, evidence, and reasoning — then each call is scored against what really happened. Over time, the ghost gets sharper.

real demo — drop a recording here
real demo: the ledger + calibration over a week
verdict ledger
PASS#41 add-rate-limit
FAIL#42 add-webhook-handler
PASS#43 fix-session-expiry
FAIL#44 migrate-users
calibration

when it says FAIL, a revert follows

0%
illustrative

Ready to stop getting ghosted by your own agent?

Install nohup ghost on a repo and let the ghost start catching lies — free forever for open source.