Every authorization decision, agent identity, and attestation Liceat records is a leaf in one append-only Merkle log. From the signed tree head below — the root, signed by the key at /.well-known/liceat-jwks — anyone can prove a record is in the log and that the log has only ever grown. No blockchain, no gas — the same non-repudiation guarantee that secures the web's certificates (Certificate Transparency), computed here instantly and for free. Verification below runs entirely in your browser.
Beyond tamper-evidence: the operator cannot even show two
different histories. Independent witnesses co-sign each checkpoint, but only after verifying a
consistency proof from the last size they signed — so no honest witness can endorse a fork. Anyone
can run one (import { Witness } from 'liceat') and post cosignatures to
/transparency/cosign.
npx liceat witness --gateway https://liceat.com --watch.Beyond witnesses: each checkpoint root is timestamped into Bitcoin via
OpenTimestamps — no wallet, no gas, no account. Only the 32-byte root hash is submitted, so nothing private
ever touches a public chain. Even if this gateway and every witness vanished, anyone holding a checkpoint and
its .ots proof can prove to Bitcoin's own timestamp that the root existed. The proofs are standard
detached OpenTimestamps files — verify them with any ots verify client, or offline with the SDK
(import { verifyOts } from 'liceat').
Every log-signed root is published to an append-only history at
/transparency/checkpoints. Mirror it, archive it, diff it: any later attempt to present a
different root for a size that already appears here is a self-evident fork. Non-equivocation with
no blockchain and no gas — the signed history is the anchor.
The proof math is public and ships in the SDK — you never have to trust our server:
import { verifyInclusion, verifyConsistency, leafHash } from 'liceat';
// fetch /transparency/sth and /transparency/inclusion?seq=N, then:
verifyInclusion(seq, treeSize, leafHash(leafData), proof, rootHash); // → true