diff --git a/README.md b/README.md index ab9403f1d..c8ce68491 100644 --- a/README.md +++ b/README.md @@ -38,10 +38,13 @@ 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](https://strandsagents.com/docs/user-guide/concepts/agents/agent-loop/) (turn limits, token budgets, cancellation, stop reasons), [tools](https://strandsagents.com/docs/user-guide/concepts/tools/) and [structured output](https://strandsagents.com/docs/user-guide/concepts/agents/structured-output/), [MCP](https://strandsagents.com/docs/user-guide/concepts/tools/mcp-tools/), [multi-agent patterns](https://strandsagents.com/docs/user-guide/concepts/multi-agent/multi-agent-patterns/), [memory](https://strandsagents.com/docs/user-guide/concepts/memory/overview/) and [sessions](https://strandsagents.com/docs/user-guide/concepts/agents/session-management/), [model portability](https://strandsagents.com/docs/user-guide/concepts/model-providers/), [streaming](https://strandsagents.com/docs/user-guide/concepts/streaming/), [guardrails](https://strandsagents.com/docs/user-guide/safety-security/guardrails/), [tracing](https://strandsagents.com/docs/user-guide/observability-evaluation/observability/), and [evals](https://strandsagents.com/docs/user-guide/evals-sdk/quickstart/). -This monorepo contains the Python SDK, TypeScript SDK, documentation site, and supporting packages: +This monorepo contains Strands harness, the Python and TypeScript SDKs, the documentation site, and supporting packages: | Directory | Description | |-----------|-------------| +| [`harness-py/`](harness-py/) | Python Strands harness: fully assembled agent via `create_harness()` ([PyPI](https://pypi.org/project/strands-harness/) · [docs](https://strandsagents.com/docs/user-guide/harness/)) | +| [`harness-ts/`](harness-ts/) | TypeScript Strands harness: fully assembled agent via `createHarness()` ([npm](https://www.npmjs.com/package/@strands-agents/harness) · [docs](https://strandsagents.com/docs/user-guide/harness/)) | +| [`strands-cli/`](strands-cli/) | `strands` CLI: prototype and chat with a harness agent from the terminal ([npm](https://www.npmjs.com/package/@strands-agents/cli)) | | `strands-py/` | Python SDK: agent loop, model providers, tools ([PyPI](https://pypi.org/project/strands-agents/) · [releases](https://github.com/strands-agents/harness-sdk/releases?q=python%2F&expanded=false)) | | `strands-ts/` | TypeScript SDK: agent loop, model providers, tools ([npm](https://www.npmjs.com/package/@strands-agents/sdk) · [releases](https://github.com/strands-agents/harness-sdk/releases?q=typescript%2F&expanded=false)) | | `site/` | Source for the [strandsagents.com](https://strandsagents.com) documentation site (Astro/Starlight) | @@ -60,7 +63,41 @@ MCP, streaming, multi-agent patterns, and structured output are all built in. ## Quick Start -Both SDKs default to the Amazon Bedrock model provider, so you'll need AWS credentials configured and model access enabled for Claude Sonnet. The [Quickstart Guide](https://strandsagents.com/docs/user-guide/quickstart/overview/) covers configuring other providers (Anthropic, OpenAI, Gemini, Ollama, and more). +The easiest way to get started is with **[Strands harness](https://strandsagents.com/docs/user-guide/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](https://strandsagents.com/docs/user-guide/harness/quickstart/), or see the [Python Strands harness](harness-py/) and [TypeScript Strands harness](harness-ts/) packages to get started. + +### Python + +```bash +pip install strands-harness +``` + +```python +from strands_harness import create_harness + +agent = create_harness() +agent("Find the slowest test in this repo and explain why it's slow") +``` + +### TypeScript + +```bash +npm install @strands-agents/harness +``` + +```typescript +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](https://strandsagents.com/docs/user-guide/harness/reference/configuration/) documents every default you can override. + +The [Quickstart Guide](https://strandsagents.com/docs/user-guide/quickstart/overview/) 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 @@ -103,6 +140,7 @@ More in the [TypeScript SDK README](strands-ts/), including Zod-typed tools, str For detailed guidance & examples, explore our documentation: - [User Guide](https://strandsagents.com/) +- [Strands Harness Guide](https://strandsagents.com/docs/user-guide/harness/) ([quickstart](https://strandsagents.com/docs/user-guide/harness/quickstart/) · [configuration reference](https://strandsagents.com/docs/user-guide/harness/reference/configuration/)) - [Quick Start Guide](https://strandsagents.com/docs/user-guide/quickstart/overview/) - [Agent Loop](https://strandsagents.com/docs/user-guide/concepts/agents/agent-loop/) - [Examples](https://strandsagents.com/docs/examples/) diff --git a/site/public/embeds/strands-harness-benchmarks.html b/site/public/embeds/strands-harness-benchmarks.html index cdca4e9ed..16b38a72b 100644 --- a/site/public/embeds/strands-harness-benchmarks.html +++ b/site/public/embeds/strands-harness-benchmarks.html @@ -151,6 +151,7 @@ const HARNESS = { const POINTS = [ { h: "claude-code", m: "Claude Fable 5", s: 80.94, c: 1.8723 }, // Terminal-Bench cell substituted from harbor-report-sep17 { h: "claude-code", m: "Claude Opus 4.8", s: 77.32, c: 0.9827 }, + { h: "claude-code", m: "Claude Opus 5", s: 84.60, c: 1.0632 }, // ContextBench from harbor-report-sep17 { h: "claude-code", m: "Claude Sonnet 5", s: 71.55, c: 0.9739 }, { h: "codex", m: "GPT-5.6 Luna", s: 62.66, c: 0.0284 }, { h: "codex", m: "GPT-5.6 Sol", s: 76.59, c: 0.6283 }, diff --git a/site/src/content/blog/introducing-strands-harness.mdx b/site/src/content/blog/introducing-strands-harness.mdx index 10beacd78..801c48eee 100644 --- a/site/src/content/blog/introducing-strands-harness.mdx +++ b/site/src/content/blog/introducing-strands-harness.mdx @@ -21,7 +21,7 @@ We noticed builders often wished their Claude Code or Codex setup could run in t But the moment you build your own agent, you're on your own. It's tricky wiring up the right primitives just well enough to match that "it just worked" feeling. -Today we're releasing Strands harness: a fully assembled state-of-the-art agent harness you can easily run locally or deploy to your favorite provider. It's built to be a general-purpose agent rather than a coding agent. All you need is one line of Python or TypeScript to get it working with your choice of model. Strands harness beats other agent harnesses on cost efficiency while maintaining equal or better accuracy. It's available under an Apache 2.0 license. +Today we're releasing [Strands harness](https://github.com/strands-agents/harness-sdk/tree/main): a fully assembled state-of-the-art agent harness you can easily run locally or deploy to your favorite provider. It's built to be a general-purpose agent rather than a coding agent. All you need is one line of Python or TypeScript to get it working with your choice of model. Strands harness beats other agent harnesses on cost efficiency while maintaining equal or better accuracy. It's available under an Apache 2.0 license. Strands harness **costs 28% less** when using the same Claude or GPT models across six benchmarks. We found Strands harness showed better token-efficiency and nearly equal benchmark scores compared to Claude Code, Codex, and other popular harnesses. That's important because we never want to sacrifice accuracy for lower cost. Deepseek Harness proved to be the most token-efficient overall, however, it typically reported the lowest accuracy scores. Our testing setup was distributed benchmarking on EC2 with Harbor. @@ -223,6 +223,6 @@ We're excited for all kinds of agents that'll come to life with Strands harness. ## Try it out today -You can easily install Strands harness with `pip install strands-harness` for Python or `npm install @strands-agents/harness` for TypeScript. +You can easily install [Strands harness](https://strandsagents.com/docs/user-guide/harness/) with `pip install strands-harness` for Python or `npm install @strands-agents/harness` for TypeScript. For an interactive experience, download the Strands CLI: `npm install -g @strands-agents/cli`. We believe quickly prototyping with a batteries included harness will create more useful agents. Our team is also in [Discord](https://discord.gg/strands), so come say hi or ask us any question about agents! diff --git a/site/src/content/docs/user-guide/harness/index.mdx b/site/src/content/docs/user-guide/harness/index.mdx index 566335f6f..46f80a376 100644 --- a/site/src/content/docs/user-guide/harness/index.mdx +++ b/site/src/content/docs/user-guide/harness/index.mdx @@ -43,6 +43,17 @@ You do not have to pass anything. Import it, instantiate it, then give the agent Amazon Bedrock is the default. See [choose a model](./configure/model/) to run on Anthropic, OpenAI, Google, or Ollama. +Strands harness is open source — browse the source on GitHub: + + + + [`harness-py`](https://github.com/strands-agents/harness-sdk/tree/main/harness-py) — the Python package. + + + [`harness-ts`](https://github.com/strands-agents/harness-sdk/tree/main/harness-ts) — the TypeScript package. + + + ## Make it yours Strands harness is a powerful general-purpose harness that you can customize. It is opinionated diff --git a/site/src/content/docs/user-guide/harness/quickstart.mdx b/site/src/content/docs/user-guide/harness/quickstart.mdx index 4456c4796..4bcaf7685 100644 --- a/site/src/content/docs/user-guide/harness/quickstart.mdx +++ b/site/src/content/docs/user-guide/harness/quickstart.mdx @@ -75,7 +75,16 @@ on-ramp to the library below: build interactively, then drop into code. ## Use it as a library Prefer to write the code yourself? Install the Python or TypeScript package and run your -first agent in a few lines. +first agent in a few lines. The source lives on GitHub: + + + + [`harness-py`](https://github.com/strands-agents/harness-sdk/tree/main/harness-py) — the Python package. + + + [`harness-ts`](https://github.com/strands-agents/harness-sdk/tree/main/harness-ts) — the TypeScript package. + + ### Install