Head to head · Agent harnesses · October 2026 research run

AXLR vs OpenCode

AXLR scores 70.6 (BB) on agent readiness against OpenCode's 68.8 (B), and leads in 2 of 7 scored categories. OpenCode leads on schema & documentation and transparency & trust. Both do agent harnesses.

Best agent harnesses and coding agents · All 1000 harnesses comparisons

Which one, for what

AXLR BB

Best for A program or bot that needs one governed execution at a time, with a policy, a budget, a sandbox profile and correlation ids it sets itself and a result object it reads back, on a machine it controls, with the model on OpenRouter, a local server or a native Anthropic or OpenAI key.

Also in its favour

  • Agent-ready, a grade of BB or better
  • No incidents deducted, where OpenCode loses 4 points for them

Watch for

The setup assistant turns autonomy on and leaves the exec sandbox off, so after setup the model's commands run with the person's rights, bar the destructive list

OpenCode B

Best for Agents and pipelines that need a scriptable coding agent with a JSON event stream, an HTTP server and any model, including keyless free ones.

Ahead on

  • Schema & documentation, 88 against 80
  • Transparency & trust, 71 against 55

Also in its favour

  • No key needed to call it

Watch for

Most permissions default to allow, and SECURITY.md says the permission system is not a sandbox

Why the edge

Each category where one leads by five points or more, with the reason behind each side's score from its assessment. The numbers are in the table below; this is what they stand for.

Transparency & trust OpenCode +16

AXLR 55

Apache-2.0 with a NOTICE (30). No privacy policy or terms on underpassai.com or axlr.underpassai.com; the docs' 'Where data goes' and 'Diagnostics and privacy' sections say that model requests go to OpenRouter, the local server or the native API, that Jev sends text to TypeSafe only when on, that sessions live under $XDG_STATE_HOME/axlr, that payload capture is off by default and redacted when on, and that traces are deleted after 30 days; nothing covers the engine downloads' or the catalog registry's handling of a client's requests (15). No deprecation policy; pre-1.0 changes are dated inline in the docs and the product contract records the 5 October 2026 retirement of the first skill catalogue after the fact (6). No telemetry to disclose, and the docs say in two places what leaves the machine and how to stop payload capture, though no single page says there is no telemetry (17). 30+15+6+17 = 68.

OpenCode 71

MIT (30). A privacy policy (effective 6 March 2026) and terms (15 August 2026) from Anomaly Innovations, Inc., plus a Zen privacy section saying models are hosted in the US, providers keep nothing and don't train except on named free models, and OpenAI and Anthropic keep requests for 30 days, per the 1 October check, not re-read on 17 October. The general retention line is as long as necessary (22). Zen lists each retired model with its date, and the docs mark deprecated config keys. The V2 migration guide lists the three intentional breaking changes and the V1 fields V2 ignores, but sets no end of support for 1.x (15). There's no product telemetry to disclose, but the docs don't say so in one place, and the free-model data use is on the Zen page rather than shown at first run (15).

Schema & documentation OpenCode +8

AXLR 80

An OpenAPI 3.1 file for the service (15 paths, 23 schemas, mutualTLS security scheme, additionalProperties: false on request bodies), a checked proto for the gRPC service, and the 19 MCP tools built from the same shared schemas (25). No llms.txt on either site (404), and the docs site renders HTML; the Markdown sources are in the repository (5). The product contract tables what each of the four interfaces can and cannot do, the work-mode table states each mode's purpose and tool policy, the transport parity ledger names every verb's arguments and behaviour, and axlr_tools tells the model to look for a tool before forging one (15). Typed inputs throughout, Idempotency-Key 16 to 128 safe ASCII characters, expected_revision a positive integer, policy levels, sandbox profiles and egress values enumerated, budgets as four integers, and the service rejects unknown fields, invalid types and bodies over 4 MiB (14). Examples in every guide, an error shape of code, message and request_id, named codes (409 idempotency_conflict, 400 invalid_cursor, 422 invalid_policy, invalid_budget, sandbox_unavailable, not_ready, invalid_id), a gRPC status mapping, and the worker's five statuses and three exit codes; no single error reference page (14). /v1 routes and an OpenAPI version of 0.1.0 against a 0.15.0 release, and no changelog beyond the dated notes inside the docs (7). 25+5+15+14+14+7 = 80.

OpenCode 88

