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.
$ ▋
every agent does this. every single one.
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.

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.
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.

deriving verdict…
SpecReview — fail
- [x]Signatures verified
- [x]Unsigned events rejected
- [ ]Ticket required tests — none ran
derived in code · uncheatable
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.
“done” now means proven.
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.
when it says FAIL, a revert follows
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.