Theme

Agent harnesses and frameworks

10 repos reviewed · since Oct 10, 2026 · updated Oct 29, 2026 · rewritten each time a repo joins

In one paragraph

An agent harness is the code around a model that runs one agent: the loop, the tools, the state and the place it runs. The projects here start from different parts. Some ship a ready coding agent with extension points. Some treat state as an event log or as plain conversation history. Others tune the harness for each task or study how to compose components safely.

What counts here: frameworks, harness designs and reference stacks for building one agent: its loop, tools, state and runtime.

The main approaches

Harness frameworks

These give you a working agent loop with tools and state, and a way to extend or host it. They differ in where the weight sits.

  • Ready agents with extension points. goose is a Rust agent with a desktop app, a CLI and an embeddable API, 15+ model providers and MCP extensions. pi is a monorepo with a unified LLM API, an agent runtime and a TUI coding agent. It leaves out sub-agents and plan mode on purpose and expects you to add them through extensions, skills and packages.
  • State as data. tardigrade folds an immutable event log into agent state with atoms, on Cloudflare Workers or Celld. infinity keeps a waiting agent as only its conversation history, so an idle agent costs nothing. Its tool protocol delivers results to agents with no running process.
  • Layered stacks and platforms. ecosystem-overview is a README map of a stack: Chronicle storage, Membrane for LLM calls, a context manager and an agent framework. equin pairs an agent manager with a shared plugin system for building large apps. singularity is a Bun plugin monorepo with Claude memory and skills directories at its root.
  • Harness as a training and tuning target. feather-train has one harness with prod and train profiles, plus packages for rollouts and Harbor evaluation. harness2 edits a harness’s prompts, skills and tool guidance per task while model weights stay fixed.

Composition research

This work asks how harness and plugin components can be added and removed without breaking each other. paper is a preprint that uses effect and coeffect theory to define temporal and spatial composability. It proves that components can interleave without disturbing each other. Its implementation target is the Cordis meta-framework.

Map of the theme

flowchart LR
  t["Agent harnesses and frameworks"]
  t --> f1["Harness frameworks"]
  t --> f2["Composition research"]
  f1 --> r1["aaif-goose/goose"]
  f1 --> r2["earendil-works/pi"]
  f1 --> r3["anima-research/ecosystem-overview"]
  f1 --> r4["Conchylicultor/equin"]
  f1 --> r5["Conchylicultor/singularity"]
  f1 --> r6["hydro-project/infinity"]
  f1 --> r7["clavia-labs/tardigrade"]
  f1 --> r8["paper-instruments/feather-train"]
  f1 --> r9["google-research/harness2"]
  f2 --> r10["cordiverse/paper"]

Where the new ideas are

  • infinity: an agent between turns is pure data, and tools reach it through a protocol that needs no open connection.
  • tardigrade: durable state derived from an event log through composable atoms.
  • harness2: the harness itself is optimized per task, by proposing edits, probing them and composing the result.
  • feather-train: the same loop and tools serve live work and training rollouts through two profiles.
  • pi: strong defaults with deliberate gaps, filled by packages shared over npm or git.
  • paper: a formal account of removing a component and cleanly reverting its effects.

Side by side

RepoApproachStateInterface or hostingExtension or tooling
aaif-goose/gooseHarness frameworksNot statedDesktop app, CLI, embeddable API70+ MCP extensions, 15+ providers
earendil-works/piHarness frameworksAgent runtime with state managementTUI CLI, print and JSON modes, RPC, SDKExtensions, skills, prompt templates, packages over npm or git
anima-research/ecosystem-overviewHarness frameworksChronicle append-only store with branches and time travelModules for Discord, files, API and MCPLContext strategies: passthrough, autobiographical, knowledge
Conchylicultor/equinHarness frameworksNot statedAgent manager running dozens of sessions in parallelPlugin system for reusable pieces
Conchylicultor/singularityHarness frameworksClaude memory directories at the rootBun workspace monorepoPlugins under plugins/
hydro-project/infinityHarness frameworksIdle agent is its conversation historyResident process or serverless such as AWS LambdaReactive Agent Protocol, MCP compatibility layer
clavia-labs/tardigradeHarness frameworksImmutable event log folded by atomsCloudflare Workers or CelldAtoms wired with defineActor
paper-instruments/feather-trainHarness frameworksContext compactionLocal CLI, E2B sandboxes for rolloutsprod and train profiles, Harbor ATIF export
google-research/harness2Harness frameworksMemory is one of eight editable componentsNot statedPropose, Probe, Compose refinement per task
cordiverse/paperComposition researchNot statedCordis meta-framework as implementation targetDeclarative component loader with hot module replacement

