Agent observability is not an immature version of application performance monitoring (APM) that will mature into the familiar shape. It is a structurally different problem, and the difference shows up in four places that no amount of vendor polish has closed: failures that produce no error signal, traces that break at every agent-to-agent handoff, costs that cannot be attributed to the workflow that incurred them and behavioral drift in systems with no fixed baseline to diff against. This report treats the question the way an engineering team should treat it: as a decision among architectures, judged against explicit drivers, with the unsolved parts named rather than papered over.

The decision this report reaches is stated up front so the rest can be read as evidence. For teams running large language model (LLM) agents in production today, an instrumentation-first architecture built on OpenTelemetry (OTel), paired with a gateway layer added specifically for cost attribution, beats adopting any single platform’s proprietary software development kit (SDK); this holds for as long as the OTel generative AI (GenAI) semantic conventions remain in development status. The decision does not solve multi-agent trace continuity. Nothing currently does, and any evaluation that claims otherwise is selling something.

Problem / Context

The scale of the gap is documented before it is theorized. A majority of organizations deploying AI agents, 65 percent in one survey, identify observability and monitoring as their primary deployment challenge. The same research reports that while 89 percent of teams deploying software have production observability of some kind, only roughly half can evaluate the quality of what their agents actually produce. That spread between “the service is up” and “the output is correct” is the entire problem in one statistic. Meanwhile the deployments keep arriving: 57 percent of organizations now run agents in production, and 32 percent of respondents name quality as the top barrier to going further. The tooling did not fail to keep up because vendors were idle; it failed to keep up because the problem changed underneath it.

Traditional distributed tracing assumes deterministic request paths. A request enters a microservice topology, follows a path that the code determines, and either succeeds or throws. Agent traces violate that assumption at the root: the same input may produce different tool call sequences on different runs, because the path is chosen by a model at inference time rather than by control flow at compile time. Trace analysis of production agents surfaces recurring diagnostic shapes that have no analog in service tracing, including the tool loop comb (an agent stuck in a think-act-observe cycle, visible as a repeating comb pattern in the timeline), context loss between steps and the most dangerous of the three, the silent failure: an agent that returns fluent, plausible, well-formatted output that is wrong, with no exception, no non-2xx status code and no log line to distinguish it from success. An APM stack built to alert on errors has nothing to alert on. The failure is semantic, and semantic failures do not throw.

The silent failure deserves a moment of dwelling, because it inverts the assumption that the whole observability discipline was built on. Traditional monitoring assumes that failure is louder than success: a failure produces an exception, a status code, a timeout, some signal that distinguishes it from the happy path. An agent’s failure mode is frequently indistinguishable from its success mode at every layer the infrastructure can see; the HTTP call succeeded, the tokens streamed, the latency was normal and the answer was wrong. Detection therefore cannot live in the transport layer at all. It has to live in an evaluation layer that judges the content of the output, which is why the survey figure above (89 percent have observability, roughly half can evaluate output quality) describes a capability gap and not a tooling procurement gap.

The second structural pressure is trace continuity. When an orchestrator agent delegates to a sub-agent, or when a workflow crosses framework boundaries (an OpenAI Agents SDK agent invoking a LangGraph agent, for example), trace context frequently fails to propagate, and the receiving side starts a new root span with no parent. Research across the current platform field concludes that none of the major observability platforms handle multi-agent coordination traces well; the orphaned span is not one vendor’s bug but an ecosystem-wide condition.

The third pressure follows directly from the second. If the trace fractures at each handoff, cost data fractures with it. Each platform can report what a single call cost; no current platform correctly attributes cost at the workflow level when an orchestrator delegates to sub-agents or when a workflow spans multiple providers, with one model planning, another generating code and a third classifying. The result is a cost attribution gap that is absent from every platform, which matters because the business question is never “what did this API call cost”; it is “what did completing this task cost”.

The fourth pressure is drift. A deployed agent is not a fixed artifact; its behavior shifts as providers update models, as prompts accrete edits and as the input distribution moves. Recent research identifies three distinct manifestations of agent drift: semantic drift (progressive deviation from original intent), coordination drift (breakdown in multi-agent consensus) and behavioral drift (emergence of unintended strategies), with a median onset at 73 interactions. Drift detection in a deterministic system means diffing against a baseline. An agent has no single baseline output to diff against, so the baseline itself must be manufactured, which is an architecture problem rather than a dashboard feature.

