Lakshya

LLM Systems Engineering · Chapter 8 of 20

Managed agent runtimes — what you are actually buying

AWS, Azure and Google all shipped one inside twelve months, and they solve narrower problems than the marketing implies.

8 min read2 diagramsAll 20 chapters

Between May 2025 and October 2025 all three hyperscalers shipped a managed place to run an agent. That is a genuinely new product category — which means anyone asked “which agent runtime would you use” in an interview is being asked about something roughly a year old, where the honest answer includes what is still unsettled.

THEY DID NOT DECOMPOSE THE PROBLEM THE SAME WAY — WHICH IS WHY A TIDY COMPARISON TABLE LIES AWS — MANY PARTS seven-plus separable services you compose Runtime — the execution contractMemory — short-term + strategiesGateway — any API becomes a callable toolIdentity — workload ID + on-behalf-ofBrowser · Code InterpreterObservability — open tracing to CloudWatchHarness — config-only, added JUNE 2026Policy · Evaluations · Payments AZURE — ONE SERVICE, TWO MODES and the two are at very different maturity PROMPT AGENTS config only — instructions, model, tools GA May 2025. This was the original product. HOSTED AGENTS your container — the real peer to Runtime and the NEWER half. GA status unconfirmed. Agent 365 is a SEPARATE governance control plane. Not this. Different row. GOOGLE — ONE THIN PRIMITIVE a managed container for a Python class AGENT ENGINE set_up() · query() · stream_query() plus loosely-coupled neighbours: · Sessions — conversation state· Memory Bank — long term (preview)· Agent Identity — starts with zero access Isolation is a shared autoscaled fleet, NOT a sandbox per session. Does not map. AND THE CONVERGENCE NOBODY EXPECTED AWS launched the low-level composable thing. Azure and Google launched the managed declarative thing. Thirteen months after GA, AWS shipped Harness — config-only, three API calls, no container — arriving at the point its competitors started from. Teach this as evolution, not as a fixed landscape. The corollary for a candidate: any comparison you memorise here has a shelf life measured in months, so learn the SHAPE, not the grid.
Learn the shape rather than the grid. The three did not divide the problem the same way, and one of them has already moved toward the others.

What you are buying

Strip the marketing and a managed agent runtime sells four things, each of which you would otherwise build:

  • Session isolation. A hostile or merely buggy tool call cannot reach another user's session. AWS gives a microVM per session; Azure a VM-isolated sandbox with a persistent home directory that is restored on resume. Building that yourself is not hard so much as it is never finished.
  • Identity propagation. A per-agent credential that can call models, tools and downstream services — and, where a user is present, act on that user's behalf with scoped consent rather than inheriting broad access.
  • Memory as a service, so you are not operating a vector store and a summarisation job as a side effect of shipping an agent.
  • An execution ceiling with somebody else's on-call attached to it.

What you are giving up, which is less discussed

Portability, and more of it than the “framework agnostic” claim suggests. All three genuinely will run LangGraph, CrewAI or your own loop — but the agnosticism sits at the transport layer, not the orchestration layer. AWS wants a container answering specific paths on specific ports. Azure wants a different protocol shape on a different port. Google wants a Python class with particular method names. “Deploy anywhere” code does not exist here; you write one thin adapter per target, not zero.

Debuggability. You cannot attach a shell to a microVM. During an incident you have exactly as much visibility as the provider's tracing gives you, which is a real cost that only shows up on the worst day.

And cost predictability. All three bill by active resource-second rather than by request, so an agent that thrashes CPU in a retry loop costs differently from one that mostly waits on a model. None of the three publishes a “cost per conversation” figure you could put in a budget line without instrumenting first. AWS bills memory on the peak footprint within each second, which rewards flat allocation over spiky.

The question that separates a real answer from a fluent one