How the idea moved

flowchart LR
  n1["started Aug 2024<br/>aaif-goose/goose"]
  n2["started Aug 2025<br/>earendil-works/pi"]
  n3["started Feb 2026<br/>anima-research/ecosystem-overview"]
  n4["started Apr 2026<br/>Conchylicultor/equin"]
  n5["started Apr 2026<br/>Conchylicultor/singularity"]
  n6["started Apr 2026<br/>hydro-project/infinity"]
  n7["started Aug 2026<br/>clavia-labs/tardigrade"]
  n8["started Aug 2026<br/>cordiverse/paper"]
  n9["started Sep 2026<br/>paper-instruments/feather-train"]
  n10["started Oct 2026<br/>google-research/harness2"]
  n1 --> n2 --> n3 --> n4 --> n5 --> n6 --> n7 --> n8 --> n9 --> n10
  • started Aug 2024 · goose · Adds: a local general-purpose agent offered as a desktop app, a CLI and an embeddable API, with 15+ model providers and 70+ MCP extensions.
  • started Aug 2025 · pi · Adds: a separable toolkit of unified LLM API, agent runtime and TUI, with deliberate gaps filled by extensions, skills and packages shared over npm or git.
  • started Feb 2026 · ecosystem-overview · Adds: a layered map of a research stack, from a branchable event store through LLM middleware and context management to an agent framework, showing which app sits on which layer.
  • started Apr 2026 · equin · Adds: an agent manager for parallel sessions plus a shared plugin system, so apps built on it reuse the same pieces.
  • started Apr 2026 · singularity · Adds: a personal computing environment laid out as a Bun plugin workspace, with Claude memory, skills and MCP configuration beside the app plugins.
  • started Apr 2026 · infinity · Adds: a Rust runtime where waiting agents are plain conversation history, with a tool protocol that delivers results to agents that have no running process.
  • started Aug 2026 · tardigrade · Adds: durable agent state derived from an immutable event log through composable atoms, hosted on Cloudflare Workers or Celld.
  • started Aug 2026 · paper · Adds: a formal calculus of revertible effects and reactive coeffects for composing components, with a proof that components interleave without disturbing each other.
  • started Sep 2026 · feather-train · Adds: one knowledge-work harness with prod and train profiles, plus packages for sandboxed rollouts, grading and Harbor evaluation.
  • started Oct 2026 · harness2 · Adds: per-task refinement of an agent’s prompts, skills and tool guidance by proposing, probing and composing edits, with model weights fixed.

Easily confused

  • An LLM SDK or provider library. A harness includes the loop, tools and state around the model, not just the call to it. Some projects here bundle a provider layer, but it is one part.
  • A coding assistant product. Goose and Pi are usable coding agents, but the theme also covers the runtime and state design underneath an agent, such as event logs or hibernating conversation history.
  • Multi-agent orchestration. The focus is building one agent well. Some stacks do coordinate several agents, but the theme is about a single agent’s loop, tools, state and runtime.
  • Prompt tuning. Harness2 edits prompts, but also skills, guardrails, memory, subagents, scripts and plugins, and it does so per task with the model weights unchanged.

Gaps nobody has filled

  • A shared state format is missing, so event logs, conversation histories and branching record stores cannot be moved between harnesses.
  • Per-run cost or token budgets are not part of the harness design.
  • The formal composition work is not tied to a measured effect on a working coding or knowledge-work agent.
  • Skills, prompt templates and packages written for one harness have no described way to load into another, beyond MCP servers.