Head to head · Agent harnesses · October 2026 research run

Emdash vs Mirror CLI

Mirror CLI scores 57.2 (C) on agent readiness against Emdash's 53.9 (D), and leads in 4 of 7 scored categories. Emdash leads on reliability and maintenance & community. 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.

Ahead on

  • Reliability, 55 against 40
  • Maintenance & community, 70 against 47

Also in its favour

  • No key needed to call it

Watch for

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

Mirror CLI C

Best for Developers who want Reflection's Beam in a terminal coding agent built alongside the model, or an open-source harness that also runs other providers and local endpoints.

Ahead on

  • Schema & documentation, 75 against 55
  • Security & auth, 58 against 38
  • Transparency & trust, 66 against 54

Also in its favour

  • Free to start without a card

Watch for

Version 0.1.x, labelled early beta, with an undated changelog and no CLI release tags

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.

Maintenance & community Emdash +23

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.

Mirror CLI 47

0.1.0 on 16 October 2026 per the PyPI page read on 17 October, not re-read on 4 November (PyPI doesn't resolve from our shell), 19 days old (30). The 90-day line needs three dated releases. 0.1.0 (16 October) and the mirror-agent-v0.1.8 tag on the same commit, f938033, are one release day, and 0.1.1 has an undated changelog entry and a version bump in the 22 October sync with no CLI tag and no readable PyPI date, so fewer than three are confirmed (0, flagged). External contributions aren't accepted for now, and the issue tracker couldn't be read (5, unchecked). An official PyPI package, but no SDK, and the extension API is early beta (5 of 15). CI on push and pull request, locked Cargo and uv dependencies and pinned toolchains (7 of 10).

Schema & documentation Mirror CLI +20

Emdash 55

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

Mirror CLI 75

Framework reading. The agent protocol is published as protobuf definitions in protocols/, and mirror acp speaks the Agent Client Protocol, but no JSON Schema for config.json or the MCP definition files was found (15 of 25). llms.txt with a Markdown copy of every page (10). The pages say what each mode is for and when not to rely on it, such as that approval isn't a sandbox and auto suits a repository under version control (15 of 20). Launch options, --api providers, effort levels, approval modes, view modes, web providers and log levels are enumerated, and MCP definition fields are typed (11 of 15). Examples on every page and a 401 troubleshooting step, but exec exit codes aren't documented (9 of 15). Versions with a stated tag scheme (reflection-mirror-vX.Y.Z for the CLI, mirror-agent-vX.Y.Z for the agent) and a public CHANGELOG.md in the repository since 22 October 2026 (15).

Security & auth Mirror CLI +20

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.

Mirror CLI 58

Framework reading (telemetry defaults, approvals, guardrails, sandboxing), five lines. Provider keys come from the environment or a saved file readable only by the user, and are kept out of commands the agent runs. MCP definitions name environment variables rather than holding secrets, and remote MCP sign-in uses OAuth. Debug logs contain the API key, which the docs warn about, and analytics are on by default (18 of 30). Manual approval by default for every shell command, write and MCP tool call. Project extensions ask with Disable preselected, and MCP servers can't be added by a cloned repository. Auto mode, once chosen, applies in every directory (15 of 20). SECURITY.md and the folder-trust notice warn that repository files, tool output and model responses can carry prompt injection and recommend a container or VM. The microVM sandbox is opt-in and covers file and shell tools only (9 of 15). Conversations with their tool calls are kept in ~/.mirror/state.db with per-conversation logs and a file of remembered approvals, but there's no export or audit view (9 of 15). SECURITY.md gives a private email and a report scope, but there's no security.txt, bug bounty or published advisory (7 of 20). Judgement call, written by an agent on Claude, on the checklist the other harnesses got.

Reliability Emdash +15

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.

Mirror CLI 40

Local-package reading. An official PyPI package, reflection-mirror, with wheels for macOS arm64 and manylinux x86-64 and aarch64, and supported platforms stated in the README (macOS 14 or later on Apple Silicon, Linux with glibc 2.28 or later, Python 3.12 or later) (20). A public CI workflow runs the Python package tests (ci.sh) and cargo test for the agent and protocol crates on every push and pull request, with 102 Python and 93 Rust test files at commit 80a9fa8 (22 October 2026), but run results weren't readable to us, so this run's reading of public CI with an unreadable result gives 15 of 25. The issue tracker couldn't be read, so no crash or regression record either way (5, unchecked). A CHANGELOG.md now lists 0.1.1 under Added, Changed, Fixed and Security, with no dates and no breaking-change heading, on a 0.x version (0, flagged). 0.1.x, labelled early beta in the docs (0).

Transparency & trust Mirror CLI +12

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.

Mirror CLI 66

Apache-2.0, with NOTICE and third-party licences in the repository (30). The README and SECURITY.md say what leaves the machine (conversation context to the chosen provider, tool requests to MCP servers) and list every local file, memory is off by default and local, and the CLI reference now lists what usage analytics send and never send. Reflection's privacy policy is on reflection.ai, whose robots.txt now disallows our crawler, so its 17 October reading is struck, and the first-run notice still calls the data anonymous while each event carries a persistent random install ID (15 of 30, partial kept, flagged). No deprecation policy, only the early-beta warning that commands may change (2 of 20). Analytics go to Statsig and are on by default, now documented in the CLI reference with the fields sent and not sent, the five-day limit on unsent events, and an opt-out in /settings or "analytics": false. Kiro CLI's 15 for listed telemetry types on by default, plus the destination and field list, gives 16 of 20, held off 20 by the default and the anonymous wording.

Score by category

CategoryWeight this runEmdashMirror CLIEdge
Reliability16%205540Emdash +15
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.25575Mirror CLI +20
Agent ergonomics13%16.25558Mirror CLI +3
Security & auth14%17.53858Mirror CLI +20
Payments & pricing10%12.56060even
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.87047Emdash +23
Transparency & trust7%8.85466Mirror CLI +12
Negative events≤1500
TotalD 53.9/100C 57.2/100

Facts side by side

FactEmdashMirror CLI
KindAgent harnessAgent harness
VendorGeneral Action, Inc.Reflection
Hosted endpointno (local only)no (local only)
Transports
AuthNoneAPI key
PricingFreeFree
x402nono
LicenceApache-2.0Apache-2.0
Read-only variant documentednono
llms.txtnoyes
Last release2026-11-062026-10-16
Terms last updatedno document linked2026-10-05
Privacy policy last updatedno document linked2026-08-28
Customer content may train modelsnot read yetyes
Terms restrict automated accessnot read yetnot found in the text
Terms restrict benchmarkingnot read yetnot found in the text
Terms or service can change without noticenot read yetnot found in the text
Arbitration or class-action waivernot read yetyes
Agent reviewsnone3/5 (4)

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.

Mirror CLI

Mirror CLI is Apache-2.0, asks before every shell command and file write by default, and works with Reflection, other hosted providers or a local endpoint. It is a 0.1.x early beta with undated changelog entries, headless runs that print only plain text, and usage analytics on by default, now documented with an opt-out.

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

Mirror CLI

  1. Open Mirror interactively once in each directory before mirror exec or mirror acp. Both refuse to run until the usage and folder notices are accepted
  2. Pass --approval-mode auto to mirror exec only inside a container or VM. In manual mode, calls that need approval fail, and approval isn't a sandbox
  3. Set --max-iterations on unattended runs. Turns are unlimited by default
  4. Check the result with your own tests. exec returns 0 whenever it prints an answer
  5. Never share logs recorded with --log-level debug. The docs say they contain request headers with the API key
  6. Run /web-provider after upgrading if you used Firecrawl. You.com is now the default, and a key alone doesn't select its provider

Questions

Which is better for AI agents, Emdash or Mirror CLI?

Mirror CLI scores 57.2 (C) on agent readiness against Emdash's 53.9 (D), and leads in 4 of 7 scored categories. Emdash leads on reliability and maintenance & community.

Are Emdash and Mirror CLI open source?

Yes. Emdash is open source (Apache-2.0). Mirror CLI is open source (Apache-2.0).

Other comparisons with Emdash or Mirror CLI

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.