Strands Agents SDK
AWS's open-source, model-driven SDK for building production AI agents in a few lines of code
About
Strands is AWS's open-source agent framework: a model-driven SDK (Python and TypeScript) where creating an agent is constructing an object in your own process — no hosted control plane, scheduler, or database to stand up first. Amazon Bedrock (Claude) is the default model provider, but Anthropic, OpenAI, Google, and Ollama are documented one-line swaps. It covers the full production surface: function tools, MCP, multi-agent patterns (swarms, graphs, workflows, agents-as-tools, A2A), session management, lifecycle hooks, OpenTelemetry tracing, and voice via bidirectional streaming. A newer 'Strands harness' layer adds tested defaults (model, tools, memory, context management) on top of the same SDK so you can start batteries-included and drop down to custom control later.
What it can do
- **Agent loop:** model-driven agent loop with streaming responses and structured output (both SDKs)
- **Tools:** custom function tools, MCP client support, 30+ community tools in Python (`strands-agents-tools`); 4 built-in vended tools in TS
- **Multi-agent:** swarms, graphs, workflows, agents-as-tools, and Agent-to-Agent (A2A) patterns (both SDKs)
- **Session management:** file, S3, and repository-backed session managers
- **Context:** null, sliding-window, and summarizing conversation managers
- **Observability:** OpenTelemetry integration (opt-in via standard OTEL_* env vars)
- **Steering:** agent steering / lifecycle hooks and custom hook providers
- **Voice:** experimental bidirectional streaming (Python: Nova Sonic, Gemini Live, OpenAI Realtime)
- **Harness layer:** `create_harness` / `createHarness` batteries-included entry point with tested defaults
Setup
Python
- Requires Python 3.10+
pip install strands-agents strands-agents-tools- Configure your model provider (default: AWS credentials with Bedrock model access for Claude; or configure Anthropic/OpenAI/Google/Ollama instead)
- Build your first agent:
```python
from strands import Agent
from strands_tools import calculator
agent = Agent(tools=[calculator])
agent("What is the square root of 1764")
```
TypeScript
- Requires Node.js 20+
npm install @strands-agents/sdkimport { Agent } from '@strands-agents/sdk'; const agent = new Agent(); await agent.invoke('...')
Prerequisites
Python 3.10+ (or Node.js 20+ for the TypeScript SDK). If you keep the default model provider: AWS credentials and Bedrock model access for Claude enabled in your region. If you swap providers: an API key for Anthropic, OpenAI, or Google — or a local Ollama instance (Python SDK only). No AWS account needed at all when a non-Bedrock provider is used.
Use cases
Works with
Trust score — 9/10
Scored 9/10 (verified tier, metrics-v1). Evidence: 8,786 GitHub stars (log-scaled vs catalog peers); blended with ~37,112,498 monthly package downloads; last push 0d ago; 90 releases/12mo; 1023 open issues. Manual review: repos consolidated into strands-agents/harness-sdk monorepo; old SDK/docs repos archived; 'under 20 minutes' marketing. License: Apache-2.0.
★ 8,786 GitHub stars
How the trust score is built
Full methodology →- Adoption · stars/downloads, log-scaled vs peers
- 8.2/10
- Maintenance · recency, releases, issue load
- 8.2/10
- Openness · license + docs
- 10.0/10
- Manual review · sanity read + red-flag check
- 9.0/10
- · 8,786 GitHub stars (log-scaled vs catalog peers)
- · blended with ~37,112,498 monthly package downloads
- · last push 0d ago; 90 releases/12mo; 1023 open issues
- · manual review: repos consolidated into strands-agents/harness-sdk monorepo; old SDK/docs repos archived; 'under 20 minutes' marketing
Sources
Every fact above was checked against these sources. Where a claim comes from the provider and couldn't be independently verified, the text says so.