This matrix compares the thirty harnesses profiled in this section, feature by feature, so the shortlisting step does not require reading thirty notes.
No harness has everything, and the two axes that actually decide the purchase are client openness and who pays for tokens: everything else is converging.
Legend: ✓ supported, ✗ not supported, ~ partial or conditional, ? not verified. Each column links to the full research note; every cell below traces to a source cited there or in the references.
The matrix #
| Feature | aider | Amp | Ante | Bullet | Claude Code | Cline | Codex | Crush | DeepSeek Harness | Exo | fx | Gemini CLI | goose | Grok Build | jcode | Juggler | Junie | Kilo Code | Kimi Code | MiMo Code | OneCLI | Open Interpreter | OpenCode | OpenHands | Pi | Qwen Code | Unreal Agent | Warp Agent CLI | ZCode | Zerostack |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Company | none (solo) | |||||||||||||||||||||||||||||
| Open client | ✓ Apache-2.0 | ✗ | ~ Apache-2.0 source, preview binaries | ✗ | ✗ | ✓ Apache-2.0 | ✓ Apache-2.0 | ~ FSL-1.1-MIT | ✓ MIT | ✓ MIT | ✓ Apache-2.0 | ✓ Apache-2.0 | ✓ Apache-2.0 | ✓ Apache-2.0 | ✓ MIT | ✓ AGPL-3.0 | ✗ | ✓ MIT | ✓ MIT | ~ MIT, plus a use-restrictions file | ✓ Apache-2.0 | ✓ Apache-2.0 (Rust fork of Codex CLI) | ✓ MIT | ✓ MIT | ✓ MIT | ✓ Apache-2.0 | ✓ MIT | ✗ closed binary | ✓ Apache-2.0, flattened history | ✓ GPL-3.0 |
| BYOK | ✓ | ✓ fee-free outside Enterprise | ✓ | ? | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ~ AI Gateway key only | ✓ paid keys | ✓ | ✓ custom models via base_url | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ~ BYOC at paid tiers | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ provider-agnostic adapter | ✓ | ? | ✓ |
| Included subscription usage | ✗ | ✓ | ✓ | ✗ free, no subscriptions | ✓ | ~ via ClinePass | ✓ | ~ via Hyper | ✗ BYO keys only | ✗ API keys only | ~ Codex and Grok OAuth | ✗ enterprise only | ~ via ACP subs | ~ OIDC login default, terms undocumented | ✓ OAuth and multi-account | ✓ | ✓ | ~ kilo credits | ~ via Kimi OAuth | ✓ Xiaomi Token Plan and Claude/Codex import | ~ $5 credits at $0 tier | ✗ BYO keys only | ~ via Zen | ~ ChatGPT Plus/Pro for Codex models | ✓ Claude, ChatGPT, Copilot | ~ Coding Plan weekly quota | ? | ✓ | ✓ GLM Coding Plan | ✗ |
| Local models | ✓ | ✗ | ✓ embedded llama.cpp | ✗ hosted models only | ✗ | ✓ | ✗ | ✓ | ~ OpenAI-compatible endpoints | ✗ | ~ custom model connections for Ollama, vLLM, and OpenRouter (shipped in v0.0.11, OpenAI Chat Completions endpoints only) | ✗ | ✓ | ~ custom model base_url | ✓ Ollama and LM Studio | ✓ Ollama | ✓ Ollama and LM Studio, plus on-device Junie Local | ✓ Ollama and LM Studio | ✗ | ✓ custom OpenAI-compatible endpoints | ? | ✓ targets open models (Kimi K3, GLM) | ✓ | ✓ LM Studio, Ollama, vLLM | ✓ llama.cpp | ✓ | ~ provider-agnostic adapter, none named | ✗ | ✗ | ✓ Ollama |
| MCP | ✗ | ✓ | ✓ | ? | ✓ | ✓ | ✓ | ✓ | ? | ? | ✓ | ✓ | ✓ | ✓ | ~ stdio only | ✓ | ✓ | ✓ | ✓ | ✓ local, remote, and OAuth | ? | ~ Codex CLI lineage | ✓ | ✓ | ~ built-in extension since v0.99.0, config-driven | ✓ | ? | ~ curated MCP tools on paid plans | ? | ~ compile-time feature |
| AGENTS.md | ✗ | ✓ | ✓ | ? | ~ reads CLAUDE.md | ✓ plus .clinerules | ✓ | ✓ plus CRUSH.md | ? | ? | ✓ native | ~ GEMINI.md native | ✓ plus .goosehints | ✓ plus CLAUDE.md and .cursor rules | ✓ native plus ~/AGENTS.md | ? | ✗ uses guidelines.md | ✓ plus .kilocoderules | ? | ✓ plus CLAUDE.md | ? | ~ Codex CLI lineage | ✓ plus CLAUDE.md | ✗ uses .openhands | ? | ~ QWEN.md native | ? | ? | ? | ✓ plus ARCHITECTURE.md |
| Subagents | ✗ | ✓ | ✓ | ? | ✓ | ✓ teams | ✓ | ? | ✓ | ~ agent clones and lineage | ✓ persistent children | ✗ | ✓ | ✓ built-in and custom types | ✓ swarm workers | ~ read-only | ✗ | ✓ custom and built-in | ✓ coder, explore, plan | ✓ on-demand, parallel, tracked | ? | ? | ✓ | ~ delegates via ACP | ~ via extensions | ✓ teams | ✗ none by design | ~ multi-agent orchestration | ~ multi-agent framing | ✓ |
| Hooks, skills, plugins | ~ lint and test only | ✓ plugins gate tools | ~ skills only | ? | ✓ hooks and skills | ✓ skills and SDK plugins | ✓ skills and marketplace | ✓ skills | ✓ plugins and skills | ~ self-editing tooling | ~ skills only | ? | ✓ hooks and plugins | ✓ all three, plus marketplaces | ✓ hooks and embedding-gated skills | ~ extension SDK | ~ execution allowlists | ✓ skills and hooks | ✓ hooks and marketplace skills | ✓ skills, plugins, workflows | ? | ~ /harness per-model emulation (claude-code, kimi-code, qwen-code, deepseek-tui, swe-agent, minimal) | ✓ skills and plugins | ✓ hooks, skills, plugins | ✓ extensions and skills | ✓ hooks and auto-skills | ~ skill-use tool, no hooks by stance | ? | ~ skills | ~ hooks, prompt modes replace skills |
| Cloud execution | ✗ | ✓ orbs | ✗ local-first | ? | ✓ web and teleport | ✗ | ✓ | ✗ | ✗ | ✗ local, Docker required | ✗ | ~ CI GitHub Action | ✗ | ✗ local only, Grok Bot is separate | ✗ self-hosted daemon only | ✗ self-hosted remote only | ~ remote control | ✓ cloud agents and tasks | ✗ | ✗ local only | ✓ hosted VMs | ✗ BYOK local | ✗ share links only | ✓ OpenHands Cloud | ✗ | ✗ | ✗ | ✓ cloud agents | ~ chat-app bot steering | ✗ local only |
| Scheduled runs | ✗ | ✓ self-set | ? | ? | ✓ routines | ✓ cron | ? | ✗ | ? | ? | ✗ | ✗ | ✗ | ~ /loop recurring prompts | ~ ambient mode | ? | ✗ | ✓ cron builder | ? | ~ loop skill | ? | ? | ~ via host apps | ✓ automations and webhooks | ✗ | ~ experimental cron | ? | ? | ? | ? |
| IDE integration | ✗ | ✗ | ✓ via ACP | ? | ✓ extensions | ✓ VS Code and JetBrains | ✓ extension | ✗ terminal only | ✓ ACP | ? | ✓ via ACP | ~ enterprise Code Assist | ~ experimental VS Code | ✓ via ACP | ✗ terminal and paired clients | ? | ✓ | ✓ VS Code and JetBrains | ✓ via ACP | ✓ VS Code extension, desktop app | ? | ~ desktop app exists | ✓ VS Code and ACP | ✓ VS Code, Zed, JetBrains via ACP | ? community clients | ✓ VS Code, Zed, JetBrains | ✗ library and runner | ? | ~ community ACP server | ✓ via ACP |
Reading the matrix #
I read this table by columns rather than rows: pick the two rows you actually care about, then let the rest fall away.
The Company row is context, not a feature axis: it names the maker (or, for goose, the foundation that now stewards the code) and links each site.
The open-client column splits the field into three groups, and each group answers a different buyer.
aider, Cline, Codex, Exo, fx, Gemini CLI, goose, Grok Build, Juggler, jcode, Kimi Code, Kilo Code, MiMo Code, OneCLI, OpenCode, OpenHands, Pi, Qwen Code, Unreal Agent, ZCode, and Zerostack hand you auditable code; Crush is source-available with a competing-use restriction that expires per version, and Ante publishes Apache-2.0 source whose prebuilt binaries answer to separate preview terms; Amp, Bullet, Claude Code, Junie, and Warp Agent CLI are binaries you trust.
MiMo Code carries an extra USE_RESTRICTIONS.md addendum on top of its MIT grant, which its own paragraph below names.
Subscription versus keys is the second axis, and it is orthogonal to openness. Codex is open and subscription-fed; Amp is closed and, since its September 2026 Free Agent change, free to run on your own compute, subscriptions, or keys with no BYOK token fees outside Enterprise; aider and Crush are keys-only, period; goose reuses the Claude, ChatGPT, or Gemini subscription you already pay for via ACP, and fx reuses ChatGPT and Grok subscriptions via OAuth while its v0.0.11 custom connections let local and OpenAI-compatible endpoints skip its gateway. The six new columns spread across the same axis: Ante and Juggler take subscriptions alongside keys, Warp folds all usage into its own credit meter, OneCLI starts teams at $0 with $5 of credits, Bullet is free with no subscriptions at all, and Zerostack stays keys-only.
Local-model support now cleanly separates the BYOK purists (aider, Ante, Cline, Crush, goose, Juggler, jcode, Junie, Kilo Code, MiMo Code, OpenCode, OpenHands, Pi, Qwen Code, Zerostack) from the platform players whose value-add assumes their own model routing, a group Bullet and Warp Agent CLI now join.
The feature everyone lacks is a different one, which is the tell that the category is immature in different places: aider lacks the agent loop, Gemini CLI lacks a consumer future, Crush lacks documented subagents, OpenCode lacks its own cloud execution, and all three 2026 entrants lack cloud execution: Cline and Qwen Code run only where you stand, and goose keeps its IDE story experimental.
The two newest columns redraw that map again: Kilo Code bundles subagents, schedules, and cloud tasks into an editor-native open agent, which nothing else in this table does, while OpenHands skips AGENTS.md entirely because its .openhands customization replaces repo-instruction files.
fx, the fourteenth column at the time it joined, redelines the axis itself: it is the only harness here built to be a dependency instead of an environment, and the only open one whose tokens must cross its sponsor’s gateway.
jcode bets the constraint is hardware, not intelligence: it is the only entry whose measured RAM floor, native memory graph, and same-repo swarm all assume you will run dozens of agents at once, and the only one that rebuilds its own binary on request.
DeepSeek Harness is the everything-is-a-plugin bet: fully open with subagents, skills, and ACP editor support already filled in, and question marks on MCP and AGENTS.md that a developer-preview project earns.
Pi is the deliberate-omission bet: a frozen core plus extensions you can read, with the widest subscription reuse in the table and local models through llama.cpp; its v0.99.0 line bent the policy by shipping MCP and codemode as built-in extensions, though subagents and plan mode remain extension territory.
Ante takes the footprint bet furthest: the only column whose local inference engine lives inside the binary itself, though its prebuilt releases answer to preview terms the Apache-2.0 repo does not carry.
Bullet is the latency bet: free, closed, and the most transparent vendor self-report in the table, with question marks wherever its note cannot see.
Juggler is the GUI bet: conversation trees, durable sessions, and inspectable everything from a solo Go author, AGPL app code included.
OneCLI is the security-team bet: credentials injected at a gateway so agents never hold real secrets, priced in seats and credits rather than keys.
Warp Agent CLI is the vendor-unbundle bet: cloud agents and multi-agent orchestration on a closed binary, everything through Warp’s meter.
Zerostack is the GPL footprint bet: subagents, worktrees, sandboxing, and hooks in a solo Rust binary, with MCP and other headline features behind compile-time flags.
Kimi Code is the challenger-vendor bet: the first column whose maker sells the cheap model it is tuned for, with subagents, hooks, and marketplace skills already filled in and question marks where its docs stay silent.
Exo is the self-modification bet: the only column whose harness policy is itself agent-editable, which earns it question marks on the conventional rows and a clone-and-lineage mechanic nobody else has.
Grok Build is the open-closed bet: an Apache-2.0 client from a lab that accepts no outside contributions, released at roughly one version per day, with every session crossing its inference proxy by default.
ZCode is the trust-recovery bet: a complete workbench released as a flattened two-commit Apache-2.0 dump three days after a wire-level analysis caught it silently uploading whole workspaces, with locked PRs and disabled issues leaving open how real the opening is.
Unreal Agent is the async bet: tool calls run as background operations while steering stays live, with no subagents, no workflows, and no MCP by design, the only column whose cost thesis is harness scheduling rather than model choice.
MiMo Code is the long-horizon memory bet: the only column whose context strategy is a separate checkpoint-writer subagent rebuilding the window from a four-layer store, paired with a goal-verifying judge and deterministic JavaScript workflows, and the only one carrying a use-restrictions addendum on top of its MIT license.
Choosing from the matrix #
- Need an auditable client plus a subscription: Codex or Juggler, with Ante close if you build its Apache-2.0 source.
- Need local models plus MCP: Ante, Cline, Crush, goose, Junie, Kilo Code, OpenCode, OpenHands, Pi, or Qwen Code.
- Need scheduled autonomous work in the cloud: Amp, Claude Code, Kilo Code, or OpenHands.
- Need editor-embedded agents with deep analysis: Junie or Claude Code.
- Need rules portability across tools: Amp, Ante, Cline, Codex, Crush, fx, goose, Kilo Code, OpenCode, and Zerostack read AGENTS.md natively.
- Need an auditable agent platform you can self-host with cloud automation built in: OpenHands.
- Need an agent embedded inside your own tool, sandbox, or pipeline: fx.
- Need dozens of parallel agents on one machine, with memory and coordination built in: jcode.
- Need a graphical workbench where conversations branch and every tool call is inspectable: Juggler.
- Need team agents that never hold real credentials, enforced outside the model: OneCLI.
- Need cloud agents, orchestration, and billing from one vendor subscription: Warp Agent CLI.
- Need a free, latency-first second-opinion agent: Bullet.
- Need the smallest possible RAM floor on small machines or containers: Zerostack.
- Need a big-vendor CLI priced for challenger-model economics: Kimi Code.
- Want a harness the agent itself can rewrite, at your own risk: Exo.
- Need live steering while long tool calls run, inside your own Go service: Unreal Agent.
- Need none of the above, just cheap precise edits on your keys: aider.
- Need an auditable, provider-neutral agent whose runtime is built for very long runs at challenger-model prices: MiMo Code.
Changes #
- 2026-08-24 - Created as an owner-requested matrix of eight harnesses across eleven feature rows.
- 2026-08-25 - Extended from eight to eleven columns (Cline, goose, qwen-code alphabetically) after the membership check found it lagging its category.
- 2026-08-26 - Replaced a dead Cline docs URL, added Junie to the local-models list, expanded the rules-portability list, and added a first-person reading line.
- 2026-08-27 - Extended from eleven to thirteen columns with Kilo Code and OpenHands, all 22 new cells traced to fetched sources.
- 2026-08-29 - Extended from thirteen to fourteen columns, adding fx with all eleven cells traced to fetched docs pages.
- 2026-08-30 - Extended from fourteen to fifteen columns, adding jcode between goose and Junie.
- 2026-08-30 - Added a Company row naming each harness maker, attributions traced to each column’s note.
- 2026-08-30 - Added DeepSeek Harness and Pi columns, bringing the matrix to seventeen columns.
- 2026-08-30 - Corrected two column-ordinal references in the prose after the alphabetical re-sort.
- 2026-09-02 - Updated the Junie local-models cell for the Junie Local launch during the category-wide matrix re-verification.
- 2026-09-13 - Updated the Amp column for the September 13 Free Agent change, free with your own compute, subscriptions, or keys and no BYOK token fees outside Enterprise.
- 2026-09-13 - Added Pi to the local-models purist list, which its llama.cpp cell already supported.
- 2026-09-16 - Moved the fx local-models cell from “advertised on fx.dev, not yet in docs” to the documented custom model connections preview for Ollama, vLLM, and OpenRouter, kept partial because it requires a preview build.
- 2026-09-21 - Added the ZCode column (twenty-six to twenty-seven members), sorted after Warp Agent CLI, with all twelve cells traced to the new note, and added ZCode to the auditable-client list.
- 2026-09-24 - Removed the verification preamble line on owner request.
- 2026-09-24 - Updated the fx local-models cell for the v0.0.11 release shipping custom model connections, and qualified the fx gateway-routing prose.
- 2026-09-25 - Added the Unreal Agent column (twenty-seven to twenty-eight members), sorted after Qwen Code, with all twelve cells traced to the new note, and added it to the auditable-client list.
- 2026-09-27 - Added the Open Interpreter column (twenty-eight to twenty-nine members), sorted after OneCLI, with all twelve cells traced to the new note; the column shipped in the 2026-09-27 stars-candidates pass but its intro count and this bullet were missed, both fixed here.
- 2026-09-27 - Added the MiMo Code column (twenty-nine to thirty members), sorted after Kimi Code, with all twelve cells traced to the new note, and added it to the auditable-client and local-models lists.
- 2026-10-02 - Moved the Pi MCP cell from “✗ by design” to “built-in extension since v0.99.0, config-driven” against the v0.99.0 release notes, updated the Pi and local-models-plus-MCP prose to match, and added the missing Pi entry to the auditable-client list.
See also #
- Harness Feature Matrix companion: surfaces - the same treatment for editors and environments
- Agentic Coding Tools Landscape - the map these columns come from
- Model Selection for Coding Tasks - the model side of the same decision
- MCP - the protocol behind the MCP row
- AGENTS.md - the convention behind the AGENTS.md row
References #
https://github.com/Aider-AI/aider - license and feature surface for the aider column
https://ampcode.com/manual/ - modes, plugins, orbs for the Amp column
https://github.com/AntigmaLabs/ante - license, architecture, and provider surface for the Ante column
https://github.com/unreallabsai/unreal-agent - MIT license, releases, and surfaces for the Unreal Agent column
https://unreallabs.ai/blog/unreal-agent/ - the async tool-call model and company backing for the Unreal Agent column
https://www.codewithbullet.com - product surface, benchmark, and free access for the Bullet column
https://code.claude.com/docs/en/overview - surfaces, skills, routines for the Claude Code column
https://docs.cline.bot/features/cline-rules - rules formats including native AGENTS.md for the Cline column
https://developers.openai.com/codex/cli - CLI, skills, AGENTS.md for the Codex column
https://docs.openhands.dev/llms.txt - component map, automations, local LLMs, and .openhands customization for the OpenHands column
https://kilo.ai/docs/llms.txt - subagents, MCP, AGENTS.md support, schedules, and cloud tasks for the Kilo Code column
https://www.anaconda.com/blog/anaconda-acquires-kilo-code - ownership context for the Kilo Code column
https://goose-docs.ai/docs/guides/context-engineering/using-goosehints - AGENTS.md and .goosehints defaults for the goose column
https://opencode.ai/docs/mcp-servers/ - MCP configuration for the OpenCode column
https://github.com/JetBrains/junie - distribution model and MCP mentions for the Junie column
https://github.com/onecli/onecli - license, gateway model, and pricing for the OneCLI column
https://qwenlm.github.io/qwen-code-docs/en/users/configuration/settings/ - QWEN.md and experimental cron for the Qwen Code column
https://docs.warp.dev/agents/cli - CLI surface, cloud agents, and account model for the Warp Agent CLI column
https://github.com/vercel-labs/fx - license, scale, and releases for the fx column
https://fx.sh/docs/getting-started/authentication - the provider model behind the fx BYOK and subscription cells
https://fx.sh/docs/configure-fx/models - the fx local-models cell’s catalog behavior on the built-in providers
https://fx.sh/docs/configure-fx/custom-model-connections - the custom model connections preview behind the fx local-models cell
https://github.com/1jehuang/jcode - license, scale, providers, MCP limits, and swarm for the jcode column
https://jcode.sh/docs - AGENTS.md, hooks, skills, local models, and remote daemon cells for the jcode column
https://github.com/juggler-ai/juggler - license, extensions, and session model for the Juggler column
https://github.com/deepseek-ai/deepseek-harness - license, plugin architecture, and surfaces for the DeepSeek Harness column
https://github.com/earendil-works/pi - license, packages, subscription reuse, and the no-MCP policy for the Pi column
https://github.com/gi-dellav/zerostack - license, feature list, and footprint claims for the Zerostack column
https://github.com/MoonshotAI/kimi-code - license, subagents, MCP, hooks, and ACP cells for the Kimi Code column
https://github.com/exoharness/exo - license, self-modification architecture, and requirements for the Exo column
https://github.com/xai-org/grok-build - Apache-2.0 license, monorepo-sync model, and the no-releases distribution for the Grok Build column
https://docs.x.ai/build/overview - surfaces, authentication, and custom models for the Grok Build column
https://x.ai/cli/install.sh - channels and binary distribution behind the Grok Build open-client cell
https://docs.x.ai/build/features/project-rules - AGENTS.md support for the Grok Build column
https://docs.x.ai/build/features/subagents - built-in subagent types for the Grok Build column
https://docs.x.ai/build/features/background-tasks - /loop scheduling behind the Grok Build scheduled-runs cell
https://docs.x.ai/build/enterprise - auth methods, ZDR, and the OIDC-login cell for the Grok Build column
https://hn.algolia.com/api/v1/items/48877371 - the wire-level analysis grounding the Grok Build caution framing
https://frontierharness.org - independent pass-rate and cost context for the Exo and Kimi Code columns
https://github.com/XiaomiMiMo/MiMo-Code - MIT license, OpenCode fork lineage, and the memory, subagent, and workflow surface for the MiMo Code column
https://mimo.xiaomi.com/blog/mimo-code-long-horizon - the checkpoint, four-layer memory, and
/goaldesign behind the MiMo Code cellshttps://mimo.mi.com/docs/en-US/tokenplan/Token%20Plan/subscription - the Token Plan tiers behind the MiMo Code included-subscription cell
https://raw.githubusercontent.com/XiaomiMiMo/MiMo-Code/main/USE_RESTRICTIONS.md - the use-restrictions addendum behind the MiMo Code open-client cell