What Is Strands Agents? AWS's Open-Source Agent SDK
Strands Agents is the open-source SDK AWS built for its own AI agents and released publicly in May 2025. You hand it a model, a prompt, and a list of tools, and the model decides what to do next. There is no workflow graph to draw first.
It has changed a lot since launch. There is now a TypeScript SDK, a pre-assembled agent called Strands harness (released September 21, 2026), and a renamed GitHub monorepo. Here is what each piece is, what it costs, and when it beats the alternatives.
The quick answer: Strands Agents is a free, Apache 2.0 SDK from AWS for building AI agents in Python (3.10+) or TypeScript (Node.js 22+). It runs a model-driven agent loop inside your own process, works with Amazon Bedrock, Anthropic, OpenAI, Google, Ollama and many other providers, connects to MCP servers out of the box, ships agents-as-tools, swarm and graph multi-agent patterns, and deploys anywhere a container or function runs, including Lambda, Fargate and Bedrock AgentCore. The SDK costs nothing. You pay for model tokens and hosting.
Strands Agents at a glance
| Item | Detail |
|---|---|
| Maintainer | AWS, with contributions from Anthropic, Meta and other partners |
| License | Apache 2.0 |
| Languages | Python 3.10+, TypeScript on Node.js 22+ |
| Install | pip install strands-agents or npm install @strands-agents/sdk |
| Stable since | Python 1.0 in July 2025, TypeScript 1.0 in April 2026 |
| Default model | Claude Sonnet 4.6 on Amazon Bedrock |
| Model providers | Bedrock, Anthropic, OpenAI and Google first-party, plus Ollama, LiteLLM, Mistral, llama.cpp, SageMaker, Writer, OpenRouter and more |
| Tools | Any function via @tool, bundled tools, a built-in MCP client |
| Multi-agent | Agents as tools, Swarm, Graph, Workflow, Agent-to-Agent (A2A) |
| Deploy targets | Bedrock AgentCore, Lambda, Fargate, App Runner, EKS, EC2, Docker, Kubernetes, Terraform |
| Cost | Free SDK. You pay the model provider and your host |
Strands Agents, the Strands Harness SDK, and Strands harness
The naming has shifted recently, which is why tutorials disagree.
- Strands Agents is the project and the brand. The GitHub organization is
strands-agents. - The SDK (
strands-agentson PyPI,@strands-agents/sdkon npm) is the agent loop, the model providers and the tools. The docs now call it the Strands Harness SDK. This is what nearly every “Strands Agents SDK” tutorial means. - Strands harness (
strands-harnesson PyPI,@strands-agents/harnesson npm) is a fully assembled, general-purpose agent built on the SDK. Onecreate_harness()call gives you shell, file and web tools, context management, long-term memory, sessions, a helper sub-agent and skills loading. It is still at version 0.1.
The old Python repo now redirects to the project’s monorepo on GitHub, which holds both SDKs, the harness, a strands CLI and the docs site. The standalone TypeScript repo has been archived.
The Strands team’s harness announcement pitches it at builders whose agent idea “just worked” locally in Claude Code or Codex and who want the same thing running in the cloud. The team reports 28% lower token cost than other harnesses on the same Claude or GPT models across six benchmarks, with nearly equal accuracy. That is AWS’s own benchmark, and a follow-up paper is promised, so treat the number as a claim for now.
How the model-driven loop works
The design bet, as AWS explained when it open-sourced the SDK, is that current models can plan, pick tools and reflect on their own, so the framework should stay out of the way. An agent is three things: a model, tools and a prompt. The name comes from DNA: Strands ties together the agent’s two strands, the model and the tools.
The agent loop itself is short. Call the model, run any tool it requests, feed the result back, and repeat until the model returns a final answer. A failing tool goes back to the model as an error result instead of crashing the run, so it can try another route. Around that loop the SDK adds what production agents end up needing: turn and token limits, cancellation, typed stop reasons, hooks on every model and tool call, retry strategies and OpenTelemetry tracing.
AWS built Strands for Amazon Q Developer, where the team says new agents went from months to “days and weeks” to ship. AWS Glue and VPC Reachability Analyzer were also running it in production at launch.
Here is the minimal Python example from the project README:
pip install strands-agents strands-agents-tools
from strands import Agent
from strands_tools import calculator
agent = Agent(tools=[calculator])
agent("What is the square root of 1764")
And the TypeScript version:
npm install @strands-agents/sdk
import { Agent } from '@strands-agents/sdk'
const agent = new Agent()
const result = await agent.invoke('What is the square root of 1764?')
console.log(result)
With no model set, both default to Amazon Bedrock. You need AWS credentials (or a Bedrock API key in AWS_BEARER_TOKEN_BEDROCK) and model access enabled in the Bedrock console. We installed the current Python packages and the README example builds as written, with Claude Sonnet 4.6 on Bedrock as the default model. Running it is the step that needs those credentials.
Which models Strands supports
The SDK is provider-agnostic. The model is one object you pass to Agent, and swapping it leaves the rest of your code alone. First-party providers are Amazon Bedrock, Anthropic, OpenAI and Google. The full list adds Amazon Nova, Ollama, LiteLLM, llama.cpp, Mistral, Llama API, SageMaker, Writer, Cohere, Fireworks AI, OpenRouter and others, plus community packages for vLLM, SGLang, xAI, MLX and NVIDIA NIM, and a custom provider interface for anything else.
Python has the wider coverage. According to the model providers page in the Strands docs, Ollama, LiteLLM, llama.cpp, Mistral, SageMaker and Writer are Python-only today, while TypeScript gets a Vercel AI SDK provider that Python lacks. Prompt caching works on Bedrock, Anthropic, LiteLLM, llama.cpp and Vercel.
Switching to the Anthropic API directly, from the Python quickstart:
pip install 'strands-agents[anthropic]'
export ANTHROPIC_API_KEY=your-key
from strands import Agent
from strands.models.anthropic import AnthropicModel
model = AnthropicModel(model_id="claude-sonnet-5", max_tokens=4096)
agent = Agent(model=model)
agent("What is an agent harness, in one sentence?")
Tools and MCP
A Strands agent gets tools three ways:
- Your own functions. Decorate any Python function with
@tooland its docstring and type hints become the schema the model reads. In TypeScript, tools take a Zod schema. - Bundled tools. The SDK ships tools for editing files, running shell commands, making HTTP requests, working with notebooks and handing a question back to the user. The separate
strands-agents-toolspackage adds more, including the calculator above, browser automation and memory backends. - MCP servers. Strands has a built-in MCP client. Pass an
MCPClientinto the agent’s tools and every tool on that server becomes available, over stdio, Streamable HTTP (including servers behind OAuth or AWS IAM) or SSE.
The MCP pattern from the Strands MCP tools guide:
from mcp import stdio_client, StdioServerParameters
from strands import Agent
from strands.tools.mcp import MCPClient
mcp_client = MCPClient(lambda: stdio_client(
StdioServerParameters(
command="uvx",
args=["awslabs.aws-documentation-mcp-server@latest"]
)
))
agent = Agent(tools=[mcp_client])
agent("What is AWS Lambda?")
If MCP is new to you, our Model Context Protocol explainer covers the basics and the MCP servers guide lists servers worth connecting.
Multi-agent patterns in Strands
The multi-agent patterns page describes five ways to compose agents. The real difference between them is who decides the path.
| Pattern | Who decides the path | Good for |
|---|---|---|
| Agents as tools | An orchestrator agent calls specialist agents like any other tool | Routing questions to domain experts |
| Swarm | The agents hand off to each other on their own, sharing context | Research, incident response, open-ended collaboration |
| Graph | You define nodes and edges, and an LLM decision at each node picks the branch. Loops allowed | Business processes with branches and error paths |
| Workflow | Nobody at run time. A fixed task graph runs independent tasks in parallel | Repeatable pipelines |
| A2A | Agents in separate services talk over the Agent-to-Agent protocol | Agents that run as separate services |
The smallest multi-agent system in Strands is one line: put one Agent in another agent’s tools list, and the orchestrator calls it whenever a query matches the specialist’s description.
Deploying a Strands agent
Strands is a library, not a platform. There is no hosted control plane, scheduler or database to stand up first. The agent you run locally is the one you ship, wrapped in whatever entry point the host expects. The Strands deployment guides cover Amazon Bedrock AgentCore Runtime, AWS Lambda, AWS Fargate, AWS App Runner, Amazon EKS, Amazon EC2, Docker, Kubernetes, Terraform and the Nx Plugin for AWS.
What the guides flag:
- AgentCore Runtime is the AWS-managed path. Each user session gets its own microVM, sessions persist, and you pay for actual usage rather than provisioned capacity. It also hosts LangGraph and CrewAI agents, so it is not Strands-only.
- Lambda fits short invocations, and there is an official Lambda layer with the SDK bundled. The documented Lambda example does not stream responses. The docs point you to Fargate if you need streaming.
- Strands harness writes sessions and memory to a local
.agentdirectory by default. On containers or serverless hosts, point both at durable storage or the state disappears with the instance. AWS lists Modal, Cloudflare Containers, Azure Container Apps, Google Cloud Run, Amazon ECS and AgentCore as hosts for it.
Nothing locks you into AWS. Bedrock is the default model provider, but an agent running on an Anthropic or OpenAI key deploys to any container host.
What Strands costs
The SDK, the harness, the tools package and the CLI are all free under Apache 2.0. Your actual bill is:
- Model tokens from whichever provider you configure, or nothing beyond your own hardware if you run a local model through Ollama.
- Hosting: Lambda invocations, a Fargate task, AgentCore usage or your own servers.
- Optional AWS services you wire in, such as Bedrock Knowledge Bases for retrieval or AgentCore Memory for sessions.
Tokens usually dominate, which is why the harness launch leads with context management. It truncates tool results over roughly 1,500 tokens, compacts the conversation once the context window passes 85%, and recovers inside the loop if the window overflows.
Plenty of people researching agent SDKs really want one specific agent: something that reads their inbox, books meetings and chases follow-ups. Building that on Strands means Gmail and Outlook OAuth, calendar APIs, a host that stays awake for new mail and a model bill to watch. Carly is that agent already running. Connect all your email and calendar accounts, then just ask by email, text or the web app, and set up free Zapier-style workflows that fire on new email, calendar events, forms or a schedule. AI agents start at $35/month.
Strands vs LangGraph, CrewAI, OpenAI Agents SDK and Google ADK
| Strands Agents | LangGraph | CrewAI | OpenAI Agents SDK | Google ADK | |
|---|---|---|---|---|---|
| Maintainer | AWS | LangChain Inc. | CrewAI | OpenAI | |
| Languages | Python, TypeScript | Python, JS/TS | Python | Python, TypeScript | Python, TypeScript, Go, Java, Kotlin |
| License | Apache 2.0 | MIT | MIT | MIT | Apache 2.0 |
| Core idea | Model-driven loop: the model plans and picks tools | Low-level graph orchestration for long-running, stateful agents | Role-based “crews” of agents plus event-driven Flows | Lightweight agents with handoffs, guardrails and sessions | Code-first toolkit with a graph-based workflow runtime |
| Multi-agent | Agents as tools, Swarm, Graph, Workflow, A2A | Graphs of nodes and edges | Crews, plus Flows that orchestrate them | Handoffs and agents as tools | Agent hierarchies, workflows, a Task API for delegation |
| Models | Provider-agnostic, Bedrock by default | Any, usually through LangChain integrations | OpenAI by default, others configurable | OpenAI APIs plus 100+ other LLMs | Optimized for Gemini, model-agnostic |
| MCP | Built-in client | Through LangChain’s MCP adapter | Supported | Supported as a tool type | Supported as a tool type |
How to read it:
- Pick Strands if you are on AWS or want Bedrock with the least ceremony, want Python and TypeScript from one project, and would rather let the model drive than draw a graph. AgentCore and the Lambda layer keep the AWS deploy path short.
- Pick LangGraph if you want explicit control of every step and state transition, durable execution that resumes after failures, and human-in-the-loop checkpoints. LangSmith Deployment is its managed hosting.
- Pick CrewAI for role-based teams of agents in Python, with Flows when you need event-driven control. CrewAI’s commercial AMP Suite adds managed deployment and governance.
- Pick the OpenAI Agents SDK if you mostly run OpenAI models and want handoffs, guardrails and built-in tracing with a small API surface. Strands publishes a migration guide from it.
- Pick Google ADK if you are on Google Cloud, build on Gemini, or need Go, Java or Kotlin. Google’s managed runtime now lives under the platform that replaced Vertex AI Agent Builder.
If your stack is TypeScript on Cloudflare Workers, the Cloudflare Agents SDK is the closer fit, since durable state and scheduling are built into the Workers platform it runs on. Strands also publishes its own comparison of agent foundations, including when a hand-written loop is the better call. It is the vendor’s table, so read it that way.
FAQ
Is Strands Agents free?
Yes. The SDK, Strands harness and the tools package are open source under Apache 2.0 with no license fee. You pay your model provider for tokens and whatever host runs the agent.
Does Strands Agents only work on AWS?
No. Amazon Bedrock is the default model provider, but the same code runs on Anthropic, OpenAI, Google, Ollama and other providers, and the agent deploys to any container host. AWS lists Google Cloud Run, Azure Container Apps, Cloudflare Containers and Modal as hosts for Strands harness.
Does Strands support TypeScript?
Yes. The TypeScript SDK reached 1.0 on April 30, 2026 and requires Node.js 22+. Python still supports more model providers, including Ollama and LiteLLM, which are Python-only today.
What is the difference between Strands Agents and Strands harness?
Strands Agents is the project and its SDK, which gives you the agent loop and the parts to build your own agent. Strands harness, released September 21, 2026, is a ready-made agent built on that SDK with tools, memory, sessions and context management already chosen. You can start on the harness and drop down to the SDK for any piece later.
Does Strands Agents support MCP?
Yes. The SDK includes an MCP client that loads a server’s tools into the agent over stdio, Streamable HTTP or SSE. Separately, Strands ships a documentation MCP server you can add to Claude Code, Cursor, Codex or Kiro so your coding assistant writes code against current Strands APIs.
Who uses Strands Agents in production?
At launch AWS named Amazon Q Developer, AWS Glue and VPC Reachability Analyzer as production users. By April 2026 the team reported more than 25 million downloads of the Python SDK.
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
See what people say
"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.
Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.
On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."


