Stop relying on screenshots. Execution Proof Infrastructure (.epi) is the open standard for Verifiable Execution. It captures code, context, and computation into a verifiable signed receipt that works everywhere.
From code execution to sealed evidence in seconds.
99% installation success rate. Universal one-command installer for all platforms.
One-line callback for 100+ LLM providers. OpenAI, Anthropic, Cohere, Mistral, Azure, Bedrock - all recorded.
EPICallbackHandler captures LLM calls, tool invocations, chain steps, and agent
decisions.
pytest --epi generates signed .epi evidence per test. Built-in
CI/CD audit trails.
Verify .epi
integrity in every PR. Auto-fails on tampered evidence. Step Summary dashboard.
EPISpanExporter bridges OTel spans into signed .epi files.
One-line setup.
OpenAI
stream=True
auto-captured. Real-time chunks yielded, assembled response logged with token usage.
curl -sSL https://raw.githubusercontent.com/mohdibrahimaiml/epi-recorder/main/scripts/install.sh | sh
iwr https://raw.githubusercontent.com/mohdibrahimaiml/epi-recorder/main/scripts/install.ps1 -useb | iex
epi command not found, use
python -m epi_cli (100% reliable)
From code execution to sealed evidence in seconds.
epi run <script.py>
Zero-config recording. Auto-verifies and opens viewer. Simplest way to record.
Shippedepi record --out <file.epi> -- <cmd>
Advanced recording with explicit output filename. Record any shell command.
Shippedepi verify <file.epi>
Verify integrity and authenticity (structural, integrity, signature checks).
Shippedepi verify <file.epi> --verbose
Verbose verification output with detailed check results.
Shippedepi verify <file.epi> --json
Output verification results as JSON for CI/CD integration.
Shippedepi view <file.epi>
Open recording in browser with interactive timeline viewer.
Shippedepi ls
List all recordings in ./epi-recordings/ directory.
Shippedepi doctor
Shipped in v2.1.1: Self-healing diagnostics. Auto-detects and repairs PATH issues.
Shippedepi keys list
List all Ed25519 keypairs in your keystore.
Shippedepi keys generate
Generate a new Ed25519 keypair (auto-generated on first use).
Shippedepi keys generate --name <keyname>
Generate a named keypair for team/project separation.
Shippedepi keys export --name <keyname>
Export public key for sharing with verifiers.
Shippedepi --help
Show all available commands and usage information.
Shippedepi help
Show extended quickstart guide with examples.
Shippedepi version
Show EPI version information (currently v2.8.7).
Shippedepi <command> --help
Get detailed help for any specific command.
Shipped@record
Decorator to record a function. @record(goal="test")
with record("file.epi", goal="...")
Context manager. Tip: Always provide an explicit filename when adding
metadata like goal or metrics.
epi install --global
Auto-record all Python processes via sitecustomize.py. Idempotent and safe.
epi uninstall --global
Remove auto-recording cleanly. One command.
ShippedEPI evidence bundles are now first-class OS citizens natively wired to your environment. Double-click any .epi file on Windows, macOS, or Linux to seamlessly launch the isolated viewer without terminal intervention.
$ epi associate # Register .epi file extension natively
$ epi unassociate # Cleanly remove global registry bindings
import litellm
from epi_recorder.integrations.litellm import EPICallback
litellm.callbacks = [EPICallback()] # That's it
response = litellm.completion(model="gpt-4", messages=[...])
response = litellm.completion(model="claude-3-opus", messages=[...])
# Every call -> signed .epi evidence
from langchain_openai import ChatOpenAI
from epi_recorder.integrations.langchain import EPICallbackHandler
llm = ChatOpenAI(model="gpt-4", callbacks=[EPICallbackHandler()])
result = llm.invoke("Analyze this contract...")
# Captures: LLM, tools, chains, retrievers, agents
client = wrap_openai(OpenAI())
with record("stream.epi"):
stream = client.chat.completions.create(
model="gpt-4", stream=True,
messages=[{"role": "user", "content": "Write a poem"}]
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
# Assembled response + token usage logged automatically
$ pytest --epi --epi-dir=evidence
======================== EPI Evidence Summary ========================
OK test_auth_flow.epi (signed, 12 steps)
OK test_payment.epi (signed, 8 steps)
OK test_refund.epi (signed, 6 steps)
======================================================================
- name: Verify EPI evidence
uses: mohdibrahimaiml/epi-recorder/.github/actions/verify-epi@main
with:
path: ./evidence
fail-on-tampered: true
from epi_recorder.integrations.opentelemetry import setup_epi_tracing
setup_epi_tracing(service_name="my-agent")
# All OTel spans -> signed .epi files automatically