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, orskipped- 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.
Links
- Hackathon: https://hackathon.genai.works/event/open-agent-hackathon-2026
- Live demo: https://zambo.dev/demo
- Live verifier: https://zambo.dev/verify
- AER-1 IETF draft: https://datatracker.ietf.org/doc/draft-zambo-aer1/
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aer1kit-0.1.3.tar.gz | 8.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.