Explore by Toolkit

Start

/harness

Strands harness is a state-of-the-art, fully assembled agent harness.

  • Optimized
  • CLI or library
  • Fully customizable

/harness

Strands harness is a fully assembled, state-of-the-art agent harness. It gives you an optimized agent with benchmarked defaults for the system prompt, tools, memory, sessions, and context management, ready to take from idea to production.

  • Optimized defaults Every default is tuned and optimized. Spend your time on what makes your agent different, not on wiring up a harness piece by piece.

  • CLI or library Build an agent with the strands CLI, or import it in Python or TypeScript.

  • Customize anything Strands harness is built on the Strands Harness SDK, so nothing is a black box. Swap the model provider, override any default, add your own tools, or go all the way down to the primitives, with no rewrite.

1 from strands_harness import create_harness
2
3 agent = create_harness()
4 agent("Summarize what this repository does")
View more

Build

/harness-sdk

The Harness SDK for building an agent harness from the ground up.

  • Own the loop
  • Tools & MCP
  • Any model

/harness-sdk

Build an agent harness from the ground up, end to end. The Strands Harness SDK runs the agent loop and gives you the pieces to attach to it: tools, model providers, memory, sessions, and hooks. Nothing is pre-decided.

  • You own the loop Choose every component and how they fit. Hooks, interventions, and context management give you control at every step.

  • Tools, your way Turn any function into a tool with the @tool decorator, or connect MCP servers. The schema comes from your type hints and docstring.

  • Any model provider Bedrock, Anthropic, OpenAI, Google, Ollama, and more. The model is one object you hand to the agent; the rest of your code stays the same.

1 from strands import Agent, tool
2
3 @tool
4 def search_docs(query: str) -> str:
5 """Search the documentation."""
6 return index.search(query)
7
8 agent = Agent(
9 model="global.anthropic.claude-sonnet-5",
10 tools=[search_docs],
11 )
12 agent("Find the pricing guide")
View more

Control

/shell

A virtual shell designed for AI agents to use safely.

  • Sandboxed
  • MCP server
  • Python/TS

/shell

Strands Shell is a Bourne-compatible shell that runs inside your own process. It ships grep, sed, jq, curl, find, and dozens of other commands without fork, exec, or a raw syscall. You declare which host files, URLs, and credentials it can reach, and everything else is invisible to the agent.

  • In-process sandbox Runs dozens of Unix commands inside your process: no fork, no exec, no raw syscall, no container to manage.

  • You declare the surface Bind directories, inject credentials, and set the network allowlist. Everything else does not exist to the agent.

  • Python, Node, or MCP Embed it directly from Python or Node.js, or point any MCP client at the built-in server.

1 import strands_shell
2
3 shell = strands_shell.Shell(
4 binds=[strands_shell.Bind("/my/project", "/workspace", mode="copy")],
5 )
6
7 result = shell.run("grep -rn TODO /workspace")
8 print(result.stdout)
View more

Validate

/evals

Validate your agent before you ship.

  • Score
  • Diagnose
  • Simulate

/evals

Strands Evals lets you validate your agent before you ship. Score its output and its trajectory, find the root cause when a case fails, and simulate the users and tools it will meet in production.

  • Score 25+ built-in evaluators check a single answer, a full turn, or a whole conversation: output quality, tool selection, trajectory, goal success, and safety.

  • Diagnose When a case fails, detectors read the trace, find the span where things went wrong, and propose a root cause. Scoring says whether; diagnosis says why.

  • Simulate Simulators play the user or stand in for a tool, so you can score multi-turn behavior and run red-team attacks without a human in the loop.

1 from strands import Agent
2 from strands_evals import eval_task, Case, Experiment
3 from strands_evals.evaluators import OutputEvaluator
4
5 @eval_task()
6 def task():
7 return Agent(system_prompt="You are helpful.")
8
9 cases = [Case[str, str](
10 input="Capital of France?", expected_output="Paris")]
11
12 Experiment[str, str](cases=cases,
13 evaluators=[OutputEvaluator(rubric="Correct?")],
14 ).run_evaluations(task)
View more

Explore

/labs

Experimental projects pushing the boundaries of what agents can do.

  • Robotics
  • World models
  • Benchmarks

/labs

Strands Labs is the experimental arm of Strands Agents: open source projects that take the Strands Harness SDK into new problem spaces. They move faster and cover more surface area than the core Strands Harness SDK, so expect more frequent changes and newer integrations.

  • Robots Control, simulate, and train robots with natural language. Sim-first, with 70+ robots behind one interface.

  • World models and benchmarks Agentic benchmark harnesses, harness optimization, and world-model research built on the Strands Harness SDK.

  • Works alongside the Strands Harness SDK today Each project is published to package repositories and lives in its own repository under strands-labs. Some graduate into the core Strands Harness SDK; others stay experimental.

View more

Bring your own model — works with every major provider

Use Cases

Built for the agent you need

Automate multi-step processes, ship assistants that reason over your own data, run research agents that work autonomously, or control robots in the physical world.

strands-agents/samples

lead_router.ts

