Skip to main content

crewai-aer1

AER-1 verifiable execution receipts for CrewAI crews. One checkable receipt per tool call, emitted through CrewAI's own typed event bus. No changes to your Crew, Agent, or Task definitions.

Quickstart

from crewai import Agent, Crew, Task
from crewai_aer1 import AER1Listener

receipts = AER1Listener()  # keep this reference alive for the process

researcher = Agent(
    role="Researcher",
    goal="Find verifiable facts",
    backstory="A careful analyst.",
    tools=[my_search_tool],
)
task = Task(description="...", expected_output="...", agent=researcher)
crew = Crew(agents=[researcher], tasks=[task])

crew.kickoff()
receipts.save("receipts.jsonl")
print(f"{len(receipts.receipts)} verifiable receipts recorded")

That is the whole integration. The listener subclasses CrewAI's BaseEventListener and registers handlers for ToolUsageFinishedEvent (and CrewKickoffStartedEvent for crew context) on the singleton event bus in setup_listeners. Because the bus is process-wide, every crew you kick off is covered with zero code intrusion. Just make sure the module that instantiates AER1Listener is imported, and the instance stays alive (not garbage collected), or handlers stop firing.

What a receipt proves

Each receipt follows the AER-1 receipt record (IETF Internet-Draft draft-zambo-aer1, Sections 3-6): a stable id, RFC 3339 timestamp, tool identity, provenance class (EXECUTED BY CREWAI), base64 canonical bytes, and a SHA-256 output commitment anyone can recompute. A receipt proves the recorded bytes were not changed after the tool ran. It does not prove the tool was correct.

Honest boundaries, enforced in code:

  • Cached tool results (from_cache=True) are skipped. Nothing executed, so there is nothing to attest.
  • Tool calls the tool itself reported as failed are skipped. There is no successful result to commit to.
  • A listener exception never breaks a crew run. Every handler is guarded.

Verify a receipt yourself

from crewai_aer1 import verify_receipt
ok, reason = verify_receipt(receipts.receipts[0])

Spec and conformance

License

MIT

Metadata

Release files for crewai-aer1 0.1.0

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

Source distribution (sdist)

Source distribution for crewai-aer1 0.1.0
File Size Uploaded
crewai_aer1-0.1.0.tar.gz 6.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for crewai-aer1 0.1.0
File Interpreter ABI Platform
crewai_aer1-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.8 kB

Release files / crewai_aer1-0.1.0.tar.gz

Download URL crewai_aer1-0.1.0.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5a3118845f77b4f5b7f9345bba62bb9d99cd300daff0b6deb322bd798853f201
BLAKE2b-256 checksum
How to use checksums
54c216a6ab9150962aeb8859b05346bf47fca9876e6d947b64471765056938e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via rambo-pypi-grab/0.1.0

Release files / crewai_aer1-0.1.0-py3-none-any.whl

Download URL crewai_aer1-0.1.0-py3-none-any.whl
Size 6.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
01158b3b2336386497774bffb96f778855b504a486f96880d1283a17f110431e
BLAKE2b-256 checksum
How to use checksums
1f3b7d97804534a65c9ac90e900c7f316c517f6045371b7d142f5cb53da9fc14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via rambo-pypi-grab/0.1.0

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

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