Strands Agents

Framework · Last verified 2026-09-30

TL;DR

Strands Agents is Amazon's Apache-2.0 SDK for building agents in Python and TypeScript; its repo, formerly strands-agents/sdk-python, is now the harness-sdk monorepo that also ships a ready-made Strands harness. It offers agents-as-tools, swarm, graph and workflow patterns plus MCP and A2A. It suits teams wanting in-process agents across model providers, especially on AWS.

Key facts

Strands Agents key facts. Data as of 2026-09-30.
Type Framework
Languages / SDKs Python, TypeScript
License Apache-2.0
Pricing model Open source, free
Orchestration pattern Supervisor
GitHub stars 8,573 (as of 2026-09-30)
GitHub forks 1,289
Last push 2026-09-29
Latest release harness-cli/v0.1.4
Repository strands-agents/harness-sdk
Website strandsagents.com
Documentation strandsagents.com
Last verified 2026-09-30

Key features

  • Model-driven agent loop with lifecycle controls such as turn limits, token budgets, cancellation and stop reasons, plus hooks on every step. (source)
  • Four documented multi-agent patterns: agents as tools, Swarm, Graph and Workflow, with a comparison of when to use each. (source)
  • Swarm lets specialist agents hand tasks to each other with shared context, bounded by max handoffs, timeouts and repeated-handoff detection. (source)
  • Graph runs agents, custom nodes or nested swarms along edges, with conditional edges and cyclic topologies for feedback loops. (source)
  • A2A in both directions: A2AAgent calls remote agents and A2AServer publishes a Strands agent, in Python and TypeScript. (source)
  • MCPClient loads tools from MCP servers in Python and TypeScript, over stdio, Streamable HTTP or SSE. (source)
  • Interrupts pause an agent (or a swarm or graph) for human input and resume from the same point. (source)
  • Session managers persist conversations and agent state, including Graph and Swarm state at the orchestrator. (source)

Architecture and orchestration pattern

Pattern: Supervisor

A Strands Agent runs a model-driven loop: the model reads the conversation, decides on tool calls, the SDK executes them and feeds results back, and the loop ends on a stop reason, a turn or token limit, or cancellation. Hooks fire at each lifecycle event so code can log, validate or redirect a step. The newer Strands harness is a thin factory (create_harness() / createHarness()) that returns a pre-configured Agent with built-in tools, sub-agents, memory and context management.

Multi-agent work has four documented shapes. With agents as tools, an orchestrator agent calls specialist agents like any tool. Swarm hands a task between agents that choose their own successor, sharing a history of handoffs. Graph follows developer-defined nodes and edges, where conditional edges pick the path and cycles are allowed; nodes can themselves be swarms. A Workflow is a fixed DAG of tasks run as one tool. A2A connects agents across processes or frameworks.

State is kept per agent in its conversation and state objects and persisted through session managers (in Python SnapshotSessionManager for new single-agent sessions, FileSessionManager or S3SessionManager for Graph and Swarm). For multi-agent systems only the orchestrator holds a session manager. The harness also keeps long-term memory of distilled facts across sessions by default.

Human in the loop

The SDK has an interrupt mechanism: a hook callback or tool raises an interrupt, the agent loop stops and returns the pending interrupts, and the caller supplies responses to resume from the same point. The HumanInTheLoop intervention handler builds on this to let a person approve, edit or reject a tool call, with modes for CLI, web or custom UIs and optional session-level trust. Interrupts also work inside Swarm and Graph runs, and the harness adds presets, natural-language rules and Cedar policies for gating tool calls.

Harnesses it can drive

Protocols

MCP, A2A and AG-UI support for Strands Agents. See the full matrix.
ProtocolSupportNote
MCP Yes evidence
checked 2026-09-30
Client in Python and TypeScript: MCPClient/McpClient loads an MCP server's tools into an agent. The repo also ships a separate documentation MCP server (strands-mcp).
A2A Yes evidence
checked 2026-09-30
Client and server: A2AAgent consumes remote A2A agents and A2AServer serves a Strands agent, with Python and TypeScript examples.
AG-UI Partial evidence
checked 2026-09-30
The Strands docs mark the AG-UI integration as community/partner-maintained and Python-only (package ag-ui-strands), although the AG-UI README lists AWS Strands Agents under 1st Party.

