// the find
strands-agents/harness-sdk
Build an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python & TypeScript - any model, any cloud.
Strands Agents is an AWS-backed Python/TypeScript SDK for building production AI agents with a model-driven loop — the model decides what tools to call and when, rather than you wiring a fixed workflow. It ships first-class support for Bedrock, Anthropic, OpenAI, and Gemini, with MCP, streaming, and multi-agent patterns built in. Aimed at teams who want an agent harness they control end-to-end rather than a managed platform.
The model provider abstraction is real: swap Bedrock for Anthropic or OpenAI by changing one constructor argument, and your tools and agent logic don't move. The hooks API — intercept any step in the loop to log, validate, or redirect — is the right primitive for production observability, and it's baked in rather than grafted on. Both Python and TypeScript SDKs are maintained in the same monorepo with genuine parity, which is rare for agent frameworks that usually treat one as a second-class port. MCP support is first-class, not an afterthought, which matters as MCP becomes the standard way to expose tools.
It defaults to Amazon Bedrock everywhere — non-AWS users immediately fight the defaults, and the Bedrock integration will always be better maintained since AWS wrote this. The model-driven loop is powerful for open-ended tasks but it actively fights you when you need deterministic step ordering; the steering and guardrails mechanisms exist specifically to paper over cases where the model goes off-script, which is a tell. The evals SDK lives under `site/docs/examples/evals-sdk/` as loose example scripts rather than a published package, so it's illustrative code you'd copy-paste, not something you take a versioned dependency on. There is no built-in persistence layer — managing state across agent sessions is entirely your problem, which means every team reinvents the same memory/conversation-store wheel.