strands-agents/harness-sdkPublic

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

AI summary: An open-source SDK for building and controlling production AI agents end-to-end across any model or cloud provider.

Stars
8.6K
+53 today
Forks
1.3K
Watchers
55
Open issues
518
Open PRs
286
Contributors
~297
Commits
2.8K
Branches
31

PythonApache-2.0Created May 14, 2025Last push 1d agoLatest release harness-cli/v0.1.1+302 stars this week+826 this month

Quick answers

What is harness-sdk?
An open-source SDK for building and controlling production AI agents end-to-end across any model or cloud provider.
What does harness-sdk do?
Harness SDK provides a model-driven approach to constructing AI agents using Python or TypeScript. It abstracts away the complex plumbing required to connect large language models to custom tools, memory, and orchestration logic. The framework allows developers to build autonomous systems in just a few lines of code while retaining complete control over the execution loop. It supports any model provider, including OpenAI, Anthropic, and Amazon Bedrock, ensuring deployment flexibility. Ultimately, it accelerates the transition from experimental AI scripts to reliable, production-ready agentic applications.
Who is harness-sdk for?
This SDK is aimed at software engineers and AI developers who need to build, test, and deploy robust AI agents. It assumes familiarity with modern software development practices in Python or TypeScript.
How popular is harness-sdk on GitHub?
strands-agents/harness-sdk has 8,633 stars and 1,316 forks on GitHub, and gained 302 stars in the last 7 days.
What license does harness-sdk use?
strands-agents/harness-sdk is released under the Apache-2.0 license.

Star history

