Drop a Langfuse trace export or OTLP-JSON file anywhere on the page, or
{ "id": "trace-1", "name": "fix-issue",
"observations": [
{ "id": "o1", "type": "AGENT", "name": "Orchestrator",
"startTime": "2026-09-28T10:00:00.000Z", "endTime": "2026-09-28T10:01:10Z" },
{ "id": "o2", "parentObservationId": "o1", "type": "GENERATION",
"name": "plan", "model": "claude-sonnet-5",
"startTime": "…", "endTime": "…",
"input": [...], "output": "…",
"usageDetails": { "input": 2140, "output": 412 },
"costDetails": { "total": 0.0126 } },
{ "id": "o3", "parentObservationId": "o1", "type": "TOOL",
"name": "get_site_status", "level": "ERROR",
"statusMessage": "timeout", "startTime": "…", "endTime": "…" } ] }
{ "resourceSpans": [{ "scopeSpans": [{ "spans": [
{ "traceId": "…", "spanId": "a1", "parentSpanId": "",
"name": "invoke_agent Orchestrator",
"startTimeUnixNano": "1790000000000000000",
"endTimeUnixNano": "1790000070000000000",
"attributes": [
{ "key": "gen_ai.operation.name", "value": { "stringValue": "invoke_agent" } },
{ "key": "gen_ai.agent.name", "value": { "stringValue": "Orchestrator" } } ] },
{ "spanId": "a2", "parentSpanId": "a1", "name": "chat",
"attributes": [
{ "key": "gen_ai.operation.name", "value": { "stringValue": "chat" } },
{ "key": "gen_ai.request.model", "value": { "stringValue": "claude-haiku-4-5" } },
{ "key": "gen_ai.usage.input_tokens", "value": { "intValue": "812" } },
{ "key": "gen_ai.usage.output_tokens", "value": { "intValue": "96" } } ] }
]}]}]}
Missing fields are tolerated: no agent spans → a root agent is synthesised; no costs → estimated from tokens; unknown span types are classified by name (approval/human, guard/pii, eval/judge, search/retriev). ERROR levels / status code 2 render as failures.