This matrix compares the twenty-six harnesses profiled in this section, feature by feature, so the shortlisting step does not require reading twenty-six notes. Everything below was re-verified against live sources on 2026-09-13.
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 as of the date above. 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 | OneCLI | OpenCode | OpenHands | Pi | Qwen Code | Warp Agent CLI | 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 | ✓ Apache-2.0 | ✓ MIT | ✓ MIT | ✓ MIT | ✓ Apache-2.0 | ✗ closed binary | ✓ GPL-3.0 |
| BYOK | ✓ | ✓ fee-free outside Enterprise | ✓ | ? | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ~ AI Gateway key only | ✓ paid keys | ✓ | ✓ custom models via base_url | ✓ | ✓ | ✓ | ✓ | ✓ | ~ BYOC at paid tiers | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 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 | ~ $5 credits at $0 tier | ~ via Zen | ~ ChatGPT Plus/Pro for Codex models | ✓ Claude, ChatGPT, Copilot | ~ Coding Plan weekly quota | ✓ | ✗ |
| Local models | ✓ | ✗ | ✓ embedded llama.cpp | ✗ hosted models only | ✗ | ✓ | ✗ | ✓ | ~ OpenAI-compatible endpoints | ✗ | ~ advertised on fx.dev, not yet in docs | ✗ | ✓ | ~ custom model base_url | ✓ Ollama and LM Studio | ✓ Ollama | ✓ Ollama and LM Studio, plus on-device Junie Local | ✓ Ollama and LM Studio | ✗ | ? | ✓ | ✓ LM Studio, Ollama, vLLM | ✓ llama.cpp | ✓ | ✗ | ✓ Ollama |
| MCP | ✗ | ✓ | ✓ | ? | ✓ | ✓ | ✓ | ✓ | ? | ? | ✓ | ✓ | ✓ | ✓ | ~ stdio only | ✓ | ✓ | ✓ | ✓ | ? | ✓ | ✓ | ✗ by design | ✓ | ? | ~ 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 | ✗ 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 | ? | ✓ | ~ delegates via ACP | ~ via extensions | ✓ teams | ~ multi-agent orchestration | ✓ |
| 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 and plugins | ✓ hooks, skills, plugins | ✓ extensions and skills | ✓ hooks and auto-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 | ✗ | ✓ hosted VMs | ✗ share links only | ✓ OpenHands Cloud | ✗ | ✗ | ✓ cloud agents | ✗ local only |
| Scheduled runs | ✗ | ✓ self-set | ? | ? | ✓ routines | ✓ cron | ? | ✗ | ? | ? | ✗ | ✗ | ✗ | ~ /loop recurring prompts | ~ ambient mode | ? | ✗ | ✓ cron builder | ? | ? | ~ 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 and ACP | ✓ VS Code, Zed, JetBrains via ACP | ? community clients | ✓ VS Code, Zed, JetBrains | ? | ✓ 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, OneCLI, OpenCode, OpenHands, Qwen Code, 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.
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, though every fx request still routes through Vercel AI 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, 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: the only entry with no MCP by design and no built-in subagents, paired with the widest subscription reuse in the table and local models through llama.cpp.
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.
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, 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 none of the above, just cheap precise edits on your keys: aider.
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.
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://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, whose docs still omit local support
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