Agnost AIAgnost AIBook a demo
Open +
← All articles

Agent Observability by Framework: A Practical Monitoring Guide

Find the right monitoring guide for CrewAI, LangGraph, LangChain, OpenAI Agents, Agno, DSPy, Pydantic AI, Mastra, Vercel AI SDK, VoltAgent, and Spectrum-TS.

Monitoring an AI agent means understanding what a user requested, how the application executed it, and what happened afterward. The instrumentation boundary changes with the framework. A persistent graph needs pause and resume context. A streaming assistant needs completion and cancellation handling. An optimized program needs the identity of the artifact that actually served the request.

This collection explains those differences and how to observe them with Agnost AI, an agent analytics, observability, and monitoring platform. Each guide includes an integration boundary, production failure patterns, and the limits of the evidence it records.

Agnost demo overview showing conversation insights, user intents, agent violations, and tool errors
Product demo · illustrative data. Start with a recurring user problem, then inspect the conversations and execution evidence behind it. These figures are sample data, not customer results or a framework benchmark.

Choose your framework

Framework Start here Main question the guide addresses
CrewAI Tasks, delegation, and outcomes Which part of the crew caused the result to go wrong?
LangGraph State, interrupts, and retries Did the workflow finish, fail, or pause intentionally?
LangChain Retrieval, tools, and answers Did the agent receive and use the right evidence?
OpenAI Agents SDK Handoffs and tool execution Did routing and tools move the user toward completion?
Agno Agents, teams, and sessions Can you connect team activity with the user’s session?
DSPy Optimized programs in production Which program artifact produced a prediction?
Pydantic AI Validation and real correctness Is the output merely valid, or actually correct?
Vercel AI SDK Streaming and completion What did generation complete, and what did the user receive?
Mastra Agent and workflow traces Where did execution diverge from the intended action?
VoltAgent Conversations and tool results Can you trace an action back to its request?
Photon Spectrum (Spectrum-TS) Messaging and delivery Was a reply generated, accepted for sending, or delivered?

Understand the two integration levels

Conversation tracking records the application boundary you choose: usually a user request and a public response. Agnost’s Python package is agnost; its TypeScript conversation package is agnostai. This approach gives you deliberate control over identity and content. A wrapper does not automatically instrument the operations inside it.

Execution tracing captures supported agent, model, tool, and workflow operations through framework instrumentation and OpenTelemetry. It helps locate problems inside a request. Coverage depends on the framework, instrumentor, provider, and configuration. Confirm what a real exported run contains before building metrics around a field.

You can use both levels. Choose one canonical record for request counts so a public interaction, root span, and several child spans do not become several apparent user requests.

Define success at the right boundary

A returned function, a validated object, and a completed user task are different signals. A booking assistant may return normally even when no inventory is available. A document extractor may produce valid JSON with the wrong total. A messaging assistant may generate a reply that the channel never delivers.

Use execution status for technical reliability. Use authoritative application evidence for completed actions. Use reviewed or explicit feedback for outcomes that cannot be established automatically. Leave unknown and pending states visible.

This also changes how you investigate latency. A graph waiting for approval is not spending that entire interval generating tokens. Parallel tools do not make user latency equal the sum of their durations. A fast first token does not guarantee a fast complete answer.

Make one request explainable before expanding collection

For your chosen framework, inspect a representative interaction from input to terminal state. Confirm identity, timestamps, public output, and the relevant tool or workflow evidence. Then inspect a known failed or interrupted interaction. If the recording only works on the happy path, aggregate reliability will be misleading.

In Agnost, start with conversation review, then inspect the underlying events. Configured intents help organize what users wanted. Intent classification does not itself establish completion.

The goal is an explainable product interaction: who needed what, which execution served them, and what evidence shows the result. Choose the framework guide above that matches the boundary your application actually runs.