since Sep 23, 2026
02.5K5K7.5KSep 2026Sep 2026Sep 2026Oct 2026
8.6K stars as of Oct 3, 2026. Measured daily since Sep 23, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-28: 0 commits2025-09-29: 3 commits2025-09-30: 8 commits2025-10-01: 1 commit2025-10-02: 7 commits2025-10-03: 4 commits2025-10-04: 1 commit2025-10-05: 0 commits2025-10-06: 4 commits2025-10-07: 1 commit2025-10-08: 4 commits2025-10-09: 4 commits2025-10-10: 4 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 5 commits2025-10-15: 4 commits2025-10-16: 7 commits2025-10-17: 1 commit2025-10-18: 0 commits2025-10-19: 1 commit2025-10-20: 1 commit2025-10-21: 4 commits2025-10-22: 2 commits2025-10-23: 10 commits2025-10-24: 5 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 8 commits2025-10-28: 7 commits2025-10-29: 13 commits2025-10-30: 2 commits2025-10-31: 8 commits2025-11-01: 2 commits2025-11-02: 0 commits2025-11-03: 6 commits2025-11-04: 3 commits2025-11-05: 8 commits2025-11-06: 4 commits2025-11-07: 10 commits2025-11-08: 0 commits2025-11-09: 1 commit2025-11-10: 3 commits2025-11-11: 13 commits2025-11-12: 11 commits2025-11-13: 5 commits2025-11-14: 2 commits2025-11-15: 0 commits2025-11-16: 1 commit2025-11-17: 9 commits2025-11-18: 3 commits2025-11-19: 6 commits2025-11-20: 6 commits2025-11-21: 6 commits2025-11-22: 1 commit2025-11-23: 0 commits2025-11-24: 5 commits2025-11-25: 7 commits2025-11-26: 8 commits2025-11-27: 0 commits2025-11-28: 8 commits2025-11-29: 0 commits2025-11-30: 3 commits2025-12-01: 13 commits2025-12-02: 5 commits2025-12-03: 19 commits2025-12-04: 5 commits2025-12-05: 12 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 6 commits2025-12-09: 4 commits2025-12-10: 6 commits2025-12-11: 5 commits2025-12-12: 1 commit2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 1 commit2025-12-16: 1 commit2025-12-17: 8 commits2025-12-18: 6 commits2025-12-19: 7 commits2025-12-20: 2 commits2025-12-21: 1 commit2025-12-22: 6 commits2025-12-23: 9 commits2025-12-24: 4 commits2025-12-25: 0 commits2025-12-26: 2 commits2025-12-27: 1 commit2025-12-28: 0 commits2025-12-29: 5 commits2025-12-30: 7 commits2025-12-31: 1 commit2026-01-01: 0 commits2026-01-02: 5 commits2026-01-03: 1 commit2026-01-04: 0 commits2026-01-05: 2 commits2026-01-06: 5 commits2026-01-07: 6 commits2026-01-08: 1 commit2026-01-09: 4 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 9 commits2026-01-13: 7 commits2026-01-14: 3 commits2026-01-15: 11 commits2026-01-16: 6 commits2026-01-17: 1 commit2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 10 commits2026-01-21: 13 commits2026-01-22: 7 commits2026-01-23: 9 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 5 commits2026-01-27: 8 commits2026-01-28: 11 commits2026-01-29: 8 commits2026-01-30: 8 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 6 commits2026-02-03: 9 commits2026-02-04: 14 commits2026-02-05: 6 commits2026-02-06: 5 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 5 commits2026-02-10: 6 commits2026-02-11: 10 commits2026-02-12: 4 commits2026-02-13: 11 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 10 commits2026-02-17: 5 commits2026-02-18: 10 commits2026-02-19: 8 commits2026-02-20: 8 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 3 commits2026-02-24: 3 commits2026-02-25: 3 commits2026-02-26: 0 commits2026-02-27: 7 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 3 commits2026-03-03: 9 commits2026-03-04: 9 commits2026-03-05: 11 commits2026-03-06: 17 commits2026-03-07: 1 commit2026-03-08: 3 commits2026-03-09: 24 commits2026-03-10: 14 commits2026-03-11: 17 commits2026-03-12: 13 commits2026-03-13: 5 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 16 commits2026-03-17: 15 commits2026-03-18: 17 commits2026-03-19: 9 commits2026-03-20: 18 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 8 commits2026-03-24: 6 commits2026-03-25: 10 commits2026-03-26: 6 commits2026-03-27: 9 commits2026-03-28: 1 commit2026-03-29: 0 commits2026-03-30: 4 commits2026-03-31: 11 commits2026-04-01: 5 commits2026-04-02: 1 commit2026-04-03: 4 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 1 commit2026-04-07: 9 commits2026-04-08: 11 commits2026-04-09: 10 commits2026-04-10: 4 commits2026-04-11: 1 commit2026-04-12: 0 commits2026-04-13: 3 commits2026-04-14: 2 commits2026-04-15: 7 commits2026-04-16: 6 commits2026-04-17: 5 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 13 commits2026-04-21: 4 commits2026-04-22: 17 commits2026-04-23: 11 commits2026-04-24: 11 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 4 commits2026-04-28: 12 commits2026-04-29: 15 commits2026-04-30: 13 commits2026-05-01: 6 commits2026-05-02: 1 commit2026-05-03: 0 commits2026-05-04: 15 commits2026-05-05: 7 commits2026-05-06: 11 commits2026-05-07: 11 commits2026-05-08: 8 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 8 commits2026-05-12: 10 commits2026-05-13: 15 commits2026-05-14: 6 commits2026-05-15: 7 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 3 commits2026-05-19: 2 commits2026-05-20: 3 commits2026-05-21: 8 commits2026-05-22: 10 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 4 commits2026-05-27: 9 commits2026-05-28: 13 commits2026-05-29: 14 commits2026-05-30: 1 commit2026-05-31: 0 commits2026-06-01: 10 commits2026-06-02: 9 commits2026-06-03: 7 commits2026-06-04: 3 commits2026-06-05: 7 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 9 commits2026-06-09: 15 commits2026-06-10: 15 commits2026-06-11: 10 commits2026-06-12: 20 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 22 commits2026-06-16: 23 commits2026-06-17: 13 commits2026-06-18: 13 commits2026-06-19: 10 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 17 commits2026-06-23: 19 commits2026-06-24: 8 commits2026-06-25: 21 commits2026-06-26: 18 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 1 commit2026-06-30: 10 commits2026-07-01: 8 commits2026-07-02: 15 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 17 commits2026-07-07: 8 commits2026-07-08: 13 commits2026-07-09: 20 commits2026-07-10: 15 commits2026-07-11: 2 commits2026-07-12: 0 commits2026-07-13: 5 commits2026-07-14: 9 commits2026-07-15: 7 commits2026-07-16: 11 commits2026-07-17: 10 commits2026-07-18: 1 commit2026-07-19: 0 commits2026-07-20: 4 commits2026-07-21: 14 commits2026-07-22: 7 commits2026-07-23: 10 commits2026-07-24: 22 commits2026-07-25: 1 commit2026-07-26: 0 commits2026-07-27: 8 commits2026-07-28: 6 commits2026-07-29: 3 commits2026-07-30: 10 commits2026-07-31: 9 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 9 commits2026-08-04: 12 commits2026-08-05: 11 commits2026-08-06: 13 commits2026-08-07: 12 commits2026-08-08: 1 commit2026-08-09: 0 commits2026-08-10: 11 commits2026-08-11: 13 commits2026-08-12: 22 commits2026-08-13: 13 commits2026-08-14: 9 commits2026-08-15: 1 commit2026-08-16: 0 commits2026-08-17: 12 commits2026-08-18: 8 commits2026-08-19: 7 commits2026-08-20: 11 commits2026-08-21: 10 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 9 commits2026-08-25: 18 commits2026-08-26: 8 commits2026-08-27: 8 commits2026-08-28: 18 commits2026-08-29: 2 commits2026-08-30: 0 commits2026-08-31: 16 commits2026-09-01: 8 commits2026-09-02: 8 commits2026-09-03: 10 commits2026-09-04: 18 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 16 commits2026-09-09: 5 commits2026-09-10: 15 commits2026-09-11: 4 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 6 commits2026-09-15: 7 commits2026-09-16: 10 commits2026-09-17: 5 commits2026-09-18: 6 commits2026-09-19: 1 commit2026-09-20: 0 commits2026-09-21: 26 commits2026-09-22: 25 commits2026-09-23: 0 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits
2,196 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    2,196 commits in 52 weeks

  • Community-driven

    ~297 contributors

  • Well documented

    High community health score

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

  • Repeat trending

    3 trending appearances

