Integration

Managed agent runtimes are integration partners, not Maestro

AWS Bedrock AgentCore and Azure AI Foundry Agent Service are excellent for bounded sub-tasks. They are not Maestro's orchestrator — and being explicit about why keeps the architecture honest.

Why neither is the orchestrator

Maestro's continuations sleep for weeks, wake on arXiv RSS or sibling-publish events, fork and merge, and span both clouds. Neither vendor runtime is built for that shape of work.

ConcernAgentCoreFoundry Agent Service
Hard session ceiling8 hours30 days for Hosted agents; runs are request/response
Idle timeout15 minutes15 minutes for Hosted agents
Pause / branch / resumeNo first-class primitiveNo first-class primitive on runs; Hosted-agent sessions resume but not branch
Wake on external signalOut-of-band; needs external orchestratorSame — needs Logic Apps / Durable Functions / external scheduler
Fork / merge with lineageNot modeledNot modeled
Multi-cloudSingle-cloud by designSingle-cloud by design

Putting Maestro continuations on AgentCore or Foundry would forfeit the central architectural bet — continuations as the unit of work, the policy kernel as the control plane.

Where Maestro delegates to them

The vendor runtimes are excellent for the shape they handle: a bounded sub-task within a session, with managed memory, sandboxed tool execution, and an OTEL trace. The policy kernel may choose to delegate a tick when the sub-task is:

  • a managed browser crawl (AgentCore Browser / Foundry Browser Automation),
  • a code-interpreter session (both have one),
  • a tool-heavy session reachable through the vendor's MCP gateway (AgentCore Gateway / Foundry Toolboxes), or
  • any sub-task that fits cleanly inside the vendor's session limits.

When the kernel delegates, the worker calls Substrate.AgentRuntime.spawn_session(...), streams session events back into the continuation's event log (preserving the audit trail), and on completion collects the terminal state and resumes the continuation on the Maestro worker pool. The vendor session is one event in the continuation's history, not a new orchestrator.

The delegation rule

A continuation tick is eligible for vendor delegation when all of:

  1. the kernel's route is a tier the vendor can serve, and
  2. expected wall-clock for the sub-task is < vendor.session_ceiling − safety_margin, and
  3. the sub-task does not need to fork, merge, or sleep on a multi-day external signal, and
  4. the tenant's policy class allows external-runtime execution.

Otherwise the tick stays on the Maestro worker pool. The default is stay on Maestro — delegation is opt-in per tick, recorded in the model_call event as runtime: maestro | agentcore | foundry.

Side by side

DimensionAWS Bedrock AgentCoreAzure AI Foundry Agent Service
GA date 2025-10-13 2026-03-16
Wire protocol Native AgentCore Runtime API; Strands open-source SDK is canonical author surface OpenAI Responses API (conversations, responses)
Agent flavors One runtime primitive; user brings any framework (Strands, LangGraph, CrewAI, LlamaIndex, OpenAI Agents SDK, Google ADK) Prompt (GA), Workflow (preview, YAML/visual), Hosted (preview, customer containers)
Session lifetime Up to 8 hours, 15-min idle timeout Run = req/resp with polling; Responses background:true for async; Hosted agents: 30-day session with persistent $HOME and scale-to-zero resume
Pause / branch Not modeled — session-bounded; needs Step Functions or Temporal for multi-day work Not modeled on runs; Hosted-agent sessions resume on demand but do not branch
Memory AgentCore Memory — short-term (Events per session) + long-term (extracted MemoryRecords); episodic memory added Dec 2025 Threads / messages; BYO Cosmos DB option; 100k msgs/thread, 1.5 MB/msg, 128 tools/agent
MCP AgentCore Gateway is MCP-native egress; OpenAPI / Smithy / Lambda / MCP-passthrough targets; semantic tool-search across thousands of tools First-class MCP client (MCPTool); Foundry also publishes as MCP server (https://mcp.ai.azure.com, preview); Toolboxes publish curated bundles as MCP endpoints
Other tools AgentCore Browser (sandboxed Playwright), Code Interpreter, custom tools via Gateway AI Search · File Search · Fabric · Bing Grounding · Logic Apps · Azure Functions · OpenAPI · Deep Research · Browser Automation · Computer Use
Identity AgentCore Identity layers over IAM; agent workload identity + vault for refresh tokens; per-user via JWT header (X-Amzn-Bedrock-AgentCore-Runtime-User-Id); Inbound IAM SigV4 or JWT (Cognito/Okta/Entra/Auth0) Each agent gets a dedicated Entra agent identity; OAuth on-behalf-of (OBO) passthrough; project-scoped RBAC
Networking VPC mode with ENIs; PrivateLink; tenant isolation = one microVM per session BYO VNet; Hosted agents run in VNet-injected sandboxes; MCP / Search private paths
Multi-agent Composes with any framework's A2A; classic Bedrock Agents has multi-agent collaboration Connected Agents (primary→task); Workflow agents; A2A protocol (preview)
Authoring SDK Strands Agents open source; runs on AgentCore unchanged, or on Lambda / Fargate / EKS azure-ai-projects; Microsoft Agent Framework 1.0 (GA Apr 2026) is SK + AutoGen merger
Observability OTEL-native → CloudWatch GenAI Observability; Datadog / Honeycomb via OTEL OTEL-native with GenAI semantic conventions; prompt-agent traces GA; App Insights "Agents" view (preview)
Policy / eval AgentCore Policy Cedar-based (GA 2026-03-03); Evaluations GA 2026-03-31 Project content filters; continuous evaluation GA
Regional spread 9 regions (us-east-1/2, us-west-2, eu-central-1, eu-west-1, ap-south-1, ap-southeast-1/2, ap-northeast-1) Tied to Responses API availability; gaps in Italy North, Brazil South for file search
Pricing intuition Runtime / Browser / CI: $0.0895/vCPU-hr + $0.00945/GB-hr, per-second, I/O wait free; Gateway: $0.005/1k tool invokes; Memory: $0.25/1k events, $0.75/1k LT records/mo Folds into model + storage + Foundry consumption; partner models billed via Marketplace, MACC-eligible

What this changes in the Substrate

A seventh method group on SubstrateAgentRuntime — added in the architecture document's §4.3. The interface is small on purpose:

AgentRuntime {
  spawn_session(spec) -> session_id
  stream_events(session_id) -> Iterator
  signal(session_id, payload)
  terminate(session_id)
  collect_terminal_state(session_id) -> dict
}

The concrete impls are AgentCoreRuntime (Runtime + Gateway + Memory) on AWS and FoundryAgentRuntime (Hosted agents + Connected agents + Toolboxes) on Azure. Both stream events back through the substrate's EventLog so the warm store remains the single source of truth.

Sources