One more driver belongs in this list because it shapes every option evaluated below: standards maturity. The OTel GenAI semantic conventions, the emerging common vocabulary for agent telemetry, remain in development status as of this writing, not stable. Whatever architecture a team chooses, it is choosing it during a period when the standard underneath is still moving; lock-in risk must therefore be priced into every option, not treated as a footnote.

These five drivers, failure visibility, trace continuity, workflow-level cost attributability, drift detectability and standards maturity, are the criteria the rest of this report judges every option against.

flowchart TD
    SF["Silent failures<br/>plausible output, no error signal"]
    OS["Orphaned spans<br/>trace context breaks at handoffs"]
    CA["Cost attribution<br/>per-call data, no workflow view"]
    DR["Drift<br/>no fixed baseline to diff against"]
    SF --> ARCH["Any candidate<br/>observability architecture"]
    OS --> ARCH
    CA --> ARCH
    DR --> ARCH
    ARCH --> DD["Decision drivers:<br/>failure visibility, trace continuity,<br/>cost attributability, drift detectability,<br/>standards maturity"]

Options Considered

Four architectural approaches cover the field. Each is described here on its own terms, with its actual mechanism and its reported facts; judgment waits for the trade-offs section.

Option 1: Platform-first SDK adoption

The first approach commits to a single observability platform and instruments the application with that platform’s SDK. The platform owns the data model, the storage, the UI and increasingly the evaluation tooling.

LangSmith is the reference case for ecosystem-native instrumentation. For LangChain and LangGraph applications it auto-instruments with virtually no measurable performance overhead and offers Python, TypeScript, Go and Java SDKs. Pricing includes a free tier at 5,000 traces per month with a Plus plan at 39 dollars per user per month. Its trace model is a tree of typed runs: a root run for the top-level call, child runs for each nested operation, with run types for tool, chain, LLM, retriever, embedding, prompt and parser.

Braintrust represents the eval-first wing of the same category. It closed an 80 million dollar Series B at an 800 million dollar valuation on the strength of integrating evaluation directly into observability workflows, including blocking deployments from continuous integration when evals regress; Notion, Replit, Cloudflare and Ramp are among its named users. Pricing is usage-based with no seat limits, starting at 249 dollars per month.

Arize Phoenix is the leading open-source member of the category: 9,100 plus GitHub stars, 2.5 million plus monthly downloads and roughly one trillion spans processed monthly across enterprise customers including DoorDash, Instacart, Reddit and Uber. Phoenix is fully open source with no feature gates and is built on OTel through the OpenInference specification, which defines ten span kinds covering LLM, embedding, chain, retriever, reranker, tool, agent, guardrail, evaluator and prompt operations.

Langfuse is the open-source market leader by adoption: 20,470 GitHub stars, 26 million plus SDK installs per month, 6 million plus Docker pulls, in use at 19 of the Fortune 50 and 63 of the Fortune 500, MIT-licensed with a full self-hosted option. ClickHouse acquired Langfuse in January 2026, alongside a 400 million dollar Series D at a 15 billion dollar valuation. Langfuse has moved to an observation-centric data model at scale: context attributes such as user, session and tags, which previously lived only on the trace, now propagate to every observation, eliminating expensive joins.

W&B Weave extends the Weights & Biases experiment-tracking heritage into agent observability. A single @weave.op decorator traces LLM calls automatically, capturing inputs, outputs, costs and latency, and the platform integrates with Amazon Bedrock AgentCore among other agent runtimes.

Option 2: Proxy and gateway capture

The second approach captures telemetry at the network boundary rather than inside the code. The application changes its base URL to point at a proxy; the proxy logs every request and response, and no SDK enters the codebase.

Helicone is the canonical proxy. It has processed more than 2 billion LLM interactions with a 50 to 80 millisecond average added latency on an infrastructure of Cloudflare Workers, ClickHouse and Kafka. Because every call transits the proxy, cost capture is a side effect of routing rather than an instrumentation project, and session headers group related calls into unit-economic views (a support chat averaging 0.12 dollars across five API calls, in one documented example).

LiteLLM plays the same position as an open-source Python proxy with more than 40,000 GitHub stars, presenting a unified interface to more than 100 LLM providers with built-in spend tracking, model-specific token pricing and attribution at the team and key level. Its Agent-to-Agent (A2A) protocol support extends cost tracking across heterogeneous multi-agent systems, from Bedrock AgentCore to LangGraph, through one gateway.