What harness-sdk does

Harness SDK provides a model-driven approach to constructing AI agents using Python or TypeScript. It abstracts away the complex plumbing required to connect large language models to custom tools, memory, and orchestration logic. The framework allows developers to build autonomous systems in just a few lines of code while retaining complete control over the execution loop. It supports any model provider, including OpenAI, Anthropic, and Amazon Bedrock, ensuring deployment flexibility. Ultimately, it accelerates the transition from experimental AI scripts to reliable, production-ready agentic applications.

This SDK is aimed at software engineers and AI developers who need to build, test, and deploy robust AI agents. It assumes familiarity with modern software development practices in Python or TypeScript.

  • Multi-language support: Write agent logic using either Python or TypeScript SDKs.
  • Model agnosticism: Switch seamlessly between underlying LLM providers like OpenAI, Anthropic, and Bedrock.
  • Tool integration: Easily connect custom functions and APIs to the agent's action space.
  • Execution control: Retain fine-grained control over the agent's step-by-step reasoning and execution loops.
  • Production ready: Designed with reliability and observability in mind for real-world application deployments.

Where teams use it

Building custom autonomous agents

Developers creating specialized AI assistants tailored to internal enterprise data and workflows.

Cross-platform agent deployment

Teams migrating their agentic applications across different cloud providers and model ecosystems without rewriting logic.

Multi-agent systems orchestration

Architects designing complex systems where multiple specialized agents collaborate to solve large tasks.

Rapid prototyping to production

Startups quickly moving from experimental AI prompts to reliable, structured agent services.

README

main branch

Strands Agents

A model-driven approach to building AI agents in just a few lines of code.

GitHub commit activity GitHub open issues GitHub open pull requests License Python harness version TypeScript harness version CLI version Python SDK version TypeScript SDK version

