How it works
A sealed file for every agent run
EPI turns an AI agent run into a portable .epi evidence file: steps, hashes, Ed25519 seal, optional policy analysis, optional SCITT / timestamp. You verify offline — no dashboard required to trust the seal.
The loop
- Record —
record()or wrap OpenAI / LangChain / LiteLLM while the agent runs. - Seal — SHA-256 of members + Ed25519 over the canonical manifest → one
.epi. - Verify —
epi verifyor browser private check (file not uploaded). - View —
epi viewopens a forensic timeline in any browser.
Three different questions
Seal
Tampered?
Integrity + signature of this file.
Valid seal ≠ known who
Identity
Who sealed?
KNOWN (org pin) / LOCAL / NOT_PINNED. Unpinned → WARN, not claim-ready.
epi keys trust · --policy strict
Policy
Rules broken?
Optional epi_policy.json + deterministic analyzer. Separate from seal.
epi analyze
What a .epi is
Envelope-v2 polyglot: valid HTML + ZIP payload. Contains manifest.json, hash-chained steps.jsonl, environment, optional analysis, embedded viewer. Change one byte and the signature fails.
Verify modes
- Claims / insurers —
epi verify file.epi --policy strict(org-pinned sealer required). - Offline CLI (dev) —
epi verify file.epi· unpinned identity is WARN · UNVERIFIED IDENTITY. - Private browser — file stays in the tab · /verify/
- Full report — upload to EPI servers · plan quota · deeper hosted report.
See also on this site
- Trust model — seal · identity · policy · SCITT notes
- Integrations — OpenAI, LangChain, pytest, …
- Use cases — where agent decisions need a file