Head to head · Agent harnesses · October 2026 research run

Emdash vs OpenCode

OpenCode scores 68.8 (B) on agent readiness against Emdash's 53.9 (D), and leads in 6 of 7 scored categories. Both do agent harnesses.

Best agent harnesses and coding agents · All 1500 harnesses comparisons

Which one, for what

Emdash D

Best for Developers who want parallel agents in worktrees, fed from their issue tracker, locally or over SSH.

Also in its favour

  • No incidents deducted, where OpenCode loses 4 points for them

Watch for

Telemetry on unless turned off in Settings or with TELEMETRY_ENABLED=false

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

  • Reliability, 72 against 55
  • Schema & documentation, 88 against 55
  • Agent ergonomics, 79 against 55
  • Security & auth, 60 against 38
  • Maintenance & community, 81 against 70
  • Transparency & trust, 71 against 54

Also in its favour

  • Free to start without a card

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.

Schema & documentation OpenCode +33

Emdash 55

Harness reading. Docs site and a workspace server package (55).

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).

Agent ergonomics OpenCode +24

Emdash 55

Harness reading. Issue intake from Linear, GitHub, Jira and others, diff review, pull requests and CI checks in one place, local or over SSH (55).

OpenCode 79

Harness reading of the framework line, scored on what an agent or pipeline driving it has to supply. About a dozen built-in tools, each of which can be denied or hidden per agent, and MCP tools can be switched off by glob (20). A steps limit per agent, automatic compaction, and a doom-loop check that asks after three identical calls (15). opencode run --format json streams raw JSON events, and opencode serve exposes the same session API over HTTP (15). Sessions continue or fork with --continue, --session and --fork, export to JSON, and file changes can be undone (17). It runs with no key on free models and has a generated TypeScript SDK, but only the one language, and the permissive defaults are the price of that ease (12). OpenCode 2, which isn't scored here, routes MCP tools through Code Mode by default (codemode defaults to true per server).

Security & auth OpenCode +22

Emdash 38

Harness reading. Telemetry is described as optional and disabled in Settings or with TELEMETRY_ENABLED=false, which reads as on by default (15 of 30). Worktree per task and remote machines over SSH (10 of 20). No prompt-injection guidance (5). No audit log (5). No security policy file found (3). 15 + 10 + 5 + 5 + 3 = 38.

OpenCode 60

Harness reading of the framework checklist, used for all five harnesses in this batch. 30 for what leaves the machine by default, 20 for approvals and sandboxing, 15 for prompt-injection posture, 15 for audit and 20 for the security programme. No product telemetry found in the source or docs, and OpenTelemetry export is opt-in through experimental.openTelemetry. It fetches the model list from models.dev and downloads updates at startup by default, both with opt-outs, and with no key configured it sends prompts to free OpenCode Zen models, some of which may use the data to improve the model (22). Allow, ask or deny per tool with glob patterns, .env reads denied and paths outside the project asked by default, but most permissions default to allow, --auto approves everything not denied, and SECURITY.md says the permission system is not a sandbox (9). SECURITY.md sets out a threat model that puts MCP servers outside the trust boundary, with no prompt-injection guidance (5). Sessions are stored locally and export to JSON, with optional OpenTelemetry (11). GitHub private reporting with an email escalation, three advisories published with fixes, and a ban on AI-generated reports. No security.txt (13). CVE-2026-88624 (published 22 September, CVSS 9.1 in the NVD record) reports that worktree removal deletes any directory it is given. In 1.19.5, as in 1.19.3, Worktree.remove still deletes an existing path that isn't a registered worktree. The call needs access to the server API, which SECURITY.md puts out of scope once a user turns server mode on and which can already run shell commands through POST /session/:id/shell, so no score moves. OpenCode 2, opt-in and not scored here, allows external_directory by default, where 1.x asks.

Reliability OpenCode +17

Emdash 55

Local software. Homebrew cask and installers for macOS, Windows and Linux (20). A code-consistency check and release workflows; no test workflow found (10). GitHub issues and pull requests weren't read (GitHub's pages refuse these sessions), so that line is scored absent (0). Stable tags to v1.2.11, release notes on GitHub (10). Version 1.2.11 (15). 20 + 10 + 0 + 10 + 15 = 55.