The architectural divide between SDK-based and proxy-based capture is fundamental, not cosmetic: SDK instrumentation captures richer context (span hierarchies, tool attribution) at the price of code changes, while proxy capture is zero-code but sees only what crosses the wire.

Option 3: OTel-native instrumentation-first

The third approach instruments the application against open standards and treats the backend as a pluggable detail. OpenLLMetry, maintained by Traceloop under Apache 2.0, extends OTel with LLM-specific instrumentation covering model name, tokens, temperature, latency and errors, and ships that data to any OTel-compatible backend, Datadog, New Relic, Sentry or Honeycomb, without vendor lock-in. OpenInference serves the same role from the Arize side.

The OTel community itself distinguishes two instrumentation postures for agent frameworks. Built-in instrumentation embeds OTel support natively inside the framework (CrewAI is an example of the pattern), which simplifies adoption but risks framework bloat and couples the telemetry to framework versions. External instrumentation applies libraries from outside the framework, which keeps the framework lean and the instrumentation independently upgradable at the cost of a second dependency to manage. Either posture lands on the same wire protocol, because the industry has converged on OTel as the common format for agent telemetry: Langfuse V3 is OTel-native (a thin layer over the official OTel client that converts emitted spans into its own observations), Phoenix accepts OTLP natively, Braintrust provides an OTel span processor and even proprietary platforms such as W&B Weave now support OTel ingestion. The practical meaning for this option is that instrumentation written once against the standard has a receiving dock at essentially every backend in the market.

Option 4: Extending an existing enterprise APM stack

The fourth approach adds LLM telemetry to the APM platform the organization already runs. Datadog LLM Observability auto-instruments OpenAI, LangChain, Bedrock and Anthropic calls and layers on hallucination detection, prompt injection scanning and prompt experimentation; its pricing is a documented concern, with per-span billing on top of an already complex pricing surface. The category is crowding fast: New Relic launched its Agentic Platform in February 2026, IBM Instana added MCP-specific capabilities and Datadog shipped a Model Context Protocol (MCP) server bridge. These vendors bring existing enterprise relationships and a single pane of glass; they also bring data models designed for services, now stretched over agents.

The four options differ most visibly in their trace data models, which determine what can be captured before any dashboard is drawn.

flowchart LR
    subgraph LS["LangSmith: tree of typed runs"]
        R0["Root run"] --> R1["LLM run"]
        R0 --> R2["Tool run"]
        R0 --> R3["Retriever run"]
    end
    subgraph LF["Langfuse: observation-centric"]
        T0["Trace"] --> O1["Observation<br/>context attributes inlined"]
        T0 --> O2["Observation<br/>context attributes inlined"]
    end
    subgraph OT["OTel GenAI: standard hierarchy"]
        S0["Session span"] --> A0["Agent span"]
        A0 --> SP["Step span"]
        SP --> TL["Tool / LLM span"]
    end

Trade-offs

The comparison below maps each option against the decision drivers established in the problem statement. Two cells deserve attention before the table: the multi-agent trace continuity column and the workflow cost attribution column score poorly for every row. That is not an artifact of harsh grading; it is the documented state of the field, and it is the fact the decision section must reckon with rather than escape.

DriverPlatform-first SDKProxy / gatewayOTel-native instrumentationAPM extension
Multi-agent trace continuityPoor; breaks at cross-framework handoffsPoor; sees calls, not handoff semanticsPoor; W3C context propagation exists but frameworks fail to carry itPoor; service-shaped trace model stretched over agents
Workflow-level cost attributionPer-call and per-trace onlyBest available; per-hop capture at the wire, still short of full workflow rollupToken attributes standardized; rollup left to the teamPer-call; per-span billing makes granularity expensive
Drift and regression supportStrong; evals, datasets, scorers built inWeak; no semantic evaluation at the proxyBackend-dependent; bring your own eval layerEmerging; hallucination detection bolted on
Standards maturity and lock-inProprietary data models; conventions churn absorbed by vendor, exit cost highLow lock-in; capture point is a URLLowest lock-in; rides the standard as it stabilizesHigh lock-in; proprietary model plus contract gravity
Measured operational overheadLangSmith near zero; Langfuse 15 percent; AgentOps 12 percent50 to 80 ms added latency per callLibrary overhead plus self-managed pipeline operationsAgent overhead plus platform cost overhead
Pricing modelPer-seat plus per-trace (LangSmith 39 dollars per user per month plus 2.50 to 5.00 dollars per 1,000 traces); usage-based (Braintrust from 249 dollars per month)Open source self-hosted; managed tiersFree libraries; you pay for the backend you already runPer-span premium on an existing bill

