Verify a receipt.
Every event Langbot emits carries a hash chained to the one before it from the same line, and each chain head is signed every 30 seconds. Paste an event or its id: the hash is recomputed in your browser, and nothing but the id leaves it.
What a match proves.
Exactly this fact, at exactly this time.
The hash covers the phrase, the speaker, the three clocks, the tickers and the link to the previous event from the same line. Change any of them and the hash changes.
- hash
c199ebef7bd3…- prev
3e1025f485d8…- chain
- 2,863
- signed
- every 30 s
key 25fda962
The text is hashed, never shown.
Only the hash of the spoken text enters the receipt, so a redacted event verifies with the same hash and no speech beyond the matched phrase leaves Langbot.
- phrase
- dividend
- source
- Citigroup Q3 call, dial-in
- clocks
- 11:15:34.860 · +409 ms · +410 ms
- markets
KXEARNINGSMENTIONC-26OCT13-DIVI- raw
- withheld, hashed
Anyone can check it offline.
Checkpoints are signed with a published Ed25519 key. A replay file carries every hash, link and signature, and the CLI verifies it with no network.
events 50 chain every hash and link verified checkpoints 1/1 signatures key 25fda962 verified: Langbot emitted exactly these facts at these times.
The same check, from a terminal.
The CLI ships with the Python and TypeScript SDKs. Format and test vector are in the receipts docs.
langbot receipt <evt_id> # hash, chain position, nearest checkpointlangbot replay <event_id> --books --mine > call.jsonllangbot verify call.jsonl # every hash, link and signature, offlinelangbot attest <evt_id> --action '{"side":"yes","count":10}'