Ledger, log, trace: three different records
Log or trace
Written by the system about itself, kept for its own operators. Checking it means trusting the system that wrote it, and the agent whose work is in question is often the thing holding the pen. Right tool for debugging and timing.
Execution ledger
Written by the executing layer at the moment of each call, one receipt per entry, published at public URLs. Checking an entry means recomputing its commitment from its canonical bytes, which anyone can do without trusting the agent, the operator, or the platform. Right tool for proof you hand to someone else.
The two complement each other. Keep traces for how a run behaved; keep the ledger for what the run can prove. The fuller comparison is in the AI agent audit trail guide, and the receipt format itself is defined by AER-1, the open IETF Internet-Draft (draft-zambo-aer1-26) with a public conformance corpus of 126 vectors and 129 checks.
One entry, read closely
Receipt d6949ef2-d6f7-46ec-a902-cf8be1ebeb7a is a real entry from today's stream: tool memory_remember, saved 2026-10-25T14:41:56.661Z, output hash sha256:716f3d7dc745c642ab467e4c999bc8a918e990c1abce72607393a476093aeca1. Its public page shows the saved result, the canonical bytes behind the hash, and the checks, and states the result has not changed since it was saved; the commitment check on the page reads: commitment matched. That is one ledger entry doing its whole job: a stranger can confirm, in about a minute, that this record is the record made when the call ran.
- Existence: the entry sits at a stable public URL, independent of any chat transcript.
- Integrity: recompute the SHA-256 commitment from the canonical bytes, by hand, with aer1-verify, or at zambo.dev/verify.
- Continuity: each entry links to the previous one, so the day reads as one chain of calls, and a job closed with workflow_close also gets a summary receipt with a single root over its entries.
Getting a ledger for your own agent
Connect the agent to https://zambo.dev/mcp (one URL, no API key; per-client steps at zambo.dev/add) and every call it makes files an entry as it runs. The free tier covers 20 free calls per day; a Day Pass ($0.99) covers 24 hours, and the Zambo Pass ($29 for 30 days, one payment) covers ongoing work. Framework routes exist too: Pydantic AI, LangChain, and their siblings receipt the calls an agent makes inside those frameworks.
AI agent execution ledger: FAQ
What is an AI agent execution ledger?
An AI agent execution ledger is the running record of an agent's work where each entry is one tool call's verifiable receipt: the tool that ran, a hash of its arguments, the exact result bytes and their SHA-256 digest, and a timestamp, with each entry linked to the entry before it. Because every entry carries its own commitment, the whole ledger can be recomputed entry by entry, and an edited, missing, or reordered entry breaks the check. On Zambo the ledger is the public receipt stream: every call made through the MCP endpoint at zambo.dev/mcp is filed as an AER-1 receipt as it runs, and anyone can open an entry and check it at zambo.dev/verify.
How is an execution ledger different from an agent log or trace?
A log or trace is written by the system about itself, for its own operators, and checking it means trusting the system that wrote it. A ledger entry is a receipt: a record made by the executing layer at the moment of the call, published at a public URL, with canonical bytes a third party can hash and compare without trusting the agent, the operator, or the platform. Logs answer "what does the system say happened?" A ledger answers "what can anyone check happened?" The two complement each other: traces for timing and debugging, the ledger for the record you hand to a client, a reviewer, or another agent.
How do I check an entry in an AI agent execution ledger?
Open the entry's public page, read the tool, arguments hash, saved result, and timestamp, then recompute the SHA-256 commitment from the entry's canonical bytes and compare it with the stated output hash: by hand, with the aer1-verify kit (v1.5.7, checked against the public AER-1 conformance corpus of 126 vectors and 129 checks), or by pasting the receipt ID into the verifier at zambo.dev/verify. A match proves the saved result has not changed since it was saved. Then follow the link to the previous entry and repeat: the chain is what turns single receipts into a ledger.
How does my agent get an execution ledger?
By running its calls through a layer that files a receipt per call. Connect the agent to the Zambo MCP endpoint at zambo.dev/mcp (one URL, no API key, per-client steps at zambo.dev/add) and every call is entered into the public receipt stream as it runs. The free tier covers 20 free calls per day; a Day Pass ($0.99) covers 24 hours of calls and the Zambo Pass ($29 for 30 days, one payment) covers ongoing work. Multi-step jobs can be closed with workflow_close so the run's entries also bind into one summary receipt with a single root over the set.