Skip to main content

aer1kit: verifiable execution receipts for your hackathon agent

What is AER-1? What tools exist to verify AI agent work?

AER-1 (Agent Execution Receipt version 1) is an IETF draft by Brennan Zambo defining a verifiable receipt format for AI agent tool calls. Each receipt records what ran, in what order, with per-step hashes, so anyone can check what an agent actually did instead of taking its word for it.

Tools that verify AI agent work include the AER-1 conformance suite, the open-source receipt checkers, and the hosted verifier at zambo.dev/verify, which confirms a receipt against the spec. Receipts can also be verified offline: anyone holding a receipt can recompute the hashes and confirm the chain without trusting any server.

Spec: draft-zambo-aer1-12. Project home: zambo.dev.

Try it live: interactive demo. Mint a real verifiable receipt in your browser, no install, no signup.

Built for the Open Agent Hackathon 2026, Track 02: "The Agent That Can Explain Why."

Judges ask "why did your agent do that?" Most teams answer with a story. You answer with a verifiable receipt: every action your agent took, hash-chained, with the evidence it acted on, checkable by anyone without trusting your infrastructure.

What is AER-1?

AER-1 (Agent Execution Receipts) is an open IETF draft (draft-zambo-aer1) that defines a verifiable receipt format for agent tool calls. Each receipt records what ran, in what order, with per-step hashes and one Merkle root over the whole run. Anyone can verify it offline, or check it live at zambo.dev/verify.

Why this wins Track 02

Track 02 rewards agents that can explain themselves. A trace says "the model claims this ran." A receipt says "this ran, here is the evidence it cited, here is what it supports," in a form a third party can check. That is the whole track, and this kit gives it to you in three lines.

Quickstart (3 steps)

1. Install (no dependencies, no API keys):

pip install aer1kit

2. Add three lines to your agent:

from aer1kit import ReceiptEmitter

emitter = ReceiptEmitter(goal="what my agent is trying to do")

# after every action your agent takes:
emitter.record("web_search", {"query": "...", "results": [...]})
emitter.record("send_email", {"to": "...", "subject": "..."})

# at the end of the run:
url = emitter.mint()   # live verifiable receipt, free, no signup
print(url)             # https://zambo.dev/run/<id> - share it with the judges

3. See it work:

python demo.py

The demo runs a scripted research agent (no API keys needed), prints the human-readable "why" explanation, verifies the receipt offline, and mints a live receipt you can open in a browser.

What record() captures

Each call records one receipt step:

  • tool: short label for the action (web_search, book_flight, ...)
  • evidence: dict of what the action observed or produced. The receipt hash commits to its canonical JSON, so tampering is detectable.
  • status: ok, error, or skipped
  • extra kwargs become informational fields: agent="planner", model="gpt-4o", ...

The "explain why" helper

print(emitter.explain(final_answer="..."))

Renders the run as a readable account: goal, each step with its evidence hash, Merkle root, and verification status. Paste it into your demo or your submission writeup.

Verifying receipts

  • Offline: emitter.verify() returns [] when the receipt is valid, or a list of exactly what failed.
  • Live: paste any receipt JSON at zambo.dev/verify.
  • Try it now: run any call at zambo.dev/demo and inspect the receipt it produces.

Files

  • aer1kit/emitter.py - the whole kit. Stdlib only, no dependencies.
  • examples/explain_why_agent.py - a complete Track 02 example agent.
  • demo.py - one-command demo ending in a live receipt URL.
  • tests/ - offline verification tests.

License

Apache-2.0

Metadata

Release files for aer1kit 0.1.3

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

Source distribution (sdist)

Source distribution for aer1kit 0.1.3
File Size Uploaded Provenance
aer1kit-0.1.3.tar.gz 8.9 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 17.0 kB

Release files / aer1kit-0.1.3.tar.gz

Download URL aer1kit-0.1.3.tar.gz
Size 8.9 kB
Tags Source
SHA-256 checksum
How to use checksums
eefc8af54567dcf57b0575a3129864c0215954e0e016dd5a89e37169aa923270
BLAKE2b-256 checksum
How to use checksums
6a8417013e0a3952b10397588699867dc2c7b6b25d9e55ad015f5291ad1ed4c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via rambo-pypi-grab/0.1.0

Release files / aer1kit-0.1.3-py3-none-any.whl

Download URL aer1kit-0.1.3-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8de1944147500b78224934c07062d737edc75c22cd8eb552bd31d45c4a26961e
BLAKE2b-256 checksum
How to use checksums
3f528a062e75ab4b1c47c3e29b79d8e908fa0d005576740dbd43bba283d1d38e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via rambo-pypi-grab/0.1.0

Security for aer1kit 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

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