Skip to content

Evarness

Prove an AI agent harness before it touches real data.

Simulation-first · Offline-verifiable · Domain-extensible

Run the quickstart Explore live proofs View on GitHub

An agent is a harness plus a model. The model reasons — but the harness, the deterministic scaffolding that routes, gates, and audits every turn, is what decides whether the system is safe to run. Evarness turns a harness's safety story into evidence anyone can check.

See it work — generated by this build

These aren't screenshots. Every artifact below was produced by the Evarness CLI when this site was built, and the build fails if their digests drift from the values the docs cite.

  • Replay a canonical trace

    Scrub a real run event by event — nodes dim until reached, glowing while active — and recompute its digest from the page itself.

    Open the replay

  • See a policy block

    A hostile scenario stopped by the governance layer: the interceptor red, the model node never lit. "A blocked run never reaches the model", visibly.

    Open the blocked run

  • Inspect a portable proof

    A proof bundle rendered as one page — and carrying the entire bundle, so you can extract it and evarness verify it offline.

    Open the proof browser

The four pillars

  • Canonical traces

    Same graph, fixture, and seed ⇒ the same versioned digest (c1:sha256:…) — designed and regression-tested to stay identical across supported machines, operating systems, and Pythons.

    How canonicalization works

  • Invariant contracts

    "A blocked run never reaches the model." "Approval precedes send." Declared in YAML, evaluated on every run — never prose, never folklore.

    Declare your own

  • Proof bundles

    evarness prove runs every scenario twice, checks the contracts, and states what was not proven — inside the bundle itself.

    The end-to-end walkthrough

  • Offline verification

    evarness verify re-checks digests, event chains, and verdict consistency anywhere — no network, no trust in the producing machine's precomputed results.

    What verification means

Sixty seconds to your own proof

pip install evarness==0.1.0a1

# expected: PROOF: PENDING, exit 1 — nothing sends without a human approval
evarness prove approval_gated_send -o proof.json

evarness prove approval_gated_send --approve n3=approve -o proof.json
evarness verify proof.json          # → VERIFY: OK, offline

Your digest should match the v0.1.0 release receipt byte for byte — and either answer is worth telling us about.

What a proof establishes — and what it doesn't

A bundle demonstrates that declared invariants held over scripted scenarios, reproducibly, with the trace as evidence. It does not establish universal safety, and a signature proves integrity — not that the runs happened. Every bundle says this about itself. Scope in Security.

Where next

Status: Alpha, evaluated in the open — on PyPI as the pre-release evarness==0.1.0a1. Simulation-only by design; real providers and tools are refused, never silently substituted. The stable release follows community evaluation.