Skip to main content

aer1kit: verifiable execution receipts for your hackathon agent

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

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.1
File Size Uploaded Provenance
aer1kit-0.1.1.tar.gz 8.5 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 16.4 kB

Release files / aer1kit-0.1.1.tar.gz

Download URL aer1kit-0.1.1.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
716026d0c540edcb28263c72eb7ba851c0cf8f97e48ac3aea11271bbb1eea359
BLAKE2b-256 checksum
How to use checksums
9ed65bed93b396311c3cb4873da97103390adf9e577a07f579245853585f1749
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via rambo-pypi-grab/0.1.0

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

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

Security for aer1kit 0.1.1

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