One agent execution = one trace. Wrap the run in a single root span so every model and tool call nests under it. See the trace contract.
OpenAI Agents traces render fully in Lemma today. Automated issue detection is being expanded to this shape — see Good trace vs bad trace for current status.
Recipe
Register the Langfuse → Lemma exporter
Register the exporter once at startup, before any agent runs. This matches Setup.Set the environment variables. Lemma-only export needs no
LANGFUSE_* credentials.Enable Agents SDK instrumentation
Enable the OpenInference instrumentation for the Agents SDK so model calls, tool calls, and handoffs are captured as spans. Follow the Langfuse OpenAI Agents guide for details.
Wrap the whole run in one root span
Wrap Every span the Agents SDK emits inside the
Runner.run in a single Langfuse root span so every step of the agent nests under one trace. Record the input and the final output on the root, and set a stable agent name.with block becomes a child of the root, producing one nested trace:Verify in Lemma
Open the Lemma dashboard → Traces and confirm:- One trace per run — a full agent run is one trace, not one per model call.
- Root has input and output — the root span shows the user message and the final output.
- Generations are nested — each model call appears as a child generation with model and token usage.
- Tools are nested — each tool invocation appears as a child tool span with arguments and result.
Next steps
Trace contract
The exact shape Lemma reads.
Setup
Wire the Langfuse → Lemma exporter.
Threads and sessions
Group multi-turn conversations with a thread id.
Good vs bad traces
What issue detection looks for, per shape.