Best for

  • Teams on AWS that want Bedrock by default and documented deploy paths to Lambda, Fargate, EC2 or Bedrock AgentCore.
  • Deployments that need policy-gated tool calls (human approval, Cedar policies) and IAM-authenticated MCP connections.
  • TypeScript services that want the same agent, MCP, A2A and multi-agent APIs as the Python SDK.
  • Running agents on local models through the Ollama provider.
  • Comparing swarm, graph and agents-as-tools designs without switching frameworks.

Not for

  • Teams looking for a hosted control plane or managed agent service; Strands runs in your process.
  • Quick trials without AWS setup unless you switch providers; the default model provider is Amazon Bedrock.
  • Java or .NET projects.

Quickstart

pip install strands-agents

Install not yet verified by this site. What this means

from strands import Agent
from strands.multiagent import Swarm

# Default model: Claude on Amazon Bedrock (us-west-2), so AWS credentials are needed.
researcher = Agent(name="researcher", system_prompt="Gather key facts, then hand off to the writer.")
writer = Agent(name="writer", system_prompt="Write a short, clear answer from the facts you receive.")

swarm = Swarm(
    [researcher, writer],
    entry_point=researcher,
    max_handoffs=6,
    execution_timeout=300.0,
)
result = swarm("Explain what a B-tree index is in three sentences.")
print(result.status, [node.node_id for node in result.node_history])

Common pitfalls

  • The Python SDK needs Python 3.10+; the TypeScript SDK (npm install @strands-agents/sdk) needs Node.js 22+.
  • Amazon Bedrock is the default provider (Claude Sonnet in us-west-2): set AWS_BEARER_TOKEN_BEDROCK or normal AWS credentials, and enable model access in the Bedrock console. Other providers need extras such as pip install 'strands-agents[anthropic]'.
  • Ready-made tools like calculator live in the separate strands-agents-tools package.
  • The assembled harness is a different package (pip install strands-harness) from the SDK (strands-agents).
  • Agents placed inside a Graph or Swarm must not have their own session manager; Python raises ValueError.
  • README links under /docs/user-guide/concepts/... point to paths that moved; use the current docs navigation.

Official quickstart

Pros

  • One SDK covers agents as tools, Swarm, Graph and Workflow, with a documented comparison of trade-offs. (source)
  • A2A client and server plus MCP client are available in both Python and TypeScript. (source)
  • Interrupt-and-resume and a ready-made human approval handler, including for multi-agent runs. (source)
  • Provider-agnostic model layer (Bedrock, Anthropic, OpenAI, Gemini, Ollama, LiteLLM and others). (source)
  • Frequent releases across packages (python/v1.57.1 and typescript/v1.19.0 in September 2026). (source)

Cons

  • The repository was renamed and turned into a monorepo that merged the TypeScript SDK, docs and MCP server; package names stayed the same, but repo and docs links changed. (source)
  • An open bug says MCPClient cannot connect to servers using the 2026-07-28 MCP protocol version because the SDK pins mcp<2.0.0. (source)
  • An open bug reports Graph treating a cancelled child agent result as completed and routing it downstream. (source)
  • Python and TypeScript are not at feature parity; an open tracking issue lists the gaps. (source)
  • AG-UI support is a partner-maintained, Python-only integration rather than part of the SDK. (source)

Alternatives

FAQ

What happened to the strands-agents Python SDK repository?

It was consolidated into a monorepo with the TypeScript SDK, docs and MCP server and now lives at strands-agents/harness-sdk. The announcement says PyPI and npm package names and install commands did not change.

Does Strands Agents support MCP, A2A and AG-UI?

MCP (client) and A2A (client and server) are built into both SDKs. AG-UI works through a partner-maintained, Python-only package according to the Strands docs.

Is Strands Agents free?

The SDK is Apache-2.0 licensed and runs in your process with no hosted control plane. The default model provider, Amazon Bedrock, is billed by AWS; other providers bill separately.

What is the difference between the Strands SDK and Strands harness?

The SDK (strands-agents) gives you the agent loop, tools, providers and multi-agent primitives. Strands harness (strands-harness) is a factory on top that returns a pre-configured agent with built-in tools, memory and context management.

Which multi-agent pattern should I use in Strands?

The docs suggest Graph for fixed flows with conditional branches or loops, Swarm for open-ended collaboration through handoffs, Workflow for a repeatable DAG run as one tool, and agents as tools for simple delegation.

Sources