Four findings anchor the cells that carry the most weight. First, measured overhead varies more than intuition suggests: in multi-step agentic workflow benchmarks, LangSmith showed virtually no measurable overhead while Langfuse generated 15 percent and AgentOps 12 percent, a real trade against Langfuse’s openness for latency-sensitive paths. Second, pricing models diverge structurally, per-seat versus per-trace versus per-byte versus proxy-metered, which means cost comparisons only make sense against a specific traffic profile; a team with few developers and heavy traffic and a team with many developers and light traffic can reach opposite conclusions from the same price sheets (LangSmith and Braintrust illustrate the two poles). Third, the open-source position is unusually strong in this market: Langfuse (MIT), Phoenix (Apache 2.0) and Helicone (Apache 2.0) all offer self-hosting without feature gates, which changes the lock-in calculus for the SDK row from “trapped” to “movable with effort”. Fourth, the OTel GenAI conventions are becoming the de facto interchange standard across every row of the table, which is precisely why their development status matters: the thing everyone is converging on is still moving.

The drift and regression row is where the platform SDKs earn the loyalty they command, and the differentiation among them is worth recording because it shapes what an instrumentation-first team must replace. LangSmith couples tightly to LangChain and LangGraph, with native run-tree visualization and integrated feedback and dataset tooling. Braintrust fuses tracing with evaluation at two scopes, scoring entire execution traces and individual spans, backed by more than 25 built-in scorers. These are genuinely useful capabilities; the trade-offs table does not dispute their value, it prices their coupling. A team that adopts them adopts the data model they are welded to, and the standards maturity row records what that costs while the underlying conventions are still moving.

One finding enters this table as a caveat rather than a point, because the research behind it weakened under scrutiny. MCP server health monitoring is reported as a nascent, underserved area: 50 percent of teams cite security and access control as their top MCP challenge, and reported rates of MCP servers running with no authentication at all range from 25 percent to 40 percent depending on the survey. The claim that direct MCP connections provide zero visibility into tool usage is contested; protocol-native gateways do offer some insight into what agents do with tools. The gateway row of this table therefore gets a caution, not a credit: a gateway helps observe MCP traffic, but the health and authentication posture of the MCP servers behind it remains a genuine gap that a gateway does not close by itself.

The multi-agent failure that flattens the first column deserves to be seen mechanically rather than described abstractly. The W3C Trace Context standard defines the fix, an extract-and-inject pattern where the sending agent injects the trace identifier into message metadata and the receiver extracts it to continue the trace, but the fix only works when both sides of every handoff implement it, and in practice cross-framework handoffs drop the context.

sequenceDiagram
    participant O as Orchestrator agent
    participant B as Framework boundary
    participant S as Sub-agent (other framework)
    O->>O: Start trace, open span A
    O->>B: Handoff message (traceparent not injected)
    B->>S: Task arrives with no trace context
    S->>S: Opens new root span B (orphaned)
    S-->>B: Result
    B-->>O: Result recorded under span A
    Note over O,S: Two disconnected traces. The cost and<br/>latency of span B never attach to the<br/>workflow, on every platform evaluated.

Plotting the four options on the two axes that separate them most cleanly, instrumentation portability against operational overhead, shows why the proxy and OTel-native options cluster away from the single-vendor approaches.

quadrantChart
    title Portability of instrumentation vs operational overhead
    x-axis Low portability --> High portability
    y-axis Low overhead --> High overhead
    quadrant-1 Portable but operationally heavy
    quadrant-2 Locked in and heavy
    quadrant-3 Locked in but turnkey
    quadrant-4 Portable and lean
    Platform-first SDK: [0.25, 0.3]
    APM extension: [0.3, 0.75]
    Proxy gateway: [0.72, 0.4]
    OTel-native: [0.85, 0.55]

Decision

