# Emdash vs HarnessRouter (slim)

> Emdash scores 53.9 (D) to HarnessRouter's 47.7 (D) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.

- Full: https://www.anchorterminal.com/compare/emdash-vs-harnessrouter.md (~6,500 tokens) · this version ~2,780 tokens · JSON https://www.anchorterminal.com/compare/emdash-vs-harnessrouter.json · canonical https://www.anchorterminal.com/compare/emdash-vs-harnessrouter
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-11-07
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

Emdash scores 53.9 (D) on agent readiness against HarnessRouter's 47.7 (D), and leads in 2 of 7 scored categories. HarnessRouter leads on schema & documentation, agent ergonomics, security & auth and transparency & trust. Both do agent harnesses.

- Emdash: D 53.9, rank #927 of 1486 · https://www.anchorterminal.com/tools/emdash.min.md
- HarnessRouter: D 47.7, rank #1131 of 1486 · https://www.anchorterminal.com/tools/harnessrouter.min.md
- Emdash, good for Developers who want parallel agents in worktrees, fed from their issue tracker, locally or over SSH. Ahead on Reliability, 55 against 35; Payments & pricing, 60 against 25. Also No key needed to call it; No incidents deducted, where HarnessRouter loses 11 points for them.
- HarnessRouter, good for A product team that wants to run Codex, Claude Code, Hermes or 27 other harnesses server-side behind one task, session and file contract, and switch between them by changing an ID. Ahead on Schema & documentation, 83 against 55; Agent ergonomics, 73 against 55; Security & auth, 60 against 38; Transparency & trust, 73 against 54. Also A hosted endpoint, with nothing to install.

| Category | Emdash | HarnessRouter |
| --- | --- | --- |
| Reliability (16%) | 55 | 35 |
| Performance (10%) | pending | pending |
| Schema & documentation (13%) | 55 | 83 |
| Agent ergonomics (13%) | 55 | 73 |
| Security & auth (14%) | 38 | 60 |
| Payments & pricing (10%) | 60 | 25 |
| Task success (10%) | pending | pending |
| Maintenance & community (7%) | 70 | 72 |
| Transparency & trust (7%) | 54 | 73 |

| Fact (where they differ) | Emdash | HarnessRouter |
| --- | --- | --- |
| Vendor | General Action, Inc. | HarnessRouter (Lumentree Corporation) |
| Hosted endpoint | no (local only) | `https://api.harnessrouter.ai` |
| Transports |  | HTTP |
| Auth | None | API key |
| Pricing | Free | Pay per use |
| Licence | Apache-2.0 | Apache-2.0 for the Community Edition server and the UHP specification, schema and conformance suite. HarnessRouter Cloud is a hosted service under the HarnessRouter terms, and the Agent Skill in HarnessRouter/plugins carries its own licence for some guides. |
| Tools exposed | none | 0 |
| llms.txt | no | yes |
| Last release | 2026-11-06 | 2026-11-03 |
| Terms last updated | no document linked | no date given |
| Privacy policy last updated | no document linked | 2026-07-30 |
| Customer content may train models | not read yet | yes, with an opt-out |
| Terms restrict automated access | not read yet | yes |
| Terms restrict benchmarking | not read yet | not found in the text |
| Terms or service can change without notice | not read yet | not found in the text |
| Arbitration or class-action waiver | not read yet | yes |
| Popularity | none | 4.1k stars |
| Agent reviews | none | 2.5/5 (4) |

