harness-sdk

strands-agentsApache-2.0活跃维护

用 Python 和 TypeScript 搭建生产级 AI 智能体运行框架,端到端掌控智能体行为,兼容任意模型和云平台。

Build an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python & TypeScript - any model, any cloud.

typescript/v1.24.0发布于 2026-11-04 19:54 UTC9,142star +67 / 7 天1,497fork同步于 2026-11-10 17:31 UTC

怎么上手

由 README 提炼,执行前请确认
pip install strands-harness
npm install @strands-agents/harness
硬件要求按 README 说明

README 未说明显存或 GPU 要求;模型可走云端 API(默认 Amazon Bedrock),也可接 Ollama 等本地 provider。Python 需 3.10+,TypeScript 需 Node.js 22+ 的 ESM 项目。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

开源 Python/TypeScript AI Agent SDK,自带完整 agent 循环,省去自己手写循环的麻烦

用 Python 和 TypeScript 搭建生产级 AI 智能体运行框架,端到端掌控智能体行为,兼容任意模型和云平台。

核心能力

  • 用 create_harness() 一行装配带默认配置的完整 agent
  • 内置生命周期控制:轮次上限、token 预算、取消与停止原因
  • 支持 MCP、流式输出、多 agent 模式与结构化输出
  • 模型无关,一等支持 Bedrock、Anthropic、OpenAI、Gemini
  • 默认追踪每步决策,可用 hooks 拦截日志、校验或改向

容易踩的坑

