Agent harnesses
An exoskeleton for a language model. A model on its own takes text in and gives text out with no memory of the last call; bolt on a loop, access to your machine, integrations and skills, and it can do work. The model reasons. The harness is everything else.
A while-loop that keeps going: propose, act, read the result, revise. When a tool fails it feeds the error back and retries rather than stopping.
A way to reach the world — your shell, your filesystem, a browser, or a sandboxed container. Without reach it can only talk.
The tools it may call, increasingly over MCP, so the same harness can drive systems it was never written for.
Reusable instructions it loads on demand — modes, rules, subagents — so behaviour can be extended without changing the harness.
| Harness | Agent | |
|---|---|---|
| Who sets the goal | You do, every time you run it | Set once, then it runs to it |
| Supervision | You are in the chair, approving steps | Little to none, by design |
| The model | A setting you choose, often swappable | Part of the product, chosen for you |
| Where it runs | Your machine — shell, editor, local runtime | A platform or the cloud, without your laptop on |
| Scope | General purpose. You supply the task | Pointed at one standing job |
| What you buy | The exoskeleton. You bring the model | The finished worker, model included |
Our classification, not a vendor's. The difference is supervision and who supplies the intent, not what the software is capable of.
Bar length is the count. Segments are the models column: sand is model-agnostic, each colour a vendor a first-party harness is tied to.
| Harness | Category | Models | Access | Skills | Licence | Stars | Src |
|---|---|---|---|---|---|---|---|
| OpenCode
Anomaly |
Terminal | Multi-model | terminal · filesystem | Model-agnostic tool loop | MIT | 190,595 | ↗ T1 |
| Claude Code
Anthropic |
Terminal | Anthropic (first-party) | terminal · filesystem · git | Skills, subagents, hooks, MCP | OSS | 139,425 | ↗ T1 |
| Gemini CLI
Google |
Terminal | Google (first-party) | terminal · filesystem | Extensions, MCP | Apache-2.0 | 106,229 | ↗ T1 |
| Codex CLI
OpenAI |
Terminal | OpenAI (first-party) | terminal · filesystem · sandbox | Approval modes, sandboxed exec | Apache-2.0 | 102,182 | ↗ T1 |
| Goose
Block / AAIF |
Terminal | Multi-model | terminal · filesystem · desktop | Extensions over MCP | Apache-2.0 | 51,872 | ↗ T1 |
| Aider
Aider AI |
Terminal | Multi-model | terminal · filesystem · git | Repo map, git commit loop | Apache-2.0 | 47,766 | ↗ T1 |
| Crush
Charm |
Terminal | Multi-model | terminal · filesystem | LSP-aware, MCP | OSS | 26,912 | ↗ T1 |
| Qwen Code
Alibaba Qwen |
Terminal | Multi-model | terminal · filesystem | Terminal coding loop | Apache-2.0 | 26,403 | ↗ T1 |
| Plandex
Plandex AI |
Terminal | Multi-model | terminal · filesystem · sandbox | Diff review sandbox, long-run planning | MIT | 15,542 | ↗ T1 |
| Zed
Zed Industries |
Editor | Multi-model | editor · terminal | Agent panel, MCP context servers | OSS | 87,664 | ↗ T1 |
| Cline
Cline |
Editor | Multi-model | editor · terminal · browser | Plan/Act modes, MCP marketplace | Apache-2.0 | 65,147 | ↗ T1 |
| Continue
Continue |
Editor | Multi-model | editor · terminal | Custom rules, slash commands | Apache-2.0 | 35,167 | ↗ T1 |
| Void
Void |
Editor | Multi-model · local | editor | Open-source Cursor alternative | Apache-2.0 | 28,873 | ↗ T1 |
| Kilo Code
Kilo |
Editor | Multi-model | editor · terminal | Orchestrator modes, MCP | MIT | 26,584 | ↗ T1 |
| Roo Code
Roo Code |
Editor | Multi-model | editor · terminal · browser | Custom modes, MCP | Apache-2.0 | 24,367 | ↗ T1 |
| Cursor
Anysphere |
Editor | Multi-model | editor · terminal | Codebase indexing, Composer, rules | closed | – | ↗ T1 |
| Windsurf
Windsurf |
Editor | Multi-model | editor · terminal | Cascade context, MCP | closed | – | ↗ T1 |
| OpenClaw
OpenClaw |
Autonomous runtime | Multi-model | os · terminal · filesystem · messaging | Skills, self-hosted, any platform | OSS | 384,439 | ↗ T1 |
| Hermes Agent
Nous Research |
Autonomous runtime | Multi-model | terminal · filesystem · long-term memory | Self-authored skills, persistent memory | MIT | 221,937 | ↗ T1 |
| AutoGPT
Significant Gravitas |
Autonomous runtime | Multi-model | sandbox · browser | Block-based workflow builder | OSS | 185,739 | ↗ T1 |
| Browser Use
Browser Use |
Autonomous runtime | Multi-model | browser · DOM | Web task automation, vision + DOM | MIT | 107,141 | ↗ T1 |
| OpenHands
OpenHands (All Hands AI) |
Autonomous runtime | Multi-model | docker sandbox · browser · editor | Microagents, sandboxed runtime | MIT | 82,436 | ↗ T1 |
| DeerFlow
ByteDance |
Autonomous runtime | Multi-model | browser · sandbox · search | Long-horizon research loop | MIT | 78,092 | ↗ T1 |
| Open Interpreter
Open Interpreter |
Autonomous runtime | Multi-model · local | terminal · filesystem · code exec | Natural-language code execution | Apache-2.0 | 67,392 | ↗ T1 |
| OpenManus
Foundation Agents |
Autonomous runtime | Multi-model | browser · sandbox · filesystem | General-purpose task loop | MIT | 57,768 | ↗ T1 |
| SWE-agent
Princeton / Stanford |
Autonomous runtime | Multi-model | sandbox · filesystem | Agent-Computer Interface, issue-to-patch loop | MIT | 19,943 | ↗ T1 |
| Agent Zero
Agent Zero |
Autonomous runtime | Multi-model | terminal · filesystem · browser | Self-extending, subordinate agents | OSS | 18,619 | ↗ T1 |
| OpenHarness
HKU Data Science |
Autonomous runtime | Multi-model | terminal · filesystem | Built-in personal agent | MIT | 15,083 | ↗ T1 |
An exoskeleton for a model: a loop, access, integrations and skills
The catalogue reads as one fact repeated: 25 of 28 harnesses are model-agnostic. That is the property that separates a harness from an agent. In the agents catalogue the model is part of the product; here it is a setting you change. The few first-party terminal tools are exceptions, and they are exceptions because the vendor is also selling the model underneath.
Show more
The split by what they wrap is cleaner than expected. Terminal harnesses attach to the shell you already work in. Editor harnesses wrap the file you are looking at. Autonomous runtimes have neither and substitute a sandbox, which is why isolation is a headline feature for that group and a footnote for the others.
Read against the models and agents catalogues, a harness is a pre-built agent with the goal left blank. It arrives with the loop, the reach and the skills; you supply the intent, each time, and stay in the chair. It is the evolution of sitting at a chat window with a model open in another tab — the same work, but the loop now runs itself and can touch your files.
Which suggests where the line actually falls. An agent earns its name when it can be left alone: running in a platform or the cloud, on a standing job, without supervision and without your laptop staying on. A harness is the same machinery with a human still holding it. 26 of these being open source means that distance is a configuration choice rather than a purchase, and it is the distance, not the capability, that the two catalogues are separated by.
What is an agent harness?
An exoskeleton for a language model. It supplies four things the model cannot: a loop that keeps working and retries when a tool fails, access to your shell, files or a browser, integrations to the tools it may call, and skills it can load on demand. The model reasons; the harness is everything else.
What is the difference between a harness and an agent?
A harness is a pre-built agent with the goal left blank. You point it at a task each time and stay in the loop. An agent, as this corpus uses the term, is that same machinery pointed at a standing job and left to run with far less supervision. The difference is who sets the intent and how often, not what the software can do.
What is the difference between a harness and a framework or SDK?
A framework or SDK is what you build a harness with. A harness is finished: install it and it already has a loop, tool calling and a repair cycle. Reach for an SDK when you are building your own; reach for a harness when you want one that already works.
Can a harness use any model?
Most can. Model-agnostic design is the norm here, which is what makes a harness a wrapper rather than a product in its own right. The exceptions are the first-party terminal tools from the labs, where the harness exists partly to sell the model underneath.
Do I need a harness to build an agent?
No, but you will build one either way. Anything that calls a model in a loop, handles a failed tool call and decides when to stop is a harness, whether or not you call it that. The choice is between adopting one and writing your own.