Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Evarness

Prove an AI agent harness before it touches real data.

ci pypi release license python

Documentation · Live demos · Tutorials · Blog · Discussions · Studio

Your agent has an approval gate in front of its send tool — but yesterday's refactor may or may not have kept every path behind it, and when a security review asks you to demonstrate that nothing sends without a human, a green test suite isn't a demonstration. Evarness is harness assurance: run the harness in simulation, prove its declared rules held, and hand anyone a proof bundle they can verify on their own machine.

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 its safety story into evidence anyone can check.

Why Evarness

  • Canonical traces — same graph, fixture, and seed ⇒ the same digest (c1:sha256:…) — designed and regression-tested to stay identical across supported machines, OSes, and Pythons. Reproduced, not asserted.
  • Invariant contracts — "a blocked run never reaches the model", "approval precedes send": declared in YAML, checked on every run.
  • Proof bundles — evarness prove runs every scenario twice, evaluates the contracts, and states what was not proven, in the bundle itself.
  • Offline verification — evarness verify re-checks any bundle with no network and no trust in the machine that produced it. Signing optional.

Simulation is the point, not the limitation

Every model and tool response comes from a scripted fixture — which is precisely what makes hostile scenarios exact, repeatable, and safe to run a thousand times. The harness is the deterministic part of an agent: the gates, routes, redactions, and budgets. If you can't prove the deterministic part holds, the model's quality is irrelevant — a leak through an unguarded edge doesn't care how good the model was. You're proving the seatbelt, not the driver. Real providers and real tools are refused with an actionable error, never silently simulated: this package makes no network calls, by design.

Try it in sixty seconds

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

The digest challenge: your digest should match the v0.1.0 release receipt byte for byte. If it doesn't, that's a bug — file it. If it does, you just reproduced the product's central claim on your own machine. Every command runs headless: validate | run | render | prove | verify | export | patterns.

See it before you install it

The live demos are generated by Evarness itself when the docs site builds — a replay you can scrub, a blocked run stopping before the model, and a proof browser carrying a real bundle you can extract and verify. The site build fails if their digests drift.

Learn

Build with us

Evarness is a young project with a big thesis: evarness.core is a domain-agnostic assurance kernel — graphs, events, digests, contracts, proofs — and agents are its first domain, built entirely through public, typed extension seams. The same machinery can govern ML pipelines, data flows, any workflow where "we always do X before Y" deserves to be a verified contract instead of a wiki page. That future is exactly what we want to build with the community:

  • Run it and tell us. prove → verify on your machine — did the digest match the release receipt? Either answer helps.
  • Build a node. The five-minute tutorial is real: three files, no core changes, your event in the canonical trace.
  • Dream up a domain. If your pipeline has rules worth proving, start a discussion — domain packs are the project's future, and early ideas shape the seams.
  • Found something wrong? A graph, a fixture, and a seed make a perfect, deterministic bug report — open an issue.

See CONTRIBUTING.md for the design rules (determinism contract, verdicts never touch evidence, refuse-don't-degrade) — they're what make the project provable, and they're enforced kindly but firmly.

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.md.

Status

Alpha, evaluated in the open. This first release is the assurance spine, simulation-only — on PyPI as the pre-release evarness==0.1.0a1. Real providers, sandboxed tools, and adapters for other agent frameworks are on the roadmap, each arriving as a separately proven release. The stable 0.1.0 follows community evaluation — that gate hasn't moved. The optional visual client is Evarness Studio — nothing here requires it.

License

Apache-2.0.

Metadata

Release files for evarness 0.1.0a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evarness 0.1.0a1
File Size Uploaded
evarness-0.1.0a1.tar.gz 164.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evarness 0.1.0a1
File Interpreter ABI Platform
evarness-0.1.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 319.2 kB

Release files / evarness-0.1.0a1.tar.gz

Download URL evarness-0.1.0a1.tar.gz
Size 164.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fafb73b5ec9f6d23ce5efd5021f662652274cdc991f719b39c8fe2f26bb952f0
BLAKE2b-256 checksum
How to use checksums
f7697b97f7bf6f6f42bbf863dee5f920b3e44b17eeaa4f76801531d88ffaddc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release files / evarness-0.1.0a1-py3-none-any.whl

Download URL evarness-0.1.0a1-py3-none-any.whl
Size 154.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1286077770871fbb4d8024e56ca8727f1d312a3298ade0a159c8420b4bd0043c
BLAKE2b-256 checksum
How to use checksums
c585564601bf825311abc4ab8d30bf08791927ba66eb840af4d25be15f9d67e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

0.1.0a1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page