db.
agno_traces and agno_spans in the same db you use for sessions.
Own your traces
Traces are your training data. Every model call, every tool result, every retrieval, every step of every run — that’s the corpus you’d use to fine-tune, evaluate, or build your next agent on. Send it to a third-party observability platform as the only store and you’ve handed over the most valuable data your product generates. AgentOS writes traces to your database by default. You own the schema, the retention, the access patterns. You can still ship a copy to Langfuse or Arize for their dashboards (we even make that easy, see below), but your primary store is yours.What gets captured
Traces follow OpenTelemetry semantic conventions where they exist. The data model is open, so you can query it directly:
In the AgentOS UI
The control plane renders the same traces visually. Click a run and see the full tree: LLM hops, tool calls with their inputs and outputs, hooks, sub-agent traces. Filter by user, session, time range.Multi-database tracing
Traces are high-volume and write-heavy. For production deployments, you’ll often want them in a separate database from sessions and memory — different cost profile, different retention, different access patterns:External providers
Send traces to Langfuse, Langsmith, Arize, or any OpenTelemetry endpoint by adding an exporter. AgentOS still writes to your database first; the exporter is a copy, not a redirect. The full list lives in the Observability section: Langfuse, Langsmith, Arize, Langtrace, Logfire, MLflow, Maxim.Run history
Beyond traces, every run is a row inagno_sessions. Pull a user’s last 100 runs, replay them, compare model versions, build dashboards:
agno_team_sessions) and workflows (agno_workflow_sessions).
Traces are not audit logs
Traces tell you what happened. Audit logs tell you what was approved. They have different retention, different access patterns, and different consumers — and conflating them gets expensive (keeping every trace forever) or risky (deleting audit data your compliance team needs).
For approved actions, see Human Approval. For custom audit shapes, use post-hooks (below).
Audit logs via post-hooks
When you need an audit trail with custom shape (regulatory compliance, internal SOX-style logging), add a post-hook that writes to your own audit table:run_in_background=True keeps the audit write off the response path. See Hooks for the full pattern.