1 import { createHarness } from '@strands-agents/harness'
2 import { tool } from '@strands-agents/sdk'
3 import z from 'zod'
4
5 const classifyLead = tool({
6 name: 'classify_lead',
7 description: 'Score and classify a lead.',
8 inputSchema: z.object({
9 email: z.string(),
10 company: z.string(),
11 }),
12 callback: ({ email, company }) => {
13 const data = crm.lookup(company)
14 return {
15 leadId: crm.createLead(email, company),
16 score: computeIcpScore(data),
17 segment: data.industry,
18 }
19 },
20 })
21
22 const routeToRep = tool({
23 name: 'route_to_rep',
24 description: 'Assign a lead to a rep.',
25 inputSchema: z.object({
26 leadId: z.string(),
27 region: z.string(),
28 }),
29 callback: ({ leadId, region }) => {
30 const rep = crm.getRepForRegion(region)
31 crm.assign(leadId, rep)
32 return `Assigned to ${rep}`
33 },
34 })
35
36 const agent = await createHarness({
37 tools: [classifyLead, routeToRep],
38 })
39
40 await agent.invoke(
41 'New lead: jane@acme.com, Acme Corp, US-West'
42 )

At Smartsheet, we chose Strands for our next generation of AI capabilities because it provided the perfect balance of enterprise-ready features and development efficiency. Its robust conversation memory and dynamic tool registration systems were crucial for creating a responsive, context-aware intelligent AI assistant. With Strands, we were able to quickly implement a secure and scalable solution, giving us a production-ready foundation to deliver a secure, high-performance, and enterprise-grade AI experience.

JB Brown

VP Engineering, Smartsheet

Transform traditional error alerts into intelligent incident responses using Amazon Bedrock, RAG with Amazon OpenSearch, Multi-Agent Orchestration with Strands SDK, and Kiro AI IDE - reducing MTTR by 60% without manual coding.

Harsha Mathan

Data Engineering Manager, Verisk Analytics

Strands’ SDK and great integration with AWS native services streamlined Landchecker’s development of agents. With easier integration of AgentCore Runtime, Bedrock Guardrails, and built-in support for OpenTelemetry, we could focus on what we do best – developing property information tools and data integrations.

Rupert de Guzman

CTO, Landchecker

At Swisscom, we need an agentic AI backbone that is both enterprise-ready and future-proof. Strands Agents gives us the best of both worlds: a native fit with our cloud environment, yet fully open source and flexible. That combination allowed us to build proof-of-concepts within just a few weeks and now sets us on the path to scale multi-agent systems with confidence, while keeping our focus on delivering real value to customers and the business.

Arun Sittampalam

Director of Product Management, Swisscom

The advisor is where things get interesting. We use the Strands Agents SDK to define an agent with a tool, a function the model can call during its reasoning loop.

Anton Ganhammar

Principal Engineer, Elva

We chose Strands because it’s AWS-native, intuitive, and made agent development accessible across our engineering team. Its abstraction layer and built-in multi-agent patterns (like Agent-as-Tool and Swarm) let us focus on remediation logic instead of infrastructure work. We’ve already built multiple agents, and wiring them together has been seamless. On top of that, we layered our Agentic Remediation™ capability to automate vulnerability fixes and configuration validation/fault correction workflows, coordinating cross-agent remediation with precision

Ben Seri

CTO & Co-Founder, Zafran Security

Scaling our global trading platform required reimagining our support capabilities, and Strands Agents was the key to making it happen at enterprise scale. What would traditionally take months of development, Strands allowed us to achieve in just 10 days - delivering a secure, robust, production-ready agentic solution. The results speak for themselves: investigation time dropped on average from 30 minutes to 45 seconds, investigation quality improved by 94%, and we saved $5M in operational costs. Strands didn’t just accelerate our development - it gave us the confidence to explore other agentic AI use cases across our entire business, including launching our Agentic Security Operations Center

Bryn Newell

CIO, Eightcap

Adding bidirectional voice to my existing Strands agent was surprisingly straightforward. BidiAgent handles the WebSocket complexity and interruption logic, my @tool functions carried over unchanged, and the same code deploys to AgentCore without modification. Strands made real-time voice feel like a natural extension, not a separate project.

Darryl Ruggles

Cloud Solutions Architect, Ciena

We see Strands as a great fit to power TeamForm’s next evolution of Agentic AI. Our customers need enterprise-grade security and scalability, which is exactly what Strands delivers. Its seamless integration with AWS and simplicity enables us to focus on innovating our AI capabilities and delivering value to our customers.

David Marozas

Head of Engineering, TeamForm

For Jit’s infrastructure drift detection agent, we leverage Strands Agents, an open-source framework developed by AWS for building production-ready AI agents. Strands Agents provides several advantages including simplified development, native AWS integration, and built-in security.

David Melamed

Co-Founder & CTO, Jit

As someone who builds agents with LangGraph daily at work, Strands was a genuine surprise. The model-driven approach cut my setup from 40 lines to 3 — and for the 80% case, it just works without sacrificing flexibility.

Tetiana Mostova

Software Engineer & AWS Community Builder

Strands Agents on Bedrock turns autonomous agents into an enterprise product: governed, observable, and safe by design. Together with Claude models, we analyze live webpages and generate code responsibly - helping customers reduce risk while accelerating delivery. Safety is non-negotiable in offensive security. On Amazon Bedrock, Strands Agents plus Claude let us scale autonomous pen-testing with Bedrock Guardrails - increasing coverage without increasing risk.

Gal Malachi

Co-founder & CTO, Terra Security

The combination of the Strands Agents SDK and Tavily represents a significant advancement in enterprise-grade research agent development. This integration can help organizations build sophisticated, secure, and scalable AI agents while maintaining the highest standards of security and performance. Learn more in this blog.

Dean Sacoransky

Forward Deployed Engineering Leader, Tavily

Strands was used to build a growing set of agents that run a company to do actual tasks.

Jacob Verhoeks

AWS Community Builder / Field CTO Data & AI

Push the boundaries of what agents can do.