The chosen architecture is instrumentation-first: OTel-native tracing through OpenLLMetry or OpenInference-style libraries, emitting to a backend the team already operates or selects freely, with a proxy gateway (LiteLLM or Helicone class) inserted specifically to capture per-hop cost data. The decision holds for as long as the OTel GenAI and MCP semantic conventions remain in development status, and it should be re-examined when they reach stability.

The rationale traces directly to the comparison table. On the standards maturity row, the OTel-native option is the only one whose instrumentation investment survives the conventions churn intact: the conventions are the interchange format every platform is converging on, including proprietary platforms now accepting OTel ingestion, so spans emitted in that vocabulary remain portable across whatever the market does next, while spans emitted in a proprietary SDK’s vocabulary are portable exactly as far as that vendor’s exporter allows. On the cost attribution row, the gateway is the only mechanism that captures spend transparently across every provider without instrumentation coupling, because it sits where the money actually leaves the building: on the wire. On the overhead and pricing rows, the combination avoids committing the whole telemetry budget to one vendor’s pricing model during the exact period when pricing models across the market have not converged and when the conventions the vendors implement are still moving under them.

The architecture also inherits a contract that the platform SDKs each reinvent privately: the standard span hierarchy of session, agent, step and tool or LLM call, expressed in the OTel GenAI attribute vocabulary. That hierarchy is the unit of portability. A trace shaped that way renders meaningfully in any backend that speaks the conventions, survives a backend migration without a re-instrumentation project and gives the W3C Trace Context extract-and-inject pattern a consistent place to carry context across the handoffs the team controls. None of the proprietary trace models offers that guarantee, because each is a private dialect; the LangSmith run tree and the Langfuse observation model are both good designs, and both are theirs rather than yours.

Choosing instrumentation-first does mean giving up the strongest cell the platform SDKs own: integrated evaluation. That loss is real and the implementation notes address it directly, by pairing the open telemetry pipeline with an evaluation layer rather than pretending tracing alone answers quality questions.

The dissent that this decision must carry on its face: it does not close the multi-agent coordination-trace gap. The gap persists across every platform evaluated, proprietary and open alike, because no vendor controls both sides of every handoff; cross-framework trace-context propagation fails in the chosen architecture exactly as it fails in each rejected one. The W3C extract-and-inject pattern gives a team the tools to fix the handoffs it controls, and the implementation notes below treat that as mandatory work, but handoffs into frameworks and services the team does not control remain a known, accepted, unresolved risk. The same holds for workflow-level cost attribution across delegation chains: the gateway narrows the gap to the hops it routes; it does not close it. Selecting a platform cannot buy a way out of either gap, which is itself a load-bearing input to this decision: when no option solves the hardest problem, the rational choice optimizes the problems that are solvable, portability and cost, while keeping exit costs low for the day the hardest problem gets a real solution.

Implementation Notes

The decision is only as good as its execution details. The following notes are ordered from the span outward: what to record, how to debug it, how to meter it, how to guard it and how to roll it out.

Standardize the span hierarchy before writing any instrumentation. The pattern that has emerged across platforms is a four-level hierarchy: a session span at the root (created when the interaction begins), agent execution spans when an agent starts its run, step spans for individual think-act-observe iterations and tool or LLM call spans at the leaves. Adopt it as written. The OTel GenAI conventions supply the attribute vocabulary for the agent level, including gen_ai.agent.name, gen_ai.agent.id, gen_ai.agent.description and gen_ai.agent.version; using those names now, while the conventions are in development status, costs nothing extra and preserves the portability the decision depends on.

Give every span the metadata that debugging will need later. The essential set: trace and span identifiers for correlation, start and end timestamps, agent identity and instructions, model identifier and provider, token usage in and out, latency and cost. A span without token and cost fields is a span that cannot participate in attribution; a span without model and instruction fields is a span that cannot explain a drift investigation. Record them at write time because they cannot be reconstructed afterward.

Plan for non-deterministic debugging with checkpoints and decision logs. Two practices convert “it did something strange once” into a tractable investigation. Checkpoint-based state replay, of which LangGraph’s Time Travel is the reference implementation, persists execution state so an engineer can trace a failure to a specific node, inspect intermediate state and re-execute from any checkpoint. Structured decision logging complements it: where an application log records events, a decision log records the input that triggered a decision, the reasoning context (system instructions and conversation state) and the output, so that the question “why did the agent do that” has source material instead of speculation.