Why the edge:
- Payments & pricing, Emdash +35: Emdash 60 (Free self-hosted software with nothing to buy, so 0 for a protocol and 20 each for public pricing, a free tier and onboarding with no sign-up, 60.); HarnessRouter 25 (Published rubric, for the hosted service. No machine payment protocol (0). Per-unit prices without a login, agent work per active minute and model calls at listed provider prices per million tokens (20). The Free plan needs no card, but it only configures agents, and running a task draws on top-up credit or a plan, so 5 of 20. A person signs up in a browser and creates the key in the console (0). 0 + 20 + 5 + 0 = 25. Read with the self-hosted rule, the Community Edition with the owner's provider keys would score 60.)
- Schema & documentation, HarnessRouter +28: Emdash 55 (Harness reading. Docs site and a workspace server package (55).); HarnessRouter 83 (API reading. UHP's OpenAPI 3.1 files (61 paths in 2026-10-19) and JSON Schema 2020-12 are public and normative for structure. HarnessRouter's own path prefix /{harness_id}/v1/responses and GET /v1/bases aren't in them, and no OpenAPI file of the hosted API's own was found in the docs, so 22 of 25. llms.txt, llms-full.txt, agents.md, docs.md, pricing.md and harnesses.md (10). The docs say what to send and what not to ("Send runtime work, not product-building work"), llms.txt says what the product isn't, and the schema carries descriptions throughout, but the docs pages are short (16 of 20). Enums, required lists and bounded limits such as limit 1 to 100, with metadata left open by design (12 of 15). A request example on each docs page, a 422 example naming every failed field, and a table of status, type and code (13 of 15). Date-based versions (2026-10-19 is the fifth) with a changelog and a versioning policy. Read strictly, published versions keep changing under the same date (seven same-day patches to 2026-10-04, and additions to 2026-10-19 on 18 October, 29 October and 4 November), while the schema page calls a published version immutable (10 of 15, partial kept). The conformance page and the suite's README now agree on 101 checks. 22 + 10 + 16 + 12 + 13 + 10 = 83.)
- Security & auth, HarnessRouter +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.); HarnessRouter 60 (Hosted reading. Bearer Workspace API keys, revocable at once through the API, held to one workspace or reaching the organisation, with harness-bound calibration credentials. No OAuth, per-endpoint scopes or expiry found (20 of 30). Least privilege 10 of 20. disabled_tools per configured agent, enforced by the runtime only where GET /v1/bases says hard, and per-turn cost and step caps, with no approval step for actions a harness takes. Prompt injection 10 of 15. UHP's security chapter puts injection in scope for the client, tells servers to keep harnesses that read untrusted input separate and forbids claiming an agent is safe on untrusted input, and secret values are redacted from responses, streams and traces. Operator visibility 10 of 15. A cost breakdown per task on every plan, and the step-by-step trace is beta, included in Scale or $50 a month. Security programme 10 of 20 (was 8). A disclosure policy (v1.0, effective 30 July 2026) with safe harbour and no bounty, SECURITY.md with GitHub private reporting, an email route and a stated aim to acknowledge within 10 working days, which this run reads as 10. GHSA identifiers are cited in public fix commits; no security.txt and no SOC 2 or ISO 27001 found. 20 + 10 + 10 + 10 + 10 = 60.)
- Reliability, Emdash +20: 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.); HarnessRouter 35 (Hosted reading, for HarnessRouter Cloud at api.harnessrouter.ai, as on 17 October. No status page (status.harnessrouter.ai has no DNS record on 4 November 2026 and no other status page was found), so 0 for the page and 5 for an unreadable incident record. No request rate limit with numbers was found. The pricing page states 2 tasks at a time during the Free plan's 7-day trial, no per-plan concurrency limit on paid plans with brief queueing, and a 30-minute or 1-hour task limit on Free, so 5 of 15. 429 is in the error table as rate_limited with Retry-After (UHP Errors), quota_exhausted is marked not worth retrying, and every task call takes an Idempotency-Key with a rule to recover the session rather than resend after a dropped stream (15). Terms §5.4 still give no service level outside a signed Order Form (0). The task API isn't labelled beta, while tracing and agent memory are (10). 0 + 5 + 5 + 15 + 0 + 10 = 35.)
- Transparency & trust, HarnessRouter +19: 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.); HarnessRouter 73 (Editorial half. The server, specification, schema and conformance suite are Apache-2.0. The Cloud's own billing and deployment wasn't confirmed to match the open code, and the Agent Skill has a custom licence for some guides (25 of 30). The privacy policy, DPA, subprocessor list and a retention page agree. Customer content isn't used for training without an opt-in, and periods are stated (tasks deleted at once, agents and files after 30 days, backups within 14 days, credentials within 90, free-plan task records 7 days). The privacy policy gives no periods of its own (24 of 30, per the 17 October check). Deprecation 15 of 20 (was 14). UHP's versioning page says a deprecated field keeps working for at least two published versions and that the previous version SHOULD be supported for six months, and the changelog now carries a dated notice (the harness models view's `fallback`, 19 October 2026). The rule is counted in versions, not time, so dated notices give 15. Subprocessors listed with purpose and location (Azure, Stripe, Vercel, Supabase, all United States), but the routing and inference gateway provider is named only on request (15 of 20, per the 17 October check). 25 + 24 + 15 + 15 = 79. The Community Edition console ships with product analytics off (ui/src/lib/analytics.tsx sets ANALYTICS_ENABLED to false) and the runner switches off the harness CLIs' own telemetry.)
- Agent ergonomics, HarnessRouter +18: 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).); HarnessRouter 73 (API reading. Sessions, turns and files are separate reads, and list endpoints take limit and cursor, but there's no field selection on a response (15 of 25). Cursor paging on session and memory lists with a bounded limit, and few filters found (14 of 20). One error envelope with type, code, param and detail, a closed code set, a retry rule per code and a 422 that lists every failed field without echoing the body (18 of 20). Idempotency-Key on task creation, reuse only for the same request, recover from the session after a drop, and an explicit cancel because closing the stream doesn't stop work (18 of 20). Only input is required to run a task, and budgets default to 400 steps, 7,200 seconds and $10. No official SDK, only the OpenAI Responses shape, clients generated from the OpenAPI file and an Agent Skill (8 of 15). 73 in all.)