TypeScript 需在 Node.js 22+ 且 package.json 设 "type": "module" 的 ESM 项目中使用;默认走 Amazon Bedrock,需先配置 AWS 凭证或另传模型;想自己掌控 agent 循环要改装 SDK 包(strands-agents / @strands-agents/sdk),harness 包只是装配好的默认版。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本typescript/v1.24.0
  1. typescript/v1.24.0最新正式版2026-11-04 · 2026-11-04 19:54 UTC

    typescript/v1.24.0

    Auto-drafted from commits in typescript/v1.23.0..typescript/v1.24.0, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.

    🚀 Features

    • feat(docs): add migration guide from strands-agents-tools (#5730) (f078b5c71)
    • feat(openai): place explicit cache points on GPT-5.6+ by default (#5418) (663987245)
    • feat(site): import versioned external docs (#5666) (e4a0ee28d)
    • feat(ts): let ClassifierStrategy route with any DecisionModel (#5219) (6d14c4a15)
    • feat(site): surface releases in the community hub and add a compact docs footer (#5432) (027cc1503)
    • feat(python): add SystemOneDecisionModel for Jev and decisionapi.net (#5590) (3baec37fe)
    • feat(site): render samples as documentation guides (#5337) (713bee385)
    • feat(ts): expose messages to BeforeInvocationEvent (#4370) (be920d4c0)
    • feat(storage): add S3 Vectors search strategy for S3Storage in Python (#5552) (d6c3da424)

    🐛 Fixes

    • fix(openai): report maxTokens instead of toolUse when a Responses tool call is cut off (TypeScript) (#5749) (73b64caad)
    • fix(gemini): classify any HTTP 429 as throttling (TypeScript) (#5751) (379c84ff5)
    • fix(models): detect Nova and OpenAI-style Bedrock context overflow errors (py + ts) (#5746) (7eb9671a3)
    • fix(sagemaker): raise ModelThrottledException when the model container returns 429 (#5750) (33ee9afce)
    • fix(models): return an empty assistant message when a stream ends without a message start (#5762) (1d129a448)
    • fix(models): retry transient request failures in VercelModel and GoogleModel (#5663) (bd8c83da8)
    • fix(mcp): load @modelcontextprotocol/ext-tasks lazily so CommonJS loaders can import the SDK (#5732) (134c08240)
    • fix(bedrock): send toolResult status to Amazon Nova models (TypeScript) (#5748) (26ce3f33d)
    • fix(bedrock): send toolResult status to Amazon Nova models (Python) (#5747) (82732034b)
    • fix(python): summarizer fallback truncates the largest text blocks first, not every oversized block (#5691) (930fcadac)

    📚 Documentation

    • docs: add Python code snippet to vended tools quickstart (#5816) (0bd132a06)
    • docs: document passing a DecisionModel as the HumanInTheLoop classifier (#5593) (b93d73054)
    • docs(bedrock): update reasoning section (#5640) (28c123eb3)
    • docs(site): rename projects navigation to docs (#5705) (e098a3283)
    • docs(changelog): sync release notes (#5660) (1af083deb)

    ✅ Tests

    • test(storage): add S3VectorSearchStrategy integration test (TypeScript) (#5547) (69c2aec08)
    • test(harness-ts): stop the legacy claude 3 max tokens test depending on an unreleased SDK (#5701) (a70987973)

    👷 CI

    • ci(docs): bump unist-util-visit from 5.1.0 to 5.2.0 in /site (#5611) (3228f9bfe)
    • ci(docs): bump @astrojs/markdown-satteri from 0.4.5 to 0.4.6 in /site (#5721) (04de9aa35)
    • ci: bump astral-sh/setup-uv from 10.3.2 to 10.3.3 (#5717) (21c87a64d)
    • ci(typescript): bump @hono/node-server from 1.19.17 to 2.1.6 (#5728) (8ec469557)
    • ci: link box discussions and the box repo from the issue chooser (#5729) (9b5510953)
    • ci(docs): bump @astrojs/markdown-remark from 7.3.4 to 7.3.5 in /site (#5718) (f04172428)
    • ci(site): load samples in documentation previews (#5725) (1c6e8a8ed)

    🔧 Chores

    • chore(site): refresh catalog stats (#5716) (c3e507605)
  2. python/v1.64.02026-11-04 · 2026-11-04 19:53 UTC
    查看更新说明

    python/v1.64.0

    Auto-drafted from commits in python/v1.63.0..python/v1.64.0, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.

    🚀 Features

    • feat(docs): add migration guide from strands-agents-tools (#5730) (f078b5c71)
    • feat(openai): place explicit cache points on GPT-5.6+ by default (#5418) (663987245)
    • feat(site): import versioned external docs (#5666) (e4a0ee28d)
    • feat(ts): let ClassifierStrategy route with any DecisionModel (#5219) (6d14c4a15)
    • feat(site): surface releases in the community hub and add a compact docs footer (#5432) (027cc1503)
    • feat(python): add SystemOneDecisionModel for Jev and decisionapi.net (#5590) (3baec37fe)
    • feat(site): render samples as documentation guides (#5337) (713bee385)
    • feat(ts): expose messages to BeforeInvocationEvent (#4370) (be920d4c0)
    • feat(storage): add S3 Vectors search strategy for S3Storage in Python (#5552) (d6c3da424)

    🐛 Fixes

    • fix(openai): report maxTokens instead of toolUse when a Responses tool call is cut off (TypeScript) (#5749) (73b64caad)
    • fix(gemini): classify any HTTP 429 as throttling (TypeScript) (#5751) (379c84ff5)
    • fix(models): detect Nova and OpenAI-style Bedrock context overflow errors (py + ts) (#5746) (7eb9671a3)
    • fix(sagemaker): raise ModelThrottledException when the model container returns 429 (#5750) (33ee9afce)
    • fix(models): return an empty assistant message when a stream ends without a message start (#5762) (1d129a448)
    • fix(models): retry transient request failures in VercelModel and GoogleModel (#5663) (bd8c83da8)
    • fix(mcp): load @modelcontextprotocol/ext-tasks lazily so CommonJS loaders can import the SDK (#5732) (134c08240)
    • fix(bedrock): send toolResult status to Amazon Nova models (TypeScript) (#5748) (26ce3f33d)
    • fix(bedrock): send toolResult status to Amazon Nova models (Python) (#5747) (82732034b)

    📚 Documentation

    • docs: add Python code snippet to vended tools quickstart (#5816) (0bd132a06)
    • docs: document passing a DecisionModel as the HumanInTheLoop classifier (#5593) (b93d73054)
    • docs(bedrock): update reasoning section (#5640) (28c123eb3)
    • docs(site): rename projects navigation to docs (#5705) (e098a3283)
    • docs(changelog): sync release notes (#5660) (1af083deb)

    ✅ Tests

    • test(storage): add S3VectorSearchStrategy integration test (TypeScript) (#5547) (69c2aec08)

    👷 CI

    • ci(docs): bump unist-util-visit from 5.1.0 to 5.2.0 in /site (#5611) (3228f9bfe)
    • ci(docs): bump @astrojs/markdown-satteri from 0.4.5 to 0.4.6 in /site (#5721) (04de9aa35)
    • ci: bump astral-sh/setup-uv from 10.3.2 to 10.3.3 (#5717) (21c87a64d)
    • ci(typescript): bump @hono/node-server from 1.19.17 to 2.1.6 (#5728) (8ec469557)
    • ci: link box discussions and the box repo from the issue chooser (#5729) (9b5510953)
    • ci(docs): bump @astrojs/markdown-remark from 7.3.4 to 7.3.5 in /site (#5718) (f04172428)
    • ci(site): load samples in documentation previews (#5725) (1c6e8a8ed)

    🔧 Chores

    • chore(site): refresh catalog stats (#5716) (c3e507605)
  3. harness-cli/v0.2.42026-11-04 · 2026-11-04 19:53 UTC
    查看更新说明

    harness-cli/v0.2.4

    Auto-drafted from commits in harness-cli/v0.2.3..harness-cli/v0.2.4, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.

    🚀 Features

    • feat(docs): add migration guide from strands-agents-tools (#5730) (f078b5c71)
    • feat(openai): place explicit cache points on GPT-5.6+ by default (#5418) (663987245)
    • feat(site): import versioned external docs (#5666) (e4a0ee28d)
    • feat(ts): let ClassifierStrategy route with any DecisionModel (#5219) (6d14c4a15)
    • feat(site): surface releases in the community hub and add a compact docs footer (#5432) (027cc1503)
    • feat(python): add SystemOneDecisionModel for Jev and decisionapi.net (#5590) (3baec37fe)
    • feat(site): render samples as documentation guides (#5337) (713bee385)
    • feat(ts): expose messages to BeforeInvocationEvent (#4370) (be920d4c0)
    • feat(storage): add S3 Vectors search strategy for S3Storage in Python (#5552) (d6c3da424)
    • feat(models): default Bedrock maxTokens to the model info output limit (Python + TypeScript) (#5645) (0a50a80ad)
    • feat(models): add Model.model_info with capabilities and limits (Python) (#5627) (bcd704b4b)

    🐛 Fixes

    • fix(openai): report maxTokens instead of toolUse when a Responses tool call is cut off (TypeScript) (#5749) (73b64caad)
    • fix(gemini): classify any HTTP 429 as throttling (TypeScript) (#5751) (379c84ff5)
    • fix(models): detect Nova and OpenAI-style Bedrock context overflow errors (py + ts) (#5746) (7eb9671a3)
    • fix(sagemaker): raise ModelThrottledException when the model container returns 429 (#5750) (33ee9afce)
    • fix(models): return an empty assistant message when a stream ends without a message start (#5762) (1d129a448)
    • fix(models): retry transient request failures in VercelModel and GoogleModel (#5663) (bd8c83da8)
    • fix(mcp): load @modelcontextprotocol/ext-tasks lazily so CommonJS loaders can import the SDK (#5732) (134c08240)
    • fix(bedrock): send toolResult status to Amazon Nova models (TypeScript) (#5748) (26ce3f33d)
    • fix(bedrock): send toolResult status to Amazon Nova models (Python) (#5747) (82732034b)
    • fix(python): summarizer fallback truncates the largest text blocks first, not every oversized block (#5691) (930fcadac)
    • fix(models): keep Bedrock auto caching on for Claude ids the model info does not list (Python + TypeScript) (#5697) (68749c6fb)
    • fix(gemini): stop thought signatures from splitting streamed answer text (#5662) (a45d1be20)

    📚 Documentation

    • docs: add Python code snippet to vended tools quickstart (#5816) (0bd132a06)
    • docs: document passing a DecisionModel as the HumanInTheLoop classifier (#5593) (b93d73054)
    • docs(bedrock): update reasoning section (#5640) (28c123eb3)
    • docs(site): rename projects navigation to docs (#5705) (e098a3283)
    • docs(changelog): sync release notes (#5660) (1af083deb)
    • docs(site): add Skai testimonial to homepage (#5678) (2f1fc6662)
    • docs(site): split vended tools page into one page per tool (#5540) (e68d402bf)

    ✅ Tests

    • test(storage): add S3VectorSearchStrategy integration test (TypeScript) (#5547) (69c2aec08)
    • test(harness-ts): stop the legacy claude 3 max tokens test depending on an unreleased SDK (#5701) (a70987973)

    👷 CI

    • ci(docs): bump unist-util-visit from 5.1.0 to 5.2.0 in /site (#5611) (3228f9bfe)
    • ci(docs): bump @astrojs/markdown-satteri from 0.4.5 to 0.4.6 in /site (#5721) (04de9aa35)
    • ci: bump astral-sh/setup-uv from 10.3.2 to 10.3.3 (#5717) (21c87a64d)
    • ci(typescript): bump @hono/node-server from 1.19.17 to 2.1.6 (#5728) (8ec469557)
    • ci: link box discussions and the box repo from the issue chooser (#5729) (9b5510953)
    • ci(docs): bump @astrojs/markdown-remark from 7.3.4 to 7.3.5 in /site (#5718) (f04172428)
    • ci(site): load samples in documentation previews (#5725) (1c6e8a8ed)
    • ci(typescript): update dev dependencies and move tests to vitest 5 (#5617) (0f8bf1a85)

    🔧 Chores

    • chore(site): refresh catalog sta
  4. harness-typescript/v0.3.42026-11-04 · 2026-11-04 19:29 UTC
    查看更新说明

    harness-typescript/v0.3.4

    Auto-drafted from commits in harness-typescript/v0.3.3..harness-typescript/v0.3.4, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.

    🚀 Features

    • feat(docs): add migration guide from strands-agents-tools (#5730) (f078b5c71)
    • feat(openai): place explicit cache points on GPT-5.6+ by default (#5418) (663987245)
    • feat(site): import versioned external docs (#5666) (e4a0ee28d)
    • feat(ts): let ClassifierStrategy route with any DecisionModel (#5219) (6d14c4a15)
    • feat(site): surface releases in the community hub and add a compact docs footer (#5432) (027cc1503)
    • feat(python): add SystemOneDecisionModel for Jev and decisionapi.net (#5590) (3baec37fe)
    • feat(site): render samples as documentation guides (#5337) (713bee385)
    • feat(ts): expose messages to BeforeInvocationEvent (#4370) (be920d4c0)
    • feat(storage): add S3 Vectors search strategy for S3Storage in Python (#5552) (d6c3da424)

    🐛 Fixes

    • fix(openai): report maxTokens instead of toolUse when a Responses tool call is cut off (TypeScript) (#5749) (73b64caad)
    • fix(gemini): classify any HTTP 429 as throttling (TypeScript) (#5751) (379c84ff5)
    • fix(models): detect Nova and OpenAI-style Bedrock context overflow errors (py + ts) (#5746) (7eb9671a3)
    • fix(sagemaker): raise ModelThrottledException when the model container returns 429 (#5750) (33ee9afce)
    • fix(models): return an empty assistant message when a stream ends without a message start (#5762) (1d129a448)
    • fix(models): retry transient request failures in VercelModel and GoogleModel (#5663) (bd8c83da8)
    • fix(mcp): load @modelcontextprotocol/ext-tasks lazily so CommonJS loaders can import the SDK (#5732) (134c08240)
    • fix(bedrock): send toolResult status to Amazon Nova models (TypeScript) (#5748) (26ce3f33d)
    • fix(bedrock): send toolResult status to Amazon Nova models (Python) (#5747) (82732034b)

    📚 Documentation

    • docs: add Python code snippet to vended tools quickstart (#5816) (0bd132a06)
    • docs: document passing a DecisionModel as the HumanInTheLoop classifier (#5593) (b93d73054)
    • docs(bedrock): update reasoning section (#5640) (28c123eb3)
    • docs(site): rename projects navigation to docs (#5705) (e098a3283)
    • docs(changelog): sync release notes (#5660) (1af083deb)

    ✅ Tests

    • test(storage): add S3VectorSearchStrategy integration test (TypeScript) (#5547) (69c2aec08)

    👷 CI

    • ci(docs): bump unist-util-visit from 5.1.0 to 5.2.0 in /site (#5611) (3228f9bfe)
    • ci(docs): bump @astrojs/markdown-satteri from 0.4.5 to 0.4.6 in /site (#5721) (04de9aa35)
    • ci: bump astral-sh/setup-uv from 10.3.2 to 10.3.3 (#5717) (21c87a64d)
    • ci(typescript): bump @hono/node-server from 1.19.17 to 2.1.6 (#5728) (8ec469557)
    • ci: link box discussions and the box repo from the issue chooser (#5729) (9b5510953)
    • ci(docs): bump @astrojs/markdown-remark from 7.3.4 to 7.3.5 in /site (#5718) (f04172428)
    • ci(site): load samples in documentation previews (#5725) (1c6e8a8ed)

    🔧 Chores

    • chore(site): refresh catalog stats (#5716) (c3e507605)
  5. harness-python/v0.3.42026-11-04 · 2026-11-04 19:28 UTC
    查看更新说明

    harness-python/v0.3.4

    Auto-drafted from commits in harness-python/v0.3.3..harness-python/v0.3.4, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.

    🚀 Features

    • feat(docs): add migration guide from strands-agents-tools (#5730) (f078b5c71)
    • feat(openai): place explicit cache points on GPT-5.6+ by default (#5418) (663987245)
    • feat(site): import versioned external docs (#5666) (e4a0ee28d)
    • feat(ts): let ClassifierStrategy route with any DecisionModel (#5219) (6d14c4a15)
    • feat(site): surface releases in the community hub and add a compact docs footer (#5432) (027cc1503)
    • feat(python): add SystemOneDecisionModel for Jev and decisionapi.net (#5590) (3baec37fe)
    • feat(site): render samples as documentation guides (#5337) (713bee385)
    • feat(ts): expose messages to BeforeInvocationEvent (#4370) (be920d4c0)
    • feat(storage): add S3 Vectors search strategy for S3Storage in Python (#5552) (d6c3da424)
    • feat(models): default Bedrock maxTokens to the model info output limit (Python + TypeScript) (#5645) (0a50a80ad)
    • feat(models): add Model.model_info with capabilities and limits (Python) (#5627) (bcd704b4b)

    🐛 Fixes

    • fix(openai): report maxTokens instead of toolUse when a Responses tool call is cut off (TypeScript) (#5749) (73b64caad)
    • fix(gemini): classify any HTTP 429 as throttling (TypeScript) (#5751) (379c84ff5)
    • fix(models): detect Nova and OpenAI-style Bedrock context overflow errors (py + ts) (#5746) (7eb9671a3)
    • fix(sagemaker): raise ModelThrottledException when the model container returns 429 (#5750) (33ee9afce)
    • fix(models): return an empty assistant message when a stream ends without a message start (#5762) (1d129a448)
    • fix(models): retry transient request failures in VercelModel and GoogleModel (#5663) (bd8c83da8)
    • fix(mcp): load @modelcontextprotocol/ext-tasks lazily so CommonJS loaders can import the SDK (#5732) (134c08240)
    • fix(bedrock): send toolResult status to Amazon Nova models (TypeScript) (#5748) (26ce3f33d)
    • fix(bedrock): send toolResult status to Amazon Nova models (Python) (#5747) (82732034b)
    • fix(python): summarizer fallback truncates the largest text blocks first, not every oversized block (#5691) (930fcadac)
    • fix(models): keep Bedrock auto caching on for Claude ids the model info does not list (Python + TypeScript) (#5697) (68749c6fb)
    • fix(gemini): stop thought signatures from splitting streamed answer text (#5662) (a45d1be20)

    📚 Documentation

    • docs: add Python code snippet to vended tools quickstart (#5816) (0bd132a06)
    • docs: document passing a DecisionModel as the HumanInTheLoop classifier (#5593) (b93d73054)
    • docs(bedrock): update reasoning section (#5640) (28c123eb3)
    • docs(site): rename projects navigation to docs (#5705) (e098a3283)
    • docs(changelog): sync release notes (#5660) (1af083deb)
    • docs(site): add Skai testimonial to homepage (#5678) (2f1fc6662)
    • docs(site): split vended tools page into one page per tool (#5540) (e68d402bf)

    ✅ Tests

    • test(storage): add S3VectorSearchStrategy integration test (TypeScript) (#5547) (69c2aec08)
    • test(harness-ts): stop the legacy claude 3 max tokens test depending on an unreleased SDK (#5701) (a70987973)

    👷 CI

    • ci(docs): bump unist-util-visit from 5.1.0 to 5.2.0 in /site (#5611) (3228f9bfe)
    • ci(docs): bump @astrojs/markdown-satteri from 0.4.5 to 0.4.6 in /site (#5721) (04de9aa35)
    • ci: bump astral-sh/setup-uv from 10.3.2 to 10.3.3 (#5717) (21c87a64d)
    • ci(typescript): bump @hono/node-server from 1.19.17 to 2.1.6 (#5728) (8ec469557)
    • ci: link box discussions and the box repo from the issue chooser (#5729) (9b5510953)
    • ci(docs): bump @astrojs/markdown-remark from 7.3.4 to 7.3.5 in /site (#5718) (f04172428)
    • ci(site): load samples in documentation previews (#5725) (1c6e8a8ed)
    • ci(typescript): update dev dependencies and move tests to vitest 5 (#5617) (0f8bf1a85)

    🔧 Chores

    • chore(site): refresh ca

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Strands Agents is an open-source SDK for building and running AI agents in Python and TypeScript. Choose Strands when you would otherwise write your own agent loop: it runs in your process with no hosted control plane, and it covers the jobs a hand-rolled loop grows into. In one SDK you get lifecycle controls (turn limits, token budgets, cancellation, stop reasons), tools and structured output, MCP, multi-agent patterns, memory and sessions, model portability, streaming, guardrails, tracing, and evals.

    Using a coding agent? Install the Strands plugin for Claude Code, Codex, or Cursor. It adds framework selection, scaffolding, tool authoring, MCP server connections, web framework guides, and LangGraph migration guidance. See Use Strands with AI coding agents for install and verification steps.

    This monorepo contains Strands harness, the Python and TypeScript SDKs, the documentation site, and supporting packages:

    DirectoryDescription
    harness-py/Python Strands harness: fully assembled agent via create_harness() (PyPI · docs)
    harness-ts/TypeScript Strands harness: fully assembled agent via createHarness() (npm · docs)
    strands-cli/strands CLI: prototype and chat with a harness agent from the terminal (npm)
    strands-py/Python SDK: agent loop, model providers, tools (PyPI · releases)
    strands-ts/TypeScript SDK: agent loop, model providers, tools (npm · releases)
    strands-mcp/MCP server that gives coding agents knowledge about building with Strands Agents (PyPI)
    site/Source for the strandsagents.com documentation site (Astro/Starlight)
    team/Governance and cross-SDK process docs (tenets, decisions, PR & compatibility guidelines, and designs/ proposals)
    test-infra/CDK stack provisioning the AWS resources a subset of integration tests run against (knowledge bases, SSH sandboxes)

    Why Strands

    Build an agent harness. Control it end-to-end.

    • Build your way. Any model, any cloud. Context management, execution limits, and observability built in before you write a line of config. Swap backends when you scale; your code stays the same.
    • Model agnostic. First-class support for Amazon Bedrock, Anthropic, OpenAI, and Gemini, plus many more providers and custom ones.
    • Stay in control. The agent loop traces every decision by default. Hooks let you intercept any step to log it, validate it, or redirect it.
    • Deliver outcomes that work. Guardrails catch mistakes before they run. Steering handlers let agents correct themselves instead of failing silently.

    MCP, streaming, multi-agent patterns, and structured output are all built in.

    Quick Start

    The easiest way to get started is with Strands harness, a fully assembled, state-of-the-art agent. A single create_harness() (Python) or createHarness() (TypeScript) call gives you an optimized agent with benchmarked defaults for the model, tools, memory, sessions, and context management — ready to take from idea to production. Follow the harness quickstart, or see the Python Strands harness and TypeScript Strands harness packages to get started.

    Python

    pip install strands-harness
    
    from strands_harness import create_harness
    
    agent = create_harness()
    agent("Find the slowest test in this repo and explain why it's slow")
    

    TypeScript

    npm install @strands-agents/harness
    
    import { createHarness } from '@strands-agents/harness'
    
    const agent = await createHarness()
    await agent.invoke("Find the slowest test in this repo and explain why it's slow")
    

    Start here to get a batteries-included agent, then drop down to the SDKs below when you want to own the agent loop and wire up tools, model providers, and memory yourself. The harness configuration reference documents every default you can override.

    The Quickstart Guide covers configuring providers (Amazon Bedrock, Anthropic, OpenAI, Gemini, Ollama, and more).

    Working with the SDK

    The Strands Harness SDK lets you go deeper and control every part of the agent: the loop, tools, model providers, memory, sessions, and hooks. You can dive into the SDK after working with Strands harness or if you prefer building your own harness from the ground up when the assembled defaults aren't enough.

    Python

    Requires Python 3.10+:

    pip install strands-agents
    
    from strands import Agent
    from strands.vended_tools import http_request
    
    agent = Agent(tools=[http_request])
    agent("Tell me about the Strands harness features: https://strandsagents.com/docs/user-guide/harness/index.md")
    

    The Python SDK README covers tools, model providers, MCP, and bidirectional streaming.

    TypeScript

    To build a Strands agent in TypeScript, install the SDK in a Node.js 22+ ESM project ("type": "module"):

    npm install @strands-agents/sdk
    
    import { Agent } from '@strands-agents/sdk'
    import { httpRequest } from '@strands-agents/sdk/vended-tools/http-request'
    
    const agent = new Agent({ tools: [httpRequest] })
    await agent.invoke('Tell me about the Strands harness features: https://strandsagents.com/docs/user-guide/harness/index.md')
    

    The agent uses Amazon Bedrock by default, so configure AWS credentials or pass another model. Start with the TypeScript quickstart to configure a model provider, run your first agent, and add tools. Use the TypeScript API reference for the full SDK surface, or explore more examples in the TypeScript SDK README.

    Documentation

    For detailed guidance & examples, explore our documentation:

    The docs themselves live in this monorepo under site/, and doc PRs are welcome alongside code changes.

    Development

    Git operations (commits, branches, PRs) are done from the repo root. Each package has its own toolchain:

    Python SDK (strands-py/):

    cd strands-py
    pip install hatch
    hatch test        # run unit tests
    hatch fmt         # format & lint
    

    TypeScript SDK (strands-ts/):

    npm ci            # install from repo root
    npm run build     # build
    npm test          # run unit tests
    

    Documentation site (site/):

    cd site
    npm install
    npm run dev       # local dev server at http://localhost:4321/
    

    Contributing ❤️

    We welcome contributions! See our Contributing Guide for details on:

    • Reporting bugs & features
    • Development setup
    • Contributing via Pull Requests
    • Code of Conduct
    • Reporting of security issues

    Stay in touch with the team

    Come meet the Strands team and other users on Discord

    License

    This project is licensed under the Apache License 2.0 - see the LICENSE.APACHE file for details.

    Security

    See CONTRIBUTING for more information.