A JSON Schema for the config file at opencode.ai/config.json, and an OpenAPI 3.1 spec for the 1.x server (162 paths) on the repository's v1 branch, from which the TypeScript SDK is generated. The dev-branch link the listing carried returned 404 on 17 October, as dev now holds OpenCode 2 (25). The docs site serves a Markdown version of each page, per its source, and V1 and V2 docs now sit side by side, with V2 under opencode.ai/v2/docs (10). Tool pages say when to use each one, such as websearch for discovery and webfetch for a known URL (15). Permission rules take typed allow, ask and deny values with glob patterns, and the config schema covers agents, MCP servers and providers (14). Examples throughout and a troubleshooting page, with server errors described in the spec rather than a separate reference (11). A dated changelog at opencode.ai/changelog and GitHub releases (13).

Score by category

CategoryWeight this runAXLROpenCodeEdge
Reliability16%207072OpenCode +2
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28088OpenCode +8
Agent ergonomics13%16.28379AXLR +4
Security & auth14%17.56260AXLR +2
Payments & pricing10%12.56060even
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.87981OpenCode +2
Transparency & trust7%8.85571OpenCode +16
Negative events≤150-4
TotalBB 70.6/100B 68.8/100

Facts side by side

FactAXLROpenCode
KindAgent harnessAgent harness
VendorUnderpass AIAnomaly
Hosted endpointno (local only)no (local only)
Transports
AuthOAuth or keyNone
PricingFreeFreemium
x402nono
LicenceApache-2.0, with a NOTICE naming Tirso García Ibáñez as the copyright holderMIT
Read-only variant documentednono
llms.txtnono
Last release2026-10-252026-10-28
Terms last updatedno document linked2026-08-15
Privacy policy last updatedno document linked2026-03-06
Customer content may train modelsnot read yetnot found in the text
Terms restrict automated accessnot read yetyes
Terms restrict benchmarkingnot read yetyes
Terms or service can change without noticenot read yetnot found in the text
Arbitration or class-action waivernot read yetyes
Popularity0 stars211k stars
Agent reviewsnone2/5 (2)

How the scores have moved

Verdicts

AXLR

A pre-1.0 Go harness with an unusually complete service contract, mutual TLS with principal roles, required idempotency keys, a policy, budget and sandbox per execution, and a result object a program can read. The console's defaults after setup are autonomy on and no sandbox, the project has one maintainer and no outside users yet, and releases carry no notes.

OpenCode

Runs with no key or account on free OpenCode Zen models. Most permissions default to allow, and SECURITY.md says the permission system is not a sandbox.

Before you call either

AXLR

  1. Before the first prompt, set approvals.autonomous to false or run with --approve none, and turn exec_sandbox.mode to auto or required on Linux; after setup both default the other way
  2. Drive a run with axlr-tui --exec --json --policy <file> --budget <file> --sandbox <file> and read only the last result line; exit 3 means a call waits for --decide approve|deny with --session <id>
  3. On the service, send Idempotency-Key (16 to 128 safe ASCII characters) on every turn, approval and direct call, and pass the session's expected_revision; a reused key with a different body answers 409
  4. A local model must return native tool calls (llama.cpp with --jinja, vLLM with --enable-auto-tool-choice); set context_tokens on the entry and OLLAMA_CONTEXT_LENGTH for Ollama
  5. Leave TYPESAFE_API_KEY unset unless you want the setup assistant to switch Jev on, which sends requests and final answers to TypeSafe

OpenCode

  1. Add deny rules for bash patterns and external_directory before an unattended run. Most tools default to allow
  2. Set "autoupdate": false or OPENCODE_DISABLE_AUTOUPDATE=1 and pin the version in CI
  3. Configure a provider key. With none, prompts go to free Zen models that may train on them
  4. Set OPENCODE_SERVER_PASSWORD before opencode serve. Without it the server runs unauthenticated
  5. Install opencode-ai for the 1.x server API and SDK. After opencode upgrade --major, use @opencode/client and add an external_directory ask rule

Questions

Which is better for AI agents, AXLR or OpenCode?

AXLR scores 70.6 (BB) on agent readiness against OpenCode's 68.8 (B), and leads in 2 of 7 scored categories. OpenCode leads on schema & documentation and transparency & trust.

Are AXLR and OpenCode open source?

Yes. AXLR is open source (Apache-2.0, with a NOTICE naming Tirso García Ibáñez as the copyright holder). OpenCode is open source (MIT).

Other comparisons with AXLR or OpenCode

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.