Instrument your agents
Lookspan ingests spans over HTTP. You can build that payload yourself, but the adapters do it for you — capturing model, tokens, prompt/response and timing with no code rewrite. Pick the one that matches your stack:
| If your agent uses… | Use | Page |
|---|---|---|
| The OpenAI Node SDK | @lookspan/openai |
OpenAI SDK |
| The Anthropic Node SDK | @lookspan/anthropic |
Anthropic SDK |
| An MCP client (tool calls) | @lookspan/mcp |
MCP SDK |
| LangGraph / LangChain / CrewAI (Python) | lookspan + adapter |
Python |
| Any OpenTelemetry exporter | (no SDK) | OpenTelemetry |
| Anything that can POST JSON | (no SDK) | HTTP API |
Shared options
Section titled “Shared options”The TypeScript drop-in observers (observeOpenAI, observeAnthropic) and the
MCP wrapper accept the same option bag:
| Option | Type | Default | What it does |
|---|---|---|---|
endpoint |
string |
http://127.0.0.1:3100/api/ingest |
Where spans are POSTed. |
exporter |
SpanExporter |
— | Bring your own exporter (overrides endpoint). |
agentId |
string |
— | Attribution label shown in the dashboard. |
sessionId |
string |
— | Group traces from related agents into a session. |
parentTraceId |
string |
— | Link this client’s traces to a spawning trace (cross-agent handoff). |
provider |
string |
spec default | Provider label stored on the span. |
captureContent |
boolean |
false |
Capture prompt/response so Replay & judge work. Set true only when the content is safe to persist. Secrets are scrubbed server-side regardless. |
agentId, sessionId and parentTraceId are what power the
sessions & causality view;
captureContent is what enables replay and
LLM-as-judge.
Lookspan is part of Fervon, the autonomous software studio of Jonathan Martín — local-first developer tools built by fleets of AI agents.