Strands.

Open-source agent SDK

The loop you were
about to write.

Choose it when you would otherwise hand-roll an agent loop. It runs in your process, with no hosted control plane between you and the model.

In your process. The project is explicit that there is no hosted control plane, and that it covers the jobs a hand-rolled loop grows into.

what the loop grows into

From the project's own list
Lifecycle controlsTurn limits, token budgets, cancellation, stop reasons.
Tools and structured outputIncluding MCP.
Memory and sessionsState that survives a turn.
Multi-agent patternsMore than one loop in a room.
Guardrails and tracingWhat went wrong, and why.
EvalsWhether the change helped.

one SDK, two languages

harness-py
A fully assembled agent via create_harness.
harness-ts
The same, via createHarness.
strands-cli
Prototype and chat with a harness agent from the terminal.
strands-py / strands-ts
The loop, model providers and tools underneath.

Capabilities and package names are reproduced from the repository's own listing.
Apache 2.0, with the documentation site in the same monorepo.

What stays your choice

Any model

Model portability is listed as a first-class concern rather than a plugin.

Any cloud

It runs where your process runs; nothing is routed through a vendor control plane.

Either language

Python and TypeScript are maintained together in one repository.