Documentation ◆ Samples ◆ MCP Server ◆ Discord

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.

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

Directory Description
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)
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)

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 strands-agents-tools
from strands import Agent
from strands_tools import calculator

agent = Agent(tools=[calculator])
agent("What is the square root of 1764")

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

TypeScript

Requires Node.js 22+:

npm install @strands-agents/sdk
import { Agent } from '@strands-agents/sdk'

const agent = new Agent()
const result = await agent.invoke('What is the square root of 1764?')
console.log(result)

More in the TypeScript SDK README, including Zod-typed tools, structured output, and multi-agent patterns.

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.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 188

Releases and announcements

105 total
  1. typescript/v1.19.0typescript/v1.19.0Sep 22, 2026

    ## typescript/v1.19.0 _Auto-drafted from commits in `typescript/v1.18.0..typescript/v1.19.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(defaults): opus 5 and high thinking by default (#4460) (c3fc5ff81) - feat(site): launch the redesigned Strands website (#4446) (1fd2ad684) - feat: merge in the Strands harness (#4447) (4095cf5a6) - feat(bedrock): requestTimeout option on BedrockModel (#4408) (153c4230a) - feat(py): add mcp_router vended tool (#4252) (803a4d6f9) - feat(session-py): support snapshot session management for Graph and Swarm (#4240) (5d5ffd2b2) - feat(vended-tools): port handoff_to_user tool to TypeScript (#4382) (100429263) - feat(vended-tools): add handoff_to_user tool (#4348) (98b4977ec) - feat(bidi): distinguish audio deltas from complete content (#4366) (b14f1ba1c) - feat(models): select the bedrock-runtime endpoint from bedrock_mantle_config (#4360) (9a8349db6) - feat(bidi): accept shared content blocks as input (#4331) (a9361c54c) - feat(anthropic): non-clobbering seam for Anthropic-direct server-side tools (web search) (#35

  2. python/v1.57.0python/v1.57.0Sep 22, 2026

    ## python/v1.57.0 _Auto-drafted from commits in `python/v1.56.0..python/v1.57.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(defaults): opus 5 and high thinking by default (#4460) (c3fc5ff81) - feat(site): launch the redesigned Strands website (#4446) (1fd2ad684) - feat: merge in the Strands harness (#4447) (4095cf5a6) - feat(bedrock): requestTimeout option on BedrockModel (#4408) (153c4230a) - feat(py): add mcp_router vended tool (#4252) (803a4d6f9) - feat(session-py): support snapshot session management for Graph and Swarm (#4240) (5d5ffd2b2) - feat(vended-tools): port handoff_to_user tool to TypeScript (#4382) (100429263) - feat(vended-tools): add handoff_to_user tool (#4348) (98b4977ec) - feat(bidi): distinguish audio deltas from complete content (#4366) (b14f1ba1c) - feat(models): select the bedrock-runtime endpoint from bedrock_mantle_config (#4360) (9a8349db6) - feat(bidi): accept shared content blocks as input (#4331) (a9361c54c) ### 🐛 Fixes - fix(bidi): remove retired Nova Sonic 1 from integration tests (#4512) (d29c36e1f) - fix(cl

  3. harness-typescript/v0.1.1harness-typescript/v0.1.1Sep 22, 2026

    ## harness-typescript/v0.1.1 _Auto-drafted from commits in `harness-typescript/v0.1.0..harness-typescript/v0.1.1`, 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._ ### 🐛 Fixes - fix(cli): improve onboarding and terminal responsiveness (#4518) (2db407431) - fix(bidi): remove retired Nova Sonic 1 from integration tests (#4512) (d29c36e1f) - fix(cli): install provider SDKs with the CLI (#4508) (91a44787a) - fix(sandbox): preserve UTF-8 across stream chunk boundaries (#4157) (20231cb1e) - fix(mcp-py): send auth flow requests as yielded and strip decoded framing headers (#4233) (f4567bf1e) - fix(harness): let an explicit web_search: 'exa' win over native search (#4491) (523d4d0dc) - fix(harness): default effort back to 'auto' so no-reasoning models resolve (#4473) (98547f1f7) - fix(cli): depend on the published harness in exported projects (#4478) (8ecf1ebc1) - fix(harness): align Node requirement and default model docs (#4469) (1f08ea61c) ### ♻️ Refactoring - refactor(bidi): adopt production component names (#4444) (d6e957173) ### 📚 Documentation - docs(changelog): sync

  4. harness-python/v0.1.2harness-python/v0.1.2Sep 22, 2026

    ## harness-python/v0.1.2 _Auto-drafted from commits in `harness-python/v0.1.1..harness-python/v0.1.2`, 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._ ### 🐛 Fixes - fix(cli): improve onboarding and terminal responsiveness (#4518) (2db407431) - fix(bidi): remove retired Nova Sonic 1 from integration tests (#4512) (d29c36e1f) - fix(cli): install provider SDKs with the CLI (#4508) (91a44787a) - fix(sandbox): preserve UTF-8 across stream chunk boundaries (#4157) (20231cb1e) - fix(mcp-py): send auth flow requests as yielded and strip decoded framing headers (#4233) (f4567bf1e) - fix(harness): let an explicit web_search: 'exa' win over native search (#4491) (523d4d0dc) - fix(harness): default effort back to 'auto' so no-reasoning models resolve (#4473) (98547f1f7) - fix(cli): depend on the published harness in exported projects (#4478) (8ecf1ebc1) - fix(harness): align Node requirement and default model docs (#4469) (1f08ea61c) ### ♻️ Refactoring - refactor(bidi): adopt production component names (#4444) (d6e957173) ### 📚 Documentation - docs(changelog): sync strands-age

  5. harness-cli/v0.1.1harness-cli/v0.1.1Sep 22, 2026

    ## harness-cli/v0.1.1 _Auto-drafted from commits in `harness-cli/v0.1.0..harness-cli/v0.1.1`, 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._ ### 🐛 Fixes - fix(cli): align @strands-agents/sdk range with harness (fixes interventions instanceof crash) (#4530) (d13c21486) - fix(cli): improve onboarding and terminal responsiveness (#4518) (2db407431) - fix(bidi): remove retired Nova Sonic 1 from integration tests (#4512) (d29c36e1f) - fix(cli): install provider SDKs with the CLI (#4508) (91a44787a) - fix(sandbox): preserve UTF-8 across stream chunk boundaries (#4157) (20231cb1e) - fix(mcp-py): send auth flow requests as yielded and strip decoded framing headers (#4233) (f4567bf1e) - fix(harness): let an explicit web_search: 'exa' win over native search (#4491) (523d4d0dc) - fix(harness): default effort back to 'auto' so no-reasoning models resolve (#4473) (98547f1f7) ### ♻️ Refactoring - refactor(bidi): adopt production component names (#4444) (d6e957173) ### 📚 Documentation - docs(changelog): sync strands-agents/harness-sdk python/v1.57.0 (#4517) (880c5bd41) - docs(ch