Wire cost telemetry to the sources that already exist before building any. The Claude Agent SDK exposes cost at three scopes: per-step for each request and response cycle, per-model when a workflow mixes model tiers and an authoritative total_cost_usd on result messages. Anthropic’s Usage and Cost Admin API provides organization-level reporting at one-minute, one-hour or one-day granularity through its usage report and cost report endpoints, filterable by API key, workspace and model. Prompt caching changes the economics enough to shape architecture: cache writes bill at 1.25 times base price for five-minute caches and 2 times for one-hour caches, while cache reads bill at 0.1 times base, a 90 percent reduction that pays for the write after roughly one or two hits. The gateway then unifies these per-provider views: routed through a LiteLLM or Helicone class gateway, every hop in a multi-provider workflow deposits tokens, cost and latency into one ledger keyed by session and agent, which is the raw material for the workflow-level rollup that no platform provides natively.

Set budget guardrails on four dimensions, because runaway costs are documented, not hypothetical. Production incidents include 47,000 dollars burned in 11 days by two agents locked in an infinite conversation loop (an analyzer and a verifier ping-ponging) and a separately documented retry storm, coincidentally also totaling 47,000 dollars, from an agent misreading API error codes and generating 2.3 million API calls; the source material records both incidents at the same figure. Both incidents share a diagnosis: each individual call was cheap, correct at the transport level and invisible to any alert keyed on errors, which is the silent-failure problem restated in dollars. The guardrail model that addresses this operates on four dimensions. Per-task budget caps set a maximum spend per agent type per day (a sentiment extraction agent capped at 50 dollars per day, in the reference formulation). Per-agent cumulative limits impose daily and weekly hard stops regardless of task mix. Anomaly detection flags spending patterns that deviate from an agent’s history even when no cap has been reached, which is what catches the loop that would otherwise run for 11 days. Graceful degradation defines what happens at the cap; an agent that fails closed into a cheaper model or a queued state is recoverable, while an agent that fails open keeps spending. Size all four with the multiplicative effect of team patterns in view: multi-agent configurations multiply cost by team size because each agent maintains its own context window, and agent teams have measured at roughly seven times the tokens of a standard session.

Roll out instrumentation changes and model swaps through stages, never at once. The five-phase progression is shadow deployment (duplicate traffic to the new path with zero user exposure), A/B testing, canary deployment, progressive rollout and full migration. Canary weighting at the platform level, 95 percent stable and 5 percent canary, requires no code changes and produces comparative accuracy, latency and cost data before commitment. The cost of skipping the stages has a name and a date: the April 2025 GPT-4o sycophancy incident, where a broadly and immediately shipped model change made social media backlash the de facto alerting system. An organization with this report’s architecture should never learn about its own regressions from its users.

Treat the gateway as a trust boundary and secure it accordingly. The gateway this architecture adds is also the choke point through which agents reach tools, and the MCP server population behind such gateways has a documented authentication problem, with surveyed no-auth rates between 25 percent and 40 percent. A gateway that meters cost while forwarding traffic to unauthenticated tool servers is a trust boundary in name only; authentication and health checks on the MCP servers behind it are part of this rollout, not a separate project.

flowchart LR
    REQ["Workflow request<br/>session id attached"] --> GW["Gateway / proxy layer<br/>(LiteLLM, Helicone class)"]
    GW --> PA["Provider A<br/>planning model"]
    GW --> PB["Provider B<br/>code generation model"]
    GW --> PC["Local model<br/>classification"]
    PA --> GW
    PB --> GW
    PC --> GW
    GW --> LED["Per-hop ledger:<br/>tokens, cost, latency<br/>keyed by session and agent"]
    LED --> ROLL["Workflow-level rollup:<br/>cost per completed task"]

Consequences

Every architecture decision purchases some properties by surrendering others. This one is no exception, and the ledger is worth stating completely.

What becomes easier

Trace data becomes portable by construction. Spans emitted in the OTel vocabulary move between backends as the market consolidates, and every convention the standard stabilizes is a convention this architecture already speaks. Cost becomes visible at the level the business asks about: the gateway ledger supports cost per completed task rather than cost per API call, within the hops the gateway routes.