“AN AGENT THAT RUNS FOR TWENTY MINUTES AND CAN CRASH HALFWAY” — WHO ACTUALLY SOLVES THAT? WHAT THE RUNTIMES DO GIVE YOU · session isolation — a bad tool call stays put· identity propagation, without a secrets pipeline· memory as a managed service· a time limit with someone else on call for it WHAT THEY DO NOT · deterministic replay after a crash· durable timers, fan-out and fan-in· child workflows· and none publishes a cold-start SLA MICROSOFT’S OWN DOCUMENTATION DRAWS THE LINE, IN WRITING “Recovery reenters the handler from its beginning. It isn’t deterministic replay” “Use a workflow engine for fan-out, fan-in, durable timers, or child workflows.” learn.microsoft.com — long-running agent resilience So: pair a runtime with a real orchestrator. Temporal, Step Functions, Durable Functions. AWS agrees by action rather than by statement — it shipped native Step Functions integration with Harness in July 2026, which is a tacit admission that the harness alone does not cover it.
This is the sharpest thing to know about the whole category, and one vendor states it plainly in its own documentation rather than leaving you to discover it.

“An agent that runs for twenty minutes and can crash halfway” is not a new problem. It is workflow durability, and there is a decade of prior art — Temporal shipped that primitive in 2019. The useful question about these runtimes is therefore whether they solve it or repackage it.

They do not solve it, and Microsoft says so in writing

Microsoft Foundry's resilient execution provides lease-based crash detection and handler reentry. Its own documentation states that “Recovery reenters the handler from its beginning. It isn't deterministic replay” and directs you to “Use a workflow engine for fan-out, fan-in, durable timers, or child workflows.”

It generalises. AWS gives an eight-hour ceiling, a health-check keep-alive and optional persistent storage — none of which is event-sourced replay. If the process dies mid-task, resuming is your application's problem, usually solved by your framework's own checkpointer writing outside the session. Google is blunter still: a ten-minute streaming ceiling and documentation telling you to keep state in Sessions or Memory for anything longer.

So these are session-hosting and identity services, not durability services. Buy the runtime for isolation, identity and memory; keep a real orchestrator for anything that must survive a crash and resume where it stopped.

And AWS agrees by action. In July 2026 it shipped native Step Functions integration with Harness — which is a tacit admission that the harness alone does not cover this.

“Harness” means three unrelated things, and two of them are a sentence apart above

Harness capitalised, in that last line, is AWS’s own AgentCore feature — config-only, three API calls, no container.

“the harness” in lower case is the general sense: the scaffolding around a model — the loop, the tools, the context management — covered in harness engineering.

And Harness (harness.io) is an unrelated continuous delivery platform that sits in a great many enterprise pipelines. If someone raises ‘Harness’ in a deployment or developer-platform conversation, that is almost certainly the one they mean.

Three products, one word. Worth checking which before you answer.

When self-hosting still wins

  • You already run Kubernetes, or Amazon’s container service ECS, at a scale where another platform's abstractions cost more in workarounds than they save.
  • Your language is not supported. Azure hosted agents are Python and C# only; Google Agent Engine is Python only; AWS is the most permissive, taking any container.
  • You need a sub-second cold start — and note that none of the three publishes a cold-start figure at all, which is a genuine gap for anyone planning against a user-facing latency budget.
  • A regulator wants your inference in a specific facility that is not on any of their region lists.

Check yourself

What are you actually buying with a managed agent runtime?Session isolation, identity propagation, memory as a managed service, and an execution ceiling with someone else's on-call. Not orchestration.
How deep does 'framework agnostic' go?To the transport layer only. All three will run LangGraph or CrewAI, but each wants a different contract — a container on specific ports, a different protocol shape, or a Python class with particular method names.
Do these runtimes solve durable execution?No. Microsoft's own docs say recovery 'isn't deterministic replay' and direct you to a workflow engine for fan-out, durable timers and child workflows. Pair a runtime with Temporal, Step Functions or Durable Functions.
What did AWS shipping Step Functions integration with Harness signal?That the harness alone doesn't cover durability — agreement by action rather than statement.
What is the cost model, and why is it hard to budget?Active resource-second, not per request. None publishes a cost-per-conversation, and AWS bills memory on peak footprint within each second.
When should you self-host instead?You already run k8s at scale; your language isn't supported (Google is Python only); you need sub-second cold start — none publishes a figure; or a regulator wants a facility not on their region list.
← Fine-tuning, and what actually wonAgentCore in practice — the contract, the code, the limits →