aer1-openai-agents
AER-1 verifiable workflow receipts for the OpenAI Agents SDK. One line of integration turns any traced agent run into an offline-verifiable receipt (draft-zambo-aer1, Section 8) covering every model call, tool call, and agent step.
The AER-1 framework collector family
The OpenAI Agents SDK collector in the AER-1 framework collector family. Any agent running on these frameworks can emit verifiable AER-1 execution receipts: every step recorded, hash-chained, one Merkle root over the whole run.
- aer1-smolagents ��� SmolAgents agents via step callbacks
- aer1-openai-agents ��� the OpenAI Agents SDK via its TracingProcessor
- aer1-crewai ��� CrewAI crews via the event bus
- aer1-langgraph ��� LangGraph swarms via callback handler
- aer1-autogen ��� AutoGen multi-agent chats
Plus the aer1 metapackage: pip install aer1, then import aer1; aer1.instrument(). One line, zero config, auto-detects your framework.
Install
pip install aer1-openai-agents
Use (copy, paste, run ��� no API keys needed)
# pip install aer1-openai-agents
import asyncio
from agents import Agent, Runner, function_tool
from agents.testing.model import ScriptedModel, assistant_message, function_call
from aer1_openai_agents import install
@function_tool
def get_weather(city: str) -> str:
"""Get the weather for a city."""
return f"Sunny in {city}"
async def main():
processor = install(goal="Check the weather")
scripted = ScriptedModel(steps=[
[function_call("get_weather", {"city": "Austin"}, call_id="call_1")],
[assistant_message("It is sunny in Austin.")],
])
agent = Agent(name="weather", instructions="Answer briefly.",
tools=[get_weather])
agent.model = scripted # swap for your real model in production
result = await Runner.run(agent, "What is the weather in Austin?")
receipt = processor.finalize(final_answer=result.final_output)
assert processor.verify(receipt) == [] # VALID
processor.save("receipt.json", receipt)
asyncio.run(main())
install() registers the receipt processor directly. Prefer the
standard path in production if you also want the SDK's own tracing
dashboard:
from agents.tracing import add_trace_processor
from aer1_openai_agents import AER1TracingProcessor
processor = AER1TracingProcessor(goal="Summarize the quarterly report")
add_trace_processor(processor)
install() additionally skips the SDK's backend trace exporter, so no
trace data leaves your machine and proxy-heavy environments cannot fail
at registration time. Either way the integration is: register the
processor, run the agent, finalize. The processor implements the SDK's
TracingProcessor interface, the same pattern other observability
integrations use.
What you get
A JSON receipt with the AER-1 Section 8 workflow members:
type,version,workflow_id,receipt_id,session_idgoal,status,output_hash,verify_urlsteps: one per ended SDK span (model calls, tool calls, agent boundaries, handoffs), each withseq,receipt_id,tool,receipt_hash,started_at,ended_at,statusmerkle_root: the Section 8.1 root over the ordered step receipt ids
Each step's receipt_hash is SHA-256 over the canonical JSON of the
span's observed content, so the hash commits to what the agent actually
did. verify() re-checks everything offline: all 14 Table 2/3 member
requirements, seq ordering 1..n, no duplicate step receipt ids, and the
Merkle root recomputed.
Verify
from aer1_openai_agents import verify_workflow_receipt
failures = verify_workflow_receipt(receipt)
assert failures == [] # empty means valid
The processor never touches the network and never changes agent behavior. It only observes.
Spec
Based on draft-zambo-aer1, Section 8 (verifiable workflow receipts). Verification procedure documented at https://datatracker.ietf.org/doc/draft-zambo-aer1/
Metadata
Release files for aer1-openai-agents 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 | |
|---|---|---|---|
| aer1_openai_agents-0.1.3.tar.gz | 11.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aer1_openai_agents-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.9 kB
Release files / aer1_openai_agents-0.1.3.tar.gz
| Download URL | aer1_openai_agents-0.1.3.tar.gz |
|---|---|
| Size | 11.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f432fdf8f89d2d21803ca29b893ce4500832e98eb8b9712844992c38e24a1123
|
|
BLAKE2b-256 checksum How to use checksums |
441128d31458acda7c89371f091e0fa877697619e422298e1250b7264338e552
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
rambo-pypi-grab/0.1.0
|
Release files / aer1_openai_agents-0.1.3-py3-none-any.whl
| Download URL | aer1_openai_agents-0.1.3-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3923ab4ffa4c5196420cee39c01859a586458c76c5e351c4b7598464013af1b3
|
|
BLAKE2b-256 checksum How to use checksums |
3fc5b8f18dd1080590665d282766b01bf2b90017bafafbbae74fa86b8c4996b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
rambo-pypi-grab/0.1.0
|