Network Graph
Multi-agent visualization. See which agent did what, when, and to whom.
Network Graph
The Network Graph surface at /dashboard/graph is a force-directed canvas that shows how the agents in your system relate to one another and how a single run unfolds. It answers the questions logs cannot: which agent handed off to which other agent, where cost concentrates, which boundaries error, and how one trace fanned out across spans. It lives under the Observe chapter.
Two modes
The graph renders in one of two modes.
Aggregate mode plots your fleet over a time range. Nodes are agents and edges are cross-agent calls. Node size and fill encode cost, a red ring marks errors, and edge thickness encodes cost flow between two agents. Pick a window with the time-range buttons: 1h, 24h, 7d, 30d, or All. The view auto-refreshes about every 10 seconds, so an open dashboard tracks live traffic without a manual reload.
Trace mode drills into a single run. The graph renders that run as a span tree: parent-to-child edges with status-colored nodes. Choose the run from the recent-trace picker. Use this when you want the exact shape of one request rather than the aggregate topology.
Detail panels
Clicking an element opens a side panel.
- Node panel. For an agent node, the panel lists traces, events, errors, and cost, plus an AIP-verified badge.
- Edge panel. For a cross-agent edge, the panel shows calls, errors, blocked count, p50, p95, and cost.
- Span panel. In trace mode, clicking a span opens its detail.
How edges are drawn
The graph is powered by cross-agent trace propagation. When one agent calls another, the originating trace and agent are recorded, and the graph draws the edge between them. The canvas is backed by GET /v1/graph.
Auto-linking ships in the Python SDK today: Python-to-Python calls draw their edges with no extra wiring. The TypeScript SDK currently reads an inbound traceparent but does not yet inject it for outbound calls, so TypeScript-to-TypeScript auto-linking is not available yet.
TypeScript-to-TypeScript edges are not auto-linked yet. The TypeScript SDK reads an inbound traceparent but does not inject one for outbound calls.