DocsAdapters
Adapters
The SDK captures agents you wrote. Adapters capture the rest: model traffic behind a gateway, runs inside the OpenAI Agents SDK, and finished calls a voice platform reports by webhook. Each supplements the SDK; none replaces it — a gateway sees only what crosses it.
- OpenAIEvery model call, and handoffs between agents
- AnthropicEvery model call
- LangChainChains, tools and retrievals as they run
- LiteLLMEverything behind your gateway, including agents you did not write
- VapiFinished calls, and proof the AI disclosure played
- OpenTelemetryWhatever you already trace
- Amazon S3Write-once storage, where not even we can delete
LiteLLM gateway
One callback line captures every model call from every agent behind the gateway — including agents whose source you don't control — with MCP tool calls promoted to first-class tool_call events rather than buried in metadata.
callbacks: auditant.gateway.handler
curl $GATEWAY/v1/chat/completions \
-H "Authorization: Bearer sk-agent-loan-underwriter" \
-H "x-auditant-agent: loan-underwriter" \
-H "x-auditant-session: sess_b0f9c646" \
-d '{"model":"claude-sonnet-4-5","messages":[…]}'OpenAI Agents SDK
One line on the trace-processor bus:
import auditant from auditant.openai_agents import install handle = auditant.init(api_key="ak_…", log_id="t_…/prod", agent_id="support-bot") install(handle)
generation / response → model_call tokens observed function → tool_call name + input/output hashes handoff → delegation which agent handed to which guardrail (triggered) → policy_decision blocked, on the chain
Handoffs matter more than they look: multi-agent delegation is the case supervisors name as hardest to reconstruct, and here it is a first-class chained event.
Voice & vendor webhooks
Voice platforms report finished calls by webhook; the ingest endpoint maps them to lifecycle, per-turn decisions, tool calls — and a first-class disclosure event recording whether the “you are talking to an AI” line was actually played on this call, which nobody else produces as provable record.
POST /v1/ingest/voice/vapi?log=t_…%2Fprod x-auditant-webhook-secret: <AUDITANT_WEBHOOK_SECRET>
The webhook secret is deliberately not the API key: a vendor's webhook config screen is the least protected place a credential lives, so this one can write events and do nothing else — leaking it costs spam, never disclosure.