Integrations
Every integration the SDKs document, and nothing they do not
Coding agents in one command; LLM clients, agent frameworks and web frameworks through one init(); any OpenTelemetry setup you already run. Each page carries the real snippet, what you see, and the limits.
Coding agents
One command points the agent’s own telemetry at your environment. Each turn arrives as one trace: the main agent, every subagent, and everything they did.
- 01Claude CodeClaude Code exports OpenTelemetry itself; one command turns every turn into a trace with its subagents nested where they ran.
- 02Codex CLICodex already speaks OpenTelemetry; the installer writes one managed [otel] block and the receiver keeps the turn, not the plumbing.
- 03Gemini CLIGemini CLI’s native spans become one tree per turn; the installer only edits its telemetry block and header line.
- 04CursorCursor exports nothing, so the hook builds the trace: deterministic span ids, tool spans with their real interval, subagents under their tool call.
- 05WindsurfSix hooks turn a Cascade execution into one trace: commands, code writes, reads and MCP tool use as tool spans under the turn.
- 06OpenCodeA plugin file with no key inside turns OpenCode’s session, message and tool events into the same span shapes as every other agent.
LLM clients
Auto-instrumented by init(). Every call is a span with model, latency and tokens; streams carry time to first token.
- 01OpenAIinit() once; every OpenAI call is a span with model, latency, tokens and, on streams, time to first token.
- 02AnthropicSync and async Anthropic clients are traced automatically; extended-thinking deltas mark first token and are kept apart from the completion.
- 03Amazon BedrockBedrock is traced through the AWS SDK you already use, with time to first token on converse and invoke streams.
- 04CohereCohere is in both SDKs’ auto-instrumented client list; no wrapper needed.
- 05Google Gemini (GenAI SDK)The Google GenAI client is auto-instrumented in both SDKs, sync and async, streaming included.
- 06Vertex AIVertex AI is traced like every other client; Python also covers Anthropic models served through Vertex.
- 07MistralMistral is in the Python SDK’s auto-instrumented client list; nothing to wrap.
- 08OllamaOllama streams carry the same time-to-first-token attribute as every hosted provider, so local and hosted latency are comparable.
Agent frameworks
Chains, graphs and agent SDKs land as nested spans under the request that ran them.
- 01LangChain and LangGraphChains, graphs and their tool calls land as nested spans; LangChain tools are automatic, no trace_tool needed.
- 02LiteLLMOne init() covers every provider LiteLLM routes to, with streaming latency recorded the same way.
- 03Claude Agent SDKOut-of-process agent runs are still traced: the wrapper reads tokens, cost and latency from the ResultMessage.
Web frameworks
One middleware line per framework. Each incoming request becomes a root trace with the model, database and HTTP calls it made nested underneath.
- 01FastAPI and StarletteOne middleware line: each request is a root trace, and the authenticated user in scope["user"] becomes its user id.
- 02Flaskinstrument_flask(app) is the whole integration; the request tree fills in from the auto-instrumented clients.
- 03DjangoOne MIDDLEWARE entry; the authenticated request.user becomes the trace’s user id.
- 04ExpressOne app.use(); each incoming request is a root trace and everything it calls hangs beneath it.
- 05FastifyfastifyPlugin() is the adapter; the rest is the same init() as every other Node.js app.
- 06KoakoaMiddleware() is the adapter; the rest is the same init() as every other Node.js app.
- 07HonohonoMiddleware() is the adapter; the rest is the same init() as every other Node.js app.
- 08hapihapiPlugin() is the adapter; the rest is the same init() as every other Node.js app.
- 09NestJSNestJS exposes a DI registry, so one line traces every provider and controller method, guards and decorators intact.
OpenTelemetry
Already running OpenTelemetry? Keep it. evalkit attaches to your provider and bridges the spans your own instrumentation produces.
Next steps
Start with the integration you already run
Tracing is free for one project on every plan. Evaluations, datasets and simulation are Pro and up.
Choosing between tools? See how Syntropylabs compares with Braintrust, Langfuse, Confident AI and others, or read the documentation.