›About strands
Strands Agents — harness-sdk (github.com/strands-agents/harness-sdk), ~6.6k★. A model-driven approach to building AI agents in just a few lines of code. Tagline: "Build an agent harness. Control it end-to-end." Docs: strandsagents.com.
MONOREPO LAYOUT:
- strands-py/ — Python SDK (agent loop, model providers, tools). Package: `strands-agents` on PyPI.
- strands-ts/ — TypeScript SDK (agent loop, providers, tools). Package: `@strands-agents/sdk` on npm.
- strandly/ — Developer CLI for local builds + workspace tasks.
- team/designs/ — Governance, RFC-style proposals showing roadmap.
4 PILLARS:
1. Build your way — any model, any cloud (Bedrock, Anthropic, OpenAI, Gemini, Ollama, LiteLLM, llama.cpp, Mistral, Writer, SageMaker + custom providers). Swap backends freely.
2. Batteries included — conversation/context management (SlidingWindowConversationManager, SummarizingConversationManager), execution limits, OpenTelemetry observability built in.
3. Hooks — intercept any step of the agent loop (BeforeInvocation, AfterInvocation, BeforeToolCall, AfterToolCall, MessageAdded, …) to log, trace, or modify.
4. Safety — Guardrails catch mistakes pre-execution; Steering corrects instead of silently failing.
ALSO BUILT IN: MCP client (stdio / streamable-HTTP / SSE), streaming (stream_async / invoke_async), multi-agent patterns (Graph, Swarm, Workflow, agents-as-tools), structured output (Pydantic / Zod), session managers (file, S3), A2A protocol support.
TOOLS: `@tool` decorator on any Python function (docstring + type hints become the schema). TS: `tool({ name, description, inputSchema: z.object(...), callback })`. Prebuilt tools: `strands-agents-tools` (calculator, file_read/write, shell, http_request, python_repl, use_aws, editor, image_reader, retrieve, memory, …).
QUICK START — Python (3.10+, defaults to Bedrock / Claude Sonnet; `pip install strands-agents strands-agents-tools`):
```python
from strands import Agent, tool
from strands_tools import calculator
@tool
def word_count(text: str) -> int:
"""Count words in text."""
return len(text.split())
agent = Agent(tools=[calculator, word_count])
agent("What is the square root of 1764, and how many words was that question?")
```
SWAP MODEL — Python:
```python
from strands import Agent
from strands.models.anthropic import AnthropicModel
model = AnthropicModel(model_id="claude-sonnet-4-20250514", max_tokens=2048)
agent = Agent(model=model)
```
QUICK START — TypeScript (Node 20+; `npm i @strands-agents/sdk`):
```typescript
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)
```
STREAMING — Python:
```python
async for event in agent.stream_async("Tell me a story"):
if "data" in event:
print(event["data"], end="")
```
HOOKS — Python:
```python
from strands.hooks import HookProvider, HookRegistry, BeforeToolCallEvent
class Audit(HookProvider):
def register_hooks(self, registry: HookRegistry) -> None:
registry.add_callback(BeforeToolCallEvent, lambda e: print("tool:", e.tool_use["name"]))
agent = Agent(hooks=[Audit()])
```
STRUCTURED OUTPUT — Python:
```python
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
person = agent.structured_output(Person, "John is 30 years old.")
```
MCP — Python:
```python
from mcp import stdio_client, StdioServerParameters
from strands.tools.mcp import MCPClient
mcp = MCPClient(lambda: stdio_client(StdioServerParameters(command="uvx", args=["awslabs.aws-documentation-mcp-server@latest"])))
with mcp:
agent = Agent(tools=mcp.list_tools_sync())
agent("How do I create an S3 bucket?")
```
RELATED ORGS / REPOS:
- strands-agents (production): sdk-python, sdk-typescript, tools (~1.1k★), agent-samples, samples (~800★), mcp-server (~290★), shell (Rust), evals (~160★), devtools, docs.
- strands-labs (experiments): robots (~100★), ai-functions (~290★), benchmark-harnesses, robots-sim, harness-optimizer, audio processing, strands-for-cosmos.
- Community extension family (by @cagataycali): strands-mlx (Apple Silicon provider), strands-transformers, strands-diffusers, strands-sapiens, strands-sql, strands-strudel, strands-minecraft, devduck (self-adapting single-file agent).
WHEN UNSURE: point to github.com/strands-agents and strandsagents.com rather than guessing an API name.