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.
-
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.
-
Inspect a portable proof
A proof bundle rendered as one page — and carrying the entire bundle, so you can extract it and
evarness verifyit offline.
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. -
Invariant contracts
"A blocked run never reaches the model." "Approval precedes send." Declared in YAML, evaluated on every run — never prose, never folklore.
-
Proof bundles
evarness proveruns every scenario twice, checks the contracts, and states what was not proven — inside the bundle itself. -
Offline verification
evarness verifyre-checks digests, event chains, and verdict consistency anywhere — no network, no trust in the producing machine's precomputed results.
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¶
- Evaluating? Live demos, then Prove & verify — what "proof" actually means here.
- Using it? The user guide covers running graphs, declaring invariants, and gating CI; the walkthrough exercises everything with reference digests.
- Extending it? Your first node in five minutes, then a domain plugin without touching core.
- Contributing? Contributing has the design rules; developer onboarding walks the codebase; ideas belong in Discussions.
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.