Open format. Locally checkable.

A decision.
Its reasons.
Check them yourself.

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

See the record. Run the check.

This is the actual Rust verifier, compiled to WebAssembly. The example is a signed record from this public repository.

Local execution
01   THE INPUTLoading example…

A portable reason, already signed.

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.

Inspect the exact record JSON +

The original filename stays fixed so changes are checked against the original ID.

Try changing one detail.

Keep its original address. See what the verifier reports.

Optional: your trust configuration +

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.

02   THE RESULTREADY
↗

Your browser is the verifier.

Press Verify to check the real record. This space shows results from the WebAssembly module, never a pre-filled verdict.

  1. 01
    Content identity

    Do the body and referenced bytes match their addresses?

  2. 02
    Signature

    Does this key verify the signed body?

  3. 03
    Portable reason

    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.

Loading build identity…Build details ↗

A RECORD, WITH ITS CONTEXT

Keep the “why” with the decision.

The format travels as plain files. The verifier checks the record you have, on your machine.

01 / RECORD

What happened?

An actor records a propose, accept, reject or supersede decision. Its subject, cited policy, reasons and prior records stay together.

02 / IDENTITY

Which exact bytes?

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.

03 / RE-RUN

Does the reason repeat?

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

“No errors” has a meaning.
It also has a boundary.

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 ↗

Small enough to inspect.
Specified so you can implement it.

Use the CLI, read the format, or build an independent verifier.