Skip to main content

Agent Observability

Oodle ingests LLM and agent traces that follow the OpenTelemetry GenAI semantic conventions, and resolves the SDK-specific spellings onto them at ingest. Whichever instrumentation you use, the result is the same: prompts, system instructions, model output, token counts and cost, on one trace.

New to Oodle?

Oodle is a managed observability platform for metrics, logs, traces and agent traces. It ingests OpenTelemetry natively, so the snippet on this page is the complete setup.

Each trace shows the full transcript, the token counts and cost of every call, the agent structure (runs, steps and tool calls) and Signals: labels for loops, rate limits, refusals and tool failures, detected as the trace arrives.

Sign up for free to get an instance ID and an API key, or see the Agent Observability overview first.

Trace detail showing the Transcript tab with system, user, and assistant messages

Pick your instrumentation

Each page below is the setup for one SDK. Every snippet on them is the snippet the matching tile on the ap1, us1 page shows, so the two cannot disagree.

InstrumentationLanguagesGood for
LangfusePython, TypeScriptPrompt management alongside tracing
Vercel AI SDKTypeScriptAgents, steps and tool calls in the AI SDK
eveTypeScriptAgents built on Vercel's eve framework
OpenAIPython, TypeScriptDirect OpenAI SDK calls
LangChainPython, TypeScriptLangChain chains and LangGraph agents
LangGraphPython, TypeScriptGraphs built on StateGraph: nodes, model calls and tool calls
Pydantic AIPythonPydantic AI agents
Google GeminiPythonThe google-genai SDK
LiteLLMPythonOne SDK or proxy in front of many providers
TraceloopPython, TypeScriptOpenLLMetry across many SDKs
OpenLITPython, TypeScriptLLMs plus vector DBs, MCP tools and GPU metrics
OpenAI Agents SDKPythonAgents, tool calls and handoffs in the Agents SDK
CrewAIPythonCrews, tasks and agents
LlamaIndexPythonLlamaIndex agents and workflows
HaystackPythonHaystack pipelines and components
MastraTypeScriptMastra agents, tools and workflows
OpenCodeAnyOpenCode sessions, through the Langfuse OpenCode plugin

Already exporting OpenTelemetry GenAI spans from something not listed here? Point the exporter at Oodle and they are ingested the same way.

Moving from another backend

Every instrumentation above exports over OTLP, so a move to Oodle is an endpoint and a header change, with no change to the application code:

export OTEL_EXPORTER_OTLP_ENDPOINT=https://<OTLP_ENDPOINT>
export OTEL_EXPORTER_OTLP_HEADERS="X-API-KEY=<OODLE_API_KEY>,X-OODLE-INSTANCE=<OODLE_INSTANCE>"

To compare before you switch, add Oodle as a second exporter in your collector, or as a second span processor in the SDK, and remove the old one when you are done. The SDK generates the trace IDs, so a trace you find in one backend is the same trace in the other.

Two ways to export

Every page offers the same choice, and it is only ever an endpoint change:

  • Through a collector. Your application exports to an OpenTelemetry Collector you run, and the collector forwards to Oodle. Redaction and sampling belong here.
  • Straight to Oodle. No collector to run. There is no redaction step in this path, so use the SDK options to limit what is captured.

Setup with an agent

Every integration on this page ships a machine-readable setup spec, so a coding agent can do the work:

npx skills add oodle-ai/agent-skills -y -g

Then, in your agent:

/oodle-onboarding set up the llm_observability_langfuse integration

Swap the last segment for the instrumentation you want, for example llm_observability_vercel.

What you get

  • Traces with the full transcript, at ap1, us1
  • Token counts and cost, per call and aggregated by model
  • Agent structure: agent runs, steps, tool calls and handoffs, where the SDK emits them
  • Signals: model-free behavioural indicators computed at ingest, see Signals

Support

If you need assistance or have any questions, please reach out to us through: