Verify a run yourself

Below is one real run from the fleet that runs this company, sealed on 2026-09-10 and never touched since. Nothing here trusts us: your browser recomputes every hash, and you can edit any field and watch it break.

The sealed record of run 00dad4a8cd67f603. Change a character and press Verify.

What those four checks mean

The first says the record still hashes to its leaf, so not one byte of it moved. The second walks that leaf up the Merkle tree of the day and lands on the day root. The third rebuilds that same root from all 267 leaves published for that day, so the path we handed you cannot have been invented. The fourth links the day to the day before it, which is why a single edited run would have to be followed by every day since. That root is queued for an OpenTimestamps anchor in the Bitcoin blockchain; the .ots file next to the day file carries the stamp.

Your browser never sends anything back. The page holds the day's leaf list, and the authoritative copy is the file the server publishes: https://api.runvouch.com/proof/days/2026-09-10.json, with the timestamp proof next to it at .ots.

Without a browser

The same four checks in 90 lines of standard-library Python, written so it imports nothing of ours:

curl -sO https://runvouch.com/dl/verify_proof.py
curl -s https://api.runvouch.com/proof/days/2026-09-10.json > day.json
curl -s https://runvouch.com/verify-sample.json > proof.json
python3 verify_proof.py proof.json day.json

Your own runs

Every finished run you send gets the same receipt, on the free plan too. Fetch it with rv proof RUN_ID and drop the JSON into the box above, or run the script against it. What is never in the record: your prompts, your outputs and the contents of your files. Only their sizes and hashes.

Why this exists is on verifiable agent runs; the hashing rules are in the proof docs, and the numbers behind this fleet are on in numbers.