Code frequency

additions and deletions
+174.4K-174.4KWeek of 2025-09-28: +3,573 linesWeek of 2025-09-28: -523 linesWeek of 2025-10-05: +2,798 linesWeek of 2025-10-05: -243 linesWeek of 2025-10-12: +3,712 linesWeek of 2025-10-12: -493 linesWeek of 2025-10-19: +9,090 linesWeek of 2025-10-19: -979 linesWeek of 2025-10-26: +14,466 linesWeek of 2025-10-26: -2,574 linesWeek of 2025-11-02: +9,623 linesWeek of 2025-11-02: -3,445 linesWeek of 2025-11-09: +7,247 linesWeek of 2025-11-09: -960 linesWeek of 2025-11-16: +7,948 linesWeek of 2025-11-16: -3,391 linesWeek of 2025-11-23: +10,926 linesWeek of 2025-11-23: -709 linesWeek of 2025-11-30: +47,710 linesWeek of 2025-11-30: -15,995 linesWeek of 2025-12-07: +2,923 linesWeek of 2025-12-07: -2,541 linesWeek of 2025-12-14: +3,719 linesWeek of 2025-12-14: -804 linesWeek of 2025-12-21: +1,935 linesWeek of 2025-12-21: -1,811 linesWeek of 2025-12-28: +6,347 linesWeek of 2025-12-28: -250 linesWeek of 2026-01-04: +5,394 linesWeek of 2026-01-04: -2,980 linesWeek of 2026-01-11: +4,091 linesWeek of 2026-01-11: -1,041 linesWeek of 2026-01-18: +6,110 linesWeek of 2026-01-18: -6,248 linesWeek of 2026-01-25: +6,379 linesWeek of 2026-01-25: -5,729 linesWeek of 2026-02-01: +11,593 linesWeek of 2026-02-01: -4,847 linesWeek of 2026-02-08: +6,795 linesWeek of 2026-02-08: -1,050 linesWeek of 2026-02-15: +13,805 linesWeek of 2026-02-15: -2,323 linesWeek of 2026-02-22: +5,526 linesWeek of 2026-02-22: -2,651 linesWeek of 2026-03-01: +57,254 linesWeek of 2026-03-01: -42,291 linesWeek of 2026-03-08: +30,464 linesWeek of 2026-03-08: -18,587 linesWeek of 2026-03-15: +12,507 linesWeek of 2026-03-15: -6,080 linesWeek of 2026-03-22: +11,696 linesWeek of 2026-03-22: -4,688 linesWeek of 2026-03-29: +5,174 linesWeek of 2026-03-29: -1,140 linesWeek of 2026-04-05: +6,102 linesWeek of 2026-04-05: -387 linesWeek of 2026-04-12: +14,708 linesWeek of 2026-04-12: -196 linesWeek of 2026-04-19: +95,687 linesWeek of 2026-04-19: -71,062 linesWeek of 2026-04-26: +17,402 linesWeek of 2026-04-26: -6,196 linesWeek of 2026-05-03: +18,387 linesWeek of 2026-05-03: -3,955 linesWeek of 2026-05-10: +19,533 linesWeek of 2026-05-10: -17,144 linesWeek of 2026-05-17: +108,104 linesWeek of 2026-05-17: -97,579 linesWeek of 2026-05-24: +131,402 linesWeek of 2026-05-24: -131,348 linesWeek of 2026-05-31: +21,261 linesWeek of 2026-05-31: -7,081 linesWeek of 2026-06-07: +25,874 linesWeek of 2026-06-07: -4,183 linesWeek of 2026-06-14: +43,440 linesWeek of 2026-06-14: -12,802 linesWeek of 2026-06-21: +17,551 linesWeek of 2026-06-21: -16,816 linesWeek of 2026-06-28: +5,842 linesWeek of 2026-06-28: -4,314 linesWeek of 2026-07-05: +13,028 linesWeek of 2026-07-05: -4,206 linesWeek of 2026-07-12: +6,829 linesWeek of 2026-07-12: -1,546 linesWeek of 2026-07-19: +15,231 linesWeek of 2026-07-19: -2,933 linesWeek of 2026-07-26: +9,547 linesWeek of 2026-07-26: -2,204 linesWeek of 2026-08-02: +23,493 linesWeek of 2026-08-02: -6,134 linesWeek of 2026-08-09: +17,441 linesWeek of 2026-08-09: -2,094 linesWeek of 2026-08-16: +16,401 linesWeek of 2026-08-16: -3,277 linesWeek of 2026-08-23: +17,408 linesWeek of 2026-08-23: -2,747 linesWeek of 2026-08-30: +28,244 linesWeek of 2026-08-30: -11,047 linesWeek of 2026-09-06: +14,398 linesWeek of 2026-09-06: -3,274 linesWeek of 2026-09-13: +10,363 linesWeek of 2026-09-13: -4,200 linesWeek of 2026-09-20: +174,369 linesWeek of 2026-09-20: -66,483 linesSep 28, 2025Sep 20, 2026
+1.2M lines added, -617.6K removed over the last year.