Most consequentially, drift detection acquires a real architecture instead of a hope. The operating pattern is three-tiered: tier one is real-time production metrics (hourly containment and error rates), tier two is daily synthetic tests against golden prompt sets with consistency checks and tier three is weekly deep analysis. The tiers feed a composite stability measure; the research direction here is the Agent Stability Index, a metric normalized to the zero-to-one interval that quantifies drift across twelve dimensions including response consistency, tool usage patterns, reasoning pathway stability and inter-agent agreement rates. Alerting on top of the composite uses graduated levels requiring sustained deviation rather than fixed thresholds: info at 3 percent deviation for one day (logging only), warning at 5 percent sustained over seven days (team notification) and critical at a 10 percent increase or 8 percent behavioral degradation. The payoff of running this machinery is measured: hourly monitoring catches the 1 to 2 percent weekly degradation that compounds to a 15 to 20 percent accuracy loss over three months if left to accumulate, and when drift fires, a five-step response discipline (confirm authenticity, identify the source, assess impact, fix, validate) keeps the reaction proportionate.

The evaluation layer that replaces the platform SDKs’ built-in tooling has an equally concrete shape. Regression testing combines golden datasets as deterministic gates with random production sampling, because golden datasets age quickly when real users do unpredictable things. Judges come in three types with distinct reliability profiles: algorithmic judges for deterministic checks, AI judges calibrated on golden examples for fuzzy qualities and AI judges with human alignment for the assessments that matter most. The organizing principle is that the eval becomes the specification for a non-deterministic system, the acceptance criteria and the roadmap at once, and the strongest version of the practice runs the same scorers used offline against live production traffic, with teams adopting that loop reporting accuracy improvements exceeding 30 percent within weeks. When drift is confirmed rather than merely detected, the research-validated mitigations are episodic memory consolidation, drift-aware routing and adaptive anchoring.

What becomes harder

The team now operates more moving parts: an instrumentation layer, a gateway, a backend and an evaluation layer, where a platform-first team operates one vendor’s turnkey SDK and console. Every integration seam in that list is a place something can silently stop reporting, and the operational burden of noticing falls on the team.

The team also owns the conventions churn directly. When the OTel GenAI conventions rename an attribute or restructure a span kind on the way to stability, a platform vendor’s customers receive the migration in a release note; this architecture’s operators perform it themselves. That is the explicit price of portability, and it was paid knowingly.

The evaluation layer is likewise now a system the team runs rather than a tab the vendor renders. Golden datasets need curation as they age, production samples need review capacity, judge calibration needs periodic human alignment and the graduated alert thresholds need tuning against the team’s real deviation baselines rather than the published defaults. None of this is exotic work, but all of it is recurring work, and a team should staff for it the way it staffs for any other production system rather than treating evaluation as a launch-week artifact. (The platform-first option does not remove this labor either; it relocates some of it into vendor tooling and hides the rest. The difference is that here the labor is visible and budgeted.)

What to revisit

Two review triggers are part of this decision rather than afterthoughts. First, when the OTel GenAI and MCP semantic conventions exit development status, the standards maturity driver that anchored this decision changes value, and the platform-first option deserves a fresh evaluation on the new terms; stability removes the churn cost that made vendor data models risky. Second, the multi-agent coordination-trace gap is an open item, not a solved problem, and it should be re-tested against each significant platform release: the vendor that first delivers working cross-framework trace continuity will have removed the one deficiency every current option shares, and that would justify reopening this report from the top. Until one of those triggers fires, the architecture stands: instrument against the standard, meter at the gateway, evaluate continuously and treat every orphaned span as a reminder that the hardest problem in agent observability has not been solved by anyone yet.

flowchart TD
    T1["Tier 1: real-time production metrics<br/>hourly containment and error rates"] --> IDX["Composite stability index<br/>twelve dimensions, normalized 0 to 1"]
    T2["Tier 2: daily synthetic tests<br/>golden prompt sets, consistency checks"] --> IDX
    T3["Tier 3: weekly deep analysis<br/>trend and cohort review"] --> IDX
    IDX --> AL["Graduated alert levels"]
    AL --> A1["Info: 3 percent deviation for 1 day<br/>log only"]
    AL --> A2["Warning: 5 percent sustained over 7 days<br/>notify the team"]
    AL --> A3["Critical: 10 percent increase or<br/>8 percent behavioral degradation"]
    A3 --> RSP["Five-step response:<br/>confirm, identify, assess, fix, validate"]