Agent·

AWS open-sources an agent stack that watches behavior and infrastructure separately — Behavioral vs infrastructural telemetry — What does it mean?

The news. On September 11, 2026, AWS open-sourced a reference agent stack — a four-agent airline reservation system — with its monitoring deliberately split in two. AgentCore Observability captures the runtime's OpenTelemetry traces and forwards them to CloudWatch, where AgentCore Evaluations then scores those live traces with 16 built-in evaluators — 13 LLM-as-a-judge evaluators and 3 deterministic trajectory matchers — sampling anywhere from 0.01% to 100% of traffic asynchronously, off the user-facing path. A separate AWS DevOps Agent takes an incident by signed webhook, correlates IAM policies, runtime logs and orchestration traces across the invocation chain, and returns a root cause. Read the release →

Picture the kitchen. The equipment inspector walks the line with a clipboard: the oven holds temperature, the fridge is cold, the gas line is sound, nothing is on fire. Every check passes, and the clipboard is honest. Then the dish goes out to a table that ordered something else entirely.

The equipment inspector was never wrong. They were simply not looking at the order slip — and that gap is the entire reason an agent needs a second telemetry layer. Classic application monitoring was built for a world where a broken request throws: a 500, a timeout, a saturated queue, a stack trace. Those are equipment failures, and they are loud. Spans, error rates and latency percentiles catch exactly those, which is why one layer was enough for as long as that assumption held.

An agent breaks differently. It returns HTTP 200 with a fluent paragraph, having called the wrong tool, dropped a constraint the user stated three turns ago, or confidently invented a booking reference. No counter moves. The request was served well inside its latency budget, the runtime never threw, every span is green — and the user is being told something false.

So the second inspector tastes. Behavioral telemetry scores the trajectory against the goal, rather than the runtime against its budget — did the agent achieve what the user asked, did it select the right tool, is the answer correct. Those are judgements about content, so they need graders, not counters.

AWS ships two kinds of grader, and the split between them matters more than the total. Thirteen of the sixteen evaluators are LLM-as-a-judge: another model reads the trace and scores properties like goal success or tool selection. A judge is the most general automated grader, the one that can assess an open-ended answer — and it is also a model, with a model's price per call and a model's biases. The other three are deterministic trajectory matchers, which compare the recorded steps against an expected pattern with no model in the loop. They cannot tell you whether an answer was good. They can tell you, for free and identically every time, that the agent stopped after two steps when the flow requires five.

That is the practical shape the split invites: cheap deterministic checks as a tripwire on everything, expensive judges on a sample.

Hold the traffic fixed and the tradeoff turns into arithmetic. Take an agent handling 2,000,000 turns a month (illustrative — AWS publishes the sampling range, not traffic figures), and work the layer across the 0.01% to 100% range AWS exposes.

Judge every trace at 100% and each of the 13 LLM judges fires on all two million turns: 26,000,000 judge calls a month, every one a model invocation you pay for. Sample at 5% instead and 100,000 traces reach the judges — 1,300,000 judge calls, a 20× cut — while a regression affecting 1% of turns still lands in roughly 1,000 of those sampled traces — enough signal to catch it, provided the alert is watching that rate.

Now run the 3 deterministic matchers at the full 100%. They invoke no model, so two million turns cost 6,000,000 pattern checks and zero inference — and unlike the sample, they see every truncated trajectory and every skipped required step, not a twentieth of them. The judges buy depth on a slice; the matchers buy coverage on everything. That asymmetry is why a 13-and-3 split does more work than 16-and-0 would.

LayerThe question it answersInstrumentThe failure only it can see
InfrastructuralDid the machinery stay healthy?OpenTelemetry spans, latency, error rates, IAM policies, runtime logsA timeout, a throttled dependency, a missing permission
BehavioralDid the agent achieve the user's goal?13 LLM-as-a-judge evaluators and 3 deterministic trajectory matchers, on 0.01% to 100% of tracesA fluent wrong answer, a wrong tool, a dropped constraint

Serving engineers made a structurally identical split one layer down, years ago, under a different name. Throughput counts every request the system served; goodput counts only the ones that met their SLO. A box can run at full throughput and 60% goodput and still look perfect on every infrastructure counter it owns — which is the kitchen's sentence again, with plates swapped for requests.

Throughput: 10 req/s
1
2
3
4
5
6
7
8
9
10
Goodput: 3 req/s7 violated SLO
1
2
3
4×
5×
6×
7×
8×
9×
10×
Same system, same second — throughput looks healthy, goodput tells the truth

The serving track draws that distinction out in full. The behavioral layer is goodput for agents: the same refusal to let served stand in for useful. Only the disqualifier changes — a missed latency target there, a missed goal here — along with the awkward fact that the agent version needs a judge to decide, because no counter can see it.

The second half of the AWS release only makes sense once both layers exist. When an incident arrives, the DevOps Agent builds a resource topology and correlates logs, IAM policies and orchestration traces across the whole invocation chain before it proposes a root cause. Keeping the layers apart is what preserves the question: the behavioral layer says what went wrong for the user, and the infrastructural layer says which component made it happen. Root-cause discipline is precisely this refusal to accept the first correlated signal as the cause.

Merge the two into one number and you lose the question. A single blended "agent health" score mixing p99 latency with judged goal success cannot tell you whether to page the on-call engineer or rewrite the prompt — and those are the two actions such a number is supposed to trigger.

Goes deeper in: Agent Engineering → Observability for Agents → Alerting on Agent Behavior

Related explainers

Frequently Asked Questions

Check what you knowMap your AI & GPU knowledge across every track — free, role-based