OpenCode 72

Read as a local package, graded on the 1.x line that npm i -g opencode-ai and the opencode.ai/install script put on a machine. opencode-ai 1.19.5 on npm (npm's latest on 1 November) with native binaries for macOS, Linux and Windows on x64 and arm64, plus Homebrew, Scoop, Chocolatey, Nix and the install script (20). A test workflow runs on the repository. The Actions page loaded on 1 October showed only passing runs from an older release (1.3.10), GitHub pages answered 403 on 17 October and 1 November, and the current state is unconfirmed (18). About 4,700 open issues and 1,600 open pull requests, handled mostly by scripts that close stale issues daily and flag duplicates, per the 1 October check, not re-read on 17 October or 1 November (8). Releases come almost daily with notes on GitHub and a changelog page. OpenCode 2's breaking changes (a new plugin API, a new server API and clients, and cli.json in place of tui.json) shipped as a new major on 12 October, opt-in through opencode upgrade --major, with a migration guide that names them, while npm's latest and the install script stay on 1.x. The 1.19.4 and 1.19.5 commits change no SDK code and mark no breaking change, but the 1.x release notes weren't read for a breaking-change section (11). 1.19, stable (15).

Transparency & trust OpenCode +17

Emdash 54

Apache 2.0 (30). A telemetry page on the docs site (not read) (18 of 30). No deprecation policy (5). Disclosed with an opt-out (15 of 20). 30 + 18 + 5 + 15 = 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).

Maintenance & community OpenCode +11

Emdash 70

v1.2.11 on 6 November 2026 (30). v1.2.9, v1.2.10 and v1.2.11 within two weeks (20). GitHub issues and pull requests weren't read (GitHub's pages refuse these sessions), so that line is scored absent (0). Current installers and Homebrew cask (15). Release workflows, no test CI (5). 30 + 20 + 0 + 15 + 5 = 70.

OpenCode 81

1.19.5 on npm on 2026-10-28, 4 days before the check, and v2.2.5 tagged on 30 October (30). 30 releases on the 1.x line (1.18.12 to 1.19.5) in the 90 days to 1 November, plus 44 v2 tags (20). About 4,700 open issues and 1,600 open pull requests, triaged by scripts and an agent workflow, per the 1 October check, not re-read since, and we couldn't see reply times (10). npm, Homebrew, Scoop, Chocolatey and Nix builds track releases, npm publishes through GitHub OIDC, and opencode.ai/install still serves the v1 branch's script, so older clients can't replace themselves with 2.x by accident (14). Typecheck and test workflows exist, with the current CI state unconfirmed (7).

Score by category

CategoryWeight this runEmdashOpenCodeEdge
Reliability16%205572OpenCode +17
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.25588OpenCode +33
Agent ergonomics13%16.25579OpenCode +24
Security & auth14%17.53860OpenCode +22
Payments & pricing10%12.56060even
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.87081OpenCode +11
Transparency & trust7%8.85471OpenCode +17
Negative events≤150-4
TotalD 53.9/100B 68.8/100

Facts side by side

FactEmdashOpenCode
KindAgent harnessAgent harness
VendorGeneral Action, Inc.Anomaly
Hosted endpointno (local only)no (local only)
Transports
AuthNoneNone
PricingFreeFreemium
x402nono
LicenceApache-2.0MIT
Read-only variant documentednono
llms.txtnono
Last release2026-11-062026-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
Popularitynone211k stars
Agent reviewsnone2/5 (2)

How the scores have moved

Verdicts

Emdash

A mature open-source app for parallel coding agents in Git worktrees, with issue intake from a dozen trackers and remote machines over SSH. Telemetry is on unless you turn it off, and no test workflow was found in the repository.

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

Emdash

  1. Launch with TELEMETRY_ENABLED=false if you don't want telemetry
  2. Use the SSH mode to keep agents on a remote machine

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, Emdash or OpenCode?

OpenCode scores 68.8 (B) on agent readiness against Emdash's 53.9 (D), and leads in 6 of 7 scored categories.

Are Emdash and OpenCode open source?

Yes. Emdash is open source (Apache-2.0). OpenCode is open source (MIT).

Other comparisons with Emdash 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.