Field noteNov 7, 20265 min read1 source

Stirrup: The lightweight framework for building agents

In one minute

Artificial Analysis has published Stirrup, an MIT-licensed Python framework and starting template for building agents with tools, sessions, and configurable model clients. Its value for builders is practical rather than benchmark-based: the repository exposes a compact set of components teams can inspect, run, and adapt instead of committing to a fixed agent workflow.

What changed: Teams can now inspect and rerun the open-source Stirrup scientific-copilot evaluation harness with the VIALS dataset and their own models, prompts, graders, and tool policies.

What happened

Artificial Analysis describes Stirrup as a lightweight foundation for building agents. The project is available as a public GitHub repository under the MIT license; the repository page displayed 699 stars and 71 forks when checked. The README says Stirrup aims to work with a model rather than impose a rigid workflow, and says the authors analyzed leading agents including Claude Code and Codex when selecting practices around context management and foundational tools. Stirrup is both a package and a starting template for a more customized agent. The page distinguishes this Python implementation from StirrupJS, its TypeScript implementation.

The listed capabilities include code execution locally, in Docker, or in an E2B sandbox; web search and page fetching; an MCP client for servers, tools, and resources; document input and output; modular skills; custom tool execution; and a built-in human-input tool for feedback or clarification. It also supports images, video, and audio with automatic format conversion. Stirrup manages sessions, tool lifecycles, files, and cleanup. Its agent loop runs until a finish tool is called or the configured maximum number of turns is reached. Conversation history is automatically summarized as it approaches context limits.

The README gives pip install stirrup as the core installation command, with optional extras for LiteLLM, Docker, E2B, MCP, and browser components, or an all extra. A client can use an OpenAI-compatible API, LiteLLM, or a developer-supplied client. The quick-start example uses OpenRouter and a model slug for Claude Opus 5, with a maximum of 15 turns and a one-million-token context window in the example configuration; those are example settings, not stated service guarantees. Default tools provide shell execution in an isolated temporary directory and web fetch/search. Search requires a Brave API key; without it, the agent still works but cannot search the web. The repository also flags a breaking change: users must replace the removed shared DEFAULT_TOOLS list with default_tools() so concurrent sessions do not share provider instances.

The project exposes extension points rather than only a preconfigured set of integrations. The README describes a generic Tool interface, with Pydantic parameters, and shows a custom greeting tool added alongside the standard tool set. It says each default_tools() call returns fresh provider instances because providers retain per-session state such as a temporary directory and HTTP client. That implementation detail explains the migration away from a shared default list: the project is explicitly trying to prevent concurrent sessions from reusing the same two provider instances. For teams evaluating a framework, this makes the lifecycle model visible in the code and documentation rather than implicit in a hosted service.

What the archive adds

New Runtime's earlier coverage described an open Apache-2.0 harness and 27B checkpoint for scientific hypothesis work as an inspectable iterative workflow (earlier note, 2026-10-22). Stirrup is a new release, not a new fact about that project: it broadens the current set of open agent-building foundations, but the repository does not state a direct connection between the two.

Trend signal

This supports the pattern that harness architecture can matter beyond model choice: Stirrup offers provider interfaces, session management, and reusable tools around whichever supported client a builder configures. That is a modest implementation-level signal, not proof that teams can swap models without trade-offs. Harness architecture outlives model choice.

Why it matters

A team can learn more from a runnable, inspectable harness than from a feature list alone: it can examine how tools are defined, how per-session resources are isolated, and where model-provider choices enter the application. Stirrup's modular installation also makes it possible to start with core functionality and add a sandbox, MCP, or browser support only when the use case needs it.

That flexibility shifts work to the adopting team. The README presents a foundation, not an evaluated drop-in system for a particular domain. Builders still need to select safe execution boundaries, define tool permissions, test behavior across providers, and decide whether the defaults suit their workload. The breaking change around shared tool providers is a reminder that concurrency and lifecycle handling are part of the harness design, not incidental implementation details. A small proof of concept can therefore test both task fit and operational details before the framework becomes a dependency.

Limits and uncertainty

The repository page does not establish comparative performance, reliability, or adoption in production workloads. Its star and fork counts are GitHub activity signals, not evidence of successful deployments. The README describes available components and examples, but does not quantify agent task success, latency, cost, or the quality of its context summarization. The OpenRouter and Claude Opus 5 settings are shown as a quick-start example; they do not establish exclusive support or current availability. New Runtime has not independently run the package, audited its security boundaries, or verified the behavior of each optional integration.

Reader takeaway

Stirrup is worth inspecting if you are assembling a custom agent and want a lightweight Python starting point with tool, session, and provider interfaces in one repository. Treat it as a foundation to test, not as evidence that a particular agent workflow will perform well: validate its execution isolation, concurrency behavior, and model-client compatibility against your own task before adopting it.

Open question

How do Stirrup's defaults and session lifecycle behave under representative concurrent workloads, especially when code execution and external tools are enabled?

Evidence / sources

  1. 1github.com/ArtificialAnalysis/Stirrup
All Field Notes

Next reads

Read next

Open the graph
  1. 01topicClaudeExplore the claude topic hub.
  2. 02topicClaude CodeExplore the claude-code topic hub.
  3. 03topicCodexExplore the codex topic hub.
  4. 04archiveField NotesOpen the latest editorial analysis.
  5. 05sourcesSourcesSee the original sources this archive cites.
Who read this page?Machine requests, hidden until opened

Loading the privacy-safe route aggregate...

Open the JSON contract