What happened?
An actor records a propose, accept,
reject or supersede decision. Its
subject, cited policy, reasons and prior records stay together.
Open format. Locally checkable.
An AI agent made a decision. A Warrant keeps the record: what it decided, which rules it cited, and why. You can check the bytes, the signature, and run portable reasons again.
No account. No upload. Runs on your device.
THE BROWSER LAB
This is the actual Rust verifier, compiled to WebAssembly. The example is a signed record from this public repository.
This small ski@v1 example expects a computation to
produce a particular content hash. Run it here and compare the
fresh result with the filed verdict.
Open a .warrants folder, or choose a single record
JSON. A single record may report missing blobs or prior records.
8 MiB · 2,048 files · stays in memory
The original filename stays fixed so changes are checked against the original ID.
Keep its original address. See what the verifier reports.
Default checks use base grade. Import your own local trust-config to request settlement grade. The example's signing key is not automatically trusted.
No trust configuration supplied.
Settlement follows the current implementation, including its documented limits. It is not an authorization recommendation.
Press Verify to check the real record. This space shows results from the WebAssembly module, never a pre-filled verdict.
Do the body and referenced bytes match their addresses?
Does this key verify the signed body?
What does the ski@v1 check produce when run
again?
A valid signature proves which key signed. It does not prove the actor's identity, the facts, or that a decision was authorized.
A RECORD, WITH ITS CONTEXT
The format travels as plain files. The verifier checks the record you have, on your machine.
An actor records a propose, accept,
reject or supersede decision. Its
subject, cited policy, reasons and prior records stay together.
The canonical body has a SHA-256 identity. Ed25519 signatures cover a protocol-specific message containing that ID. Referenced blobs have their own content addresses.
A ski@v1 check runs again against the supplied blobs.
A prose reason remains prose; cmd@v1 is not executed
by this browser.
READ THE RESULT PRECISELY
ok: true means the requested verification reported zero
errors. Warnings still matter. An unbound key can verify
cryptographically while remaining untrusted.
ATP limits priced computation; it does not bound all browser memory or elapsed time. This demo also limits input size, uses a separate worker, and stops unfinished work after 12 seconds. A stopped run is incomplete, never a passing report.
Changing a record and signing it yourself creates your own record. Warrant does not decide whether its facts are true or its policy is good.
Read the current limits ↗