Provider-Native Trace Links
Provider-native trace links are deep links to external trace UIs — such as LangSmith, the OpenAI tracing dashboard, or Google Cloud Trace — that let you jump directly from Pavri to the provider's view of the same execution.
What Trace Links Are
When your agent runs on a framework that has its own tracing system, Pavri captures a reference to that external trace. This reference includes:
- artifact_id — a unique identifier for the trace link
- url — the deep link to the external trace UI
- provider — which tracing system the link points to
- session linkage — the Pavri session and agent IDs that own this trace
- status — whether the link is active, verified, or stale
Trace links are not copies of the external trace data. They are pointers that let operators navigate between Pavri and the provider's native tooling.
Supported Providers
| Provider | Framework | Notes |
|---|---|---|
| LangSmith | LangGraph / LangChain | Trace runs in LangSmith UI |
| OpenAI | OpenAI Agents SDK | OpenAI's native OTel tracing |
| Anthropic | Claude SDK | Limited native tracing; link support planned |
| Google ADK | Google Cloud Trace integration | |
| AutoGen | AutoGen | AutoGen's logging-based trace output |
| OTel | Any | Generic OpenTelemetry trace ID linkage |
| Custom | Any | User-provided trace URLs |
How Capture Works
During tool execution and other instrumented operations, SDK plugins call the trace link collector to record external trace references. The capture happens as part of the plugin's hook execution — no additional user code is needed.
The planned flow:
- The framework plugin detects an active external trace (for example, a LangSmith run ID or an OpenAI trace ID).
- The plugin calls the trace link collector with the provider, URL, and artifact ID.
- The collector associates the link with the current session and agent.
- The link is forwarded to the Pavri backend as part of the session's telemetry.
What's Stored
Each trace link record contains:
| Field | Description |
|---|---|
artifact_id | Unique identifier for this trace link |
url | Deep link to the external trace UI |
provider | Trace provider enum (e.g., langsmith, openai, google) |
session_id | Pavri session that owns the trace |
agent_id | Pavri agent that produced the trace |
status | Lifecycle status: active, verified, or stale |
captured_at | Timestamp when the link was captured |
Viewing in the Dashboard
Trace links for a session are visible at:
/sessions/[sessionId]/traces
The trace view shows each captured link with its provider, status, and a clickable URL that opens the external trace UI in a new tab.
Status Lifecycle
Trace links have a three-state lifecycle:
| Status | Meaning |
|---|---|
active | The link was captured during execution. The external trace may still be in progress. |
verified | The Pavri backend has confirmed the external URL is reachable. |
stale | The external trace has expired, been deleted, or is no longer reachable. |
Links start as active at capture time. The backend periodically checks link reachability and promotes them to verified or marks them stale.
Retention
Trace links are retained for 90 days, matching the session retention window. When a session ages out of retention, its trace links are removed as well.
Per-Framework Provider Mapping
Each framework plugin maps to a default trace provider:
| Framework | Default Trace Provider | External UI |
|---|---|---|
| LangGraph / LangChain | langsmith | LangSmith trace viewer |
| OpenAI Agents SDK | openai | OpenAI dashboard traces |
| Claude SDK | anthropic | Limited; Anthropic does not expose a full trace UI |
| Google ADK | google | Google Cloud Trace |
| AutoGen | autogen | AutoGen logging output |
| CrewAI | otel | Generic OTel (via AgentOps or Langtrace) |
What's Deferred
- Backend link-reachability verification loop (links start as
active; promotion toverifiedorstaleis not yet automated). - TypeScript SDK trace-link capture parity (Phase 2).
- Advanced trace analytics beyond the per-session trace view.