Comparisons / AWS Bedrock AgentCore vs AWS Strands Agents
AWS Bedrock AgentCore vs AWS Strands Agents: Which Agent Framework to Use?
AWS Bedrock AgentCore vs AWS Strands Agents, head to head
AgentCore is the runtime layer — a closed-source AWS SaaS bundling Runtime, Memory, Identity, Gateway, and Observability. You don't import it; you point it at agent code and it executes inside MicroVM-isolated sessions. Strands is the SDK layer — an Apache-2.0 Python package with Agent(model, tools, system_prompt), the @tool decorator, and multi-agent primitives like Graph and Swarm. They sit at different layers of the stack: Strands is what you write; AgentCore is where it runs.
AgentCore is framework-agnostic — it runs Strands, LangGraph, CrewAI, or hand-rolled Python equally. Strands has its own ecosystem story: native MCP server/client support, type-hint-driven tool schemas, and multi-agent primitives shipped in the SDK. The two are designed by AWS to pair, but neither requires the other — you can run LangGraph on AgentCore, or run Strands on a bare Lambda. The GitHub picture matches: Strands lives at strands-agents/sdk-python (~4.2k stars, Apache-2.0); AgentCore is proprietary AWS infrastructure with no source repo.
The choice isn't really A vs B — it's which layer you're picking for. AgentCore earns its place when operational concerns are real: multi-tenant session isolation, per-user OAuth credential vending, OTel traces with cost attribution, long-term memory at scale. Strands earns its place when you want a thin SDK that doesn't fight Bedrock and treats MCP as a first-class citizen. Production AWS deployments often use both; teams off AWS use neither.
Pick AWS Bedrock AgentCore if
Pick aws-agentcore if your project lives or dies on running multi-tenant agents safely on AWS.
- MicroVM-isolated sessions: AgentCore runs each session in its own container for up to 8 hours, isolated from other users' state. Reproducing that on shared Lambda or Fargate is genuinely hard.
- OAuth + Secrets Manager identity: Per-user credential vending for agents acting as a user against Slack, GitHub, or other external APIs. Building it from Cognito plus a token-vending Lambda is weeks of work.
- Observability and cost attribution: OTel traces, per-step LLM cost, error grouping in CloudWatch — wired up by default rather than assembled from a Honeycomb or Datadog backend you operate.
Pick AWS Strands Agents if
Pick aws-strands if your project lives or dies on writing clean agent code that targets Bedrock and MCP.
- Model-driven loop:
Agent(model, tools, system_prompt)lets the model decide when to call tools and when to stop. NoAgentExecutor, no graph nodes — closer to how the underlying provider API actually works. @tooldecorator with type-hint schemas: Decorate a Python function, type hints become the JSON schema. Skips the ~15 lines ofinspect-based schema generation you'd write per tool.- First-class MCP: Run an agent as an MCP server, consume MCP servers as tools, no JSON-RPC-over-stdio handshake to implement. Better ergonomics than LangChain's
AgentExecutoror CrewAI'sCrewfor MCP-centric designs.
By the numbers
By the numbers
AWS Bedrock AgentCore
Managed service
Proprietary (AWS)
2025-07-16
AWS
Amazon Web Services
AgentCore Runtime, Memory, Identity, Gateway, Observability — pay-as-you-go on AWS
Yes
Used by: AWS internal teams, Amazon Q Developer
github.com/(closed-source SaaS — see strands-agents/* on GitHub for the SDK side)→AWS Strands Agents
4.2k
380
Python
Apache-2.0
2025-05-01
AWS
Amazon Web Services
Designed to run on Bedrock AgentCore for hosted deploy + observability
Yes
Used by: Amazon Q Developer, AWS Glue, AWS internal teams
github.com/strands-agents/sdk-python→GitHub stats as of April 2026. Stars indicate community interest, not necessarily quality or fit for your use case.
| Concept | AWS Bedrock AgentCore | AWS Strands Agents |
|---|---|---|
| Runtime | Sandboxed, low-latency container per session, up to 8h, MicroVM-isolated | — |
| Memory | Managed short-term + long-term memory with semantic recall and namespacing | — |
| Identity | OAuth flows, AWS IAM, Secrets Manager integration, per-user credential vending | — |
| Gateway | Turn any API or Lambda into an MCP-compliant tool with one config | — |
| Observability | OpenTelemetry traces, per-step LLM call costs, error grouping in CloudWatch | — |
| Browser | Managed isolated browser tool for agent web actions | — |
| Agent | — | `Agent(model, tools, system_prompt)` with the model running its own tool-call loop |
| Tools | — | `@tool` decorator on Python functions; type hints become the schema |
| Loop | — | Implicit — the model decides when to call tools and when to stop |
| Multi-agent | — | `Graph`, `Swarm`, agents-as-tools, and a workflow primitive |
| MCP | — | First-class MCP server + client support out of the box |
| Deploy | — | Bedrock AgentCore for hosted runtime, observability, identity |
Or build your own in 60 lines
Both AWS Bedrock AgentCore and AWS Strands Agents implement the same 8 patterns. An agent is a function. Tools are a dict. The loop is a while loop. The whole thing composes in ~60 lines of Python.
No framework. No dependencies. No opinions. Just the code.
Build it from scratch →