Commits per week

last 52 weeks
830Week of 2025-09-28: 24 commitsWeek of 2025-10-05: 17 commitsWeek of 2025-10-12: 17 commitsWeek of 2025-10-19: 23 commitsWeek of 2025-10-26: 40 commitsWeek of 2025-11-02: 31 commitsWeek of 2025-11-09: 35 commitsWeek of 2025-11-16: 32 commitsWeek of 2025-11-23: 28 commitsWeek of 2025-11-30: 57 commitsWeek of 2025-12-07: 22 commitsWeek of 2025-12-14: 25 commitsWeek of 2025-12-21: 23 commitsWeek of 2025-12-28: 19 commitsWeek of 2026-01-04: 18 commitsWeek of 2026-01-11: 37 commitsWeek of 2026-01-18: 39 commitsWeek of 2026-01-25: 40 commitsWeek of 2026-02-01: 40 commitsWeek of 2026-02-08: 36 commitsWeek of 2026-02-15: 41 commitsWeek of 2026-02-22: 16 commitsWeek of 2026-03-01: 50 commitsWeek of 2026-03-08: 76 commitsWeek of 2026-03-15: 75 commitsWeek of 2026-03-22: 40 commitsWeek of 2026-03-29: 25 commitsWeek of 2026-04-05: 36 commitsWeek of 2026-04-12: 23 commitsWeek of 2026-04-19: 56 commitsWeek of 2026-04-26: 51 commitsWeek of 2026-05-03: 52 commitsWeek of 2026-05-10: 46 commitsWeek of 2026-05-17: 26 commitsWeek of 2026-05-24: 41 commitsWeek of 2026-05-31: 36 commitsWeek of 2026-06-07: 69 commitsWeek of 2026-06-14: 81 commitsWeek of 2026-06-21: 83 commitsWeek of 2026-06-28: 34 commitsWeek of 2026-07-05: 75 commitsWeek of 2026-07-12: 43 commitsWeek of 2026-07-19: 58 commitsWeek of 2026-07-26: 36 commitsWeek of 2026-08-02: 58 commitsWeek of 2026-08-09: 69 commitsWeek of 2026-08-16: 48 commitsWeek of 2026-08-23: 63 commitsWeek of 2026-08-30: 60 commitsWeek of 2026-09-06: 40 commitsWeek of 2026-09-13: 35 commitsWeek of 2026-09-20: 51 commitsSep 28, 2025Sep 20, 2026
2.2K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 1 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 3 commitsSun 12:00 — 0 commitsSun 13:00 — 2 commitsSun 14:00 — 1 commitsSun 15:00 — 1 commitsSun 16:00 — 2 commitsSun 17:00 — 2 commitsSun 18:00 — 2 commitsSun 19:00 — 3 commitsSun 20:00 — 0 commitsSun 21:00 — 1 commitsSun 22:00 — 1 commitsSun 23:00 — 0 commitsMon 0:00 — 1 commitsMon 1:00 — 1 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 4 commitsMon 7:00 — 3 commitsMon 8:00 — 10 commitsMon 9:00 — 25 commitsMon 10:00 — 44 commitsMon 11:00 — 57 commitsMon 12:00 — 35 commitsMon 13:00 — 44 commitsMon 14:00 — 52 commitsMon 15:00 — 57 commitsMon 16:00 — 41 commitsMon 17:00 — 47 commitsMon 18:00 — 14 commitsMon 19:00 — 19 commitsMon 20:00 — 10 commitsMon 21:00 — 7 commitsMon 22:00 — 6 commitsMon 23:00 — 10 commitsTue 0:00 — 8 commitsTue 1:00 — 4 commitsTue 2:00 — 8 commitsTue 3:00 — 5 commitsTue 4:00 — 4 commitsTue 5:00 — 2 commitsTue 6:00 — 4 commitsTue 7:00 — 11 commitsTue 8:00 — 16 commitsTue 9:00 — 39 commitsTue 10:00 — 75 commitsTue 11:00 — 68 commitsTue 12:00 — 45 commitsTue 13:00 — 44 commitsTue 14:00 — 40 commitsTue 15:00 — 57 commitsTue 16:00 — 41 commitsTue 17:00 — 26 commitsTue 18:00 — 17 commitsTue 19:00 — 12 commitsTue 20:00 — 10 commitsTue 21:00 — 12 commitsTue 22:00 — 11 commitsTue 23:00 — 13 commitsWed 0:00 — 4 commitsWed 1:00 — 5 commitsWed 2:00 — 2 commitsWed 3:00 — 1 commitsWed 4:00 — 1 commitsWed 5:00 — 4 commitsWed 6:00 — 2 commitsWed 7:00 — 7 commitsWed 8:00 — 13 commitsWed 9:00 — 41 commitsWed 10:00 — 65 commitsWed 11:00 — 66 commitsWed 12:00 — 55 commitsWed 13:00 — 48 commitsWed 14:00 — 44 commitsWed 15:00 — 46 commitsWed 16:00 — 49 commitsWed 17:00 — 39 commitsWed 18:00 — 16 commitsWed 19:00 — 10 commitsWed 20:00 — 4 commitsWed 21:00 — 4 commitsWed 22:00 — 4 commitsWed 23:00 — 9 commitsThu 0:00 — 7 commitsThu 1:00 — 2 commitsThu 2:00 — 7 commitsThu 3:00 — 0 commitsThu 4:00 — 1 commitsThu 5:00 — 1 commitsThu 6:00 — 2 commitsThu 7:00 — 8 commitsThu 8:00 — 17 commitsThu 9:00 — 49 commitsThu 10:00 — 63 commitsThu 11:00 — 41 commitsThu 12:00 — 41 commitsThu 13:00 — 41 commitsThu 14:00 — 52 commitsThu 15:00 — 42 commitsThu 16:00 — 42 commitsThu 17:00 — 26 commitsThu 18:00 — 10 commitsThu 19:00 — 10 commitsThu 20:00 — 7 commitsThu 21:00 — 5 commitsThu 22:00 — 6 commitsThu 23:00 — 16 commitsFri 0:00 — 3 commitsFri 1:00 — 6 commitsFri 2:00 — 4 commitsFri 3:00 — 0 commitsFri 4:00 — 4 commitsFri 5:00 — 3 commitsFri 6:00 — 6 commitsFri 7:00 — 6 commitsFri 8:00 — 13 commitsFri 9:00 — 40 commitsFri 10:00 — 63 commitsFri 11:00 — 55 commitsFri 12:00 — 38 commitsFri 13:00 — 46 commitsFri 14:00 — 52 commitsFri 15:00 — 66 commitsFri 16:00 — 65 commitsFri 17:00 — 35 commitsFri 18:00 — 14 commitsFri 19:00 — 10 commitsFri 20:00 — 9 commitsFri 21:00 — 10 commitsFri 22:00 — 8 commitsFri 23:00 — 7 commitsSat 0:00 — 5 commitsSat 1:00 — 3 commitsSat 2:00 — 4 commitsSat 3:00 — 2 commitsSat 4:00 — 0 commitsSat 5:00 — 7 commitsSat 6:00 — 1 commitsSat 7:00 — 1 commitsSat 8:00 — 0 commitsSat 9:00 — 1 commitsSat 10:00 — 2 commitsSat 11:00 — 0 commitsSat 12:00 — 2 commitsSat 13:00 — 0 commitsSat 14:00 — 1 commitsSat 15:00 — 1 commitsSat 16:00 — 4 commitsSat 17:00 — 2 commitsSat 18:00 — 6 commitsSat 19:00 — 2 commitsSat 20:00 — 0 commitsSat 21:00 — 6 commitsSat 22:00 — 7 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Sep 25, 2026daily#9+115
Sep 24, 2026daily#9+115
Sep 23, 2026daily#7+96
  • public-apis/public-apis

    A collective list of free APIs

    486.1K stars · Python

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    373.2K stars · Python

  • obra/superpowers

    An agentic skills framework & software development methodology that works.

    295.2K stars · Shell

  • practical-tutorials/project-based-learning

    Curated list of project-based tutorials

    285.8K stars · Python

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript