{
  "data": {
    "a": {
      "slug": "emdash",
      "name": "Emdash",
      "vendor": "General Action, Inc.",
      "vendorUrl": "https://emdash.sh",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Emdash is an open-source desktop app that runs coding agents such as Claude Code, Codex, OpenCode and Amp in parallel, each in its own Git worktree, locally or on remote machines over SSH, with issue intake and pull requests.",
      "url": "https://www.anchorterminal.com/tools/emdash",
      "markdownUrl": "https://www.anchorterminal.com/tools/emdash.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/emdash.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/emdash.json",
      "dns": "emdash.grade.anchorterminal.com",
      "repo": "https://github.com/generalaction/emdash",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [],
      "auth": "none",
      "pricing": "free",
      "pricingNotes": "Free and open source. You pay for the coding agents it runs, through your own subscriptions or API keys (checked 2026-11-07).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No payment protocol in the repository or README (checked 2026-11-07).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-07"
      },
      "docsUrl": "https://emdash.sh/docs",
      "capabilities": [
        "agent.harness",
        "agent.multi-agent"
      ],
      "tags": [
        "open-source",
        "apache-2.0",
        "desktop-app",
        "telemetry",
        "new"
      ],
      "lastRelease": "2026-11-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 53.9,
        "grade": "D",
        "agentReady": false,
        "rank": 927,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 35,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 55,
          "maintenance": 70,
          "payments": 60,
          "reliability": 55,
          "schema": 55,
          "security": 38,
          "transparency": 54
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "low",
          "date": "2026-11-07"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "Developers who want parallel agents in worktrees, fed from their issue tracker, locally or over SSH.",
        "strengths": [
          "Each task in its own Git worktree and branch",
          "Issues from Linear, GitHub, Jira, GitLab, Asana and more go straight to an agent",
          "Works on remote machines over SSH",
          "Apache 2.0, version 1.2, with macOS, Windows and Linux builds"
        ],
        "weaknesses": [
          "Telemetry on unless turned off in Settings or with TELEMETRY_ENABLED=false",
          "No test workflow found, only consistency and release workflows",
          "No security policy file"
        ],
        "agentNotes": [
          "Launch with TELEMETRY_ENABLED=false if you don't want telemetry",
          "Use the SSH mode to keep agents on a remote machine"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "low",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 53.9
          }
        ],
        "editorialScores": {
          "ergonomics": 55,
          "maintenance": 70,
          "payments": 60,
          "reliability": 55,
          "schema": 55,
          "security": 38,
          "transparency": 68
        },
        "provenanceScore": 40,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-07",
            "maintenance": "2026-11-07",
            "payments": "2026-11-07",
            "reliability": "2026-11-07",
            "schema": "2026-11-07",
            "security": "2026-11-07",
            "transparency": "2026-11-07"
          },
          "last": "2026-11-07",
          "oldest": "2026-11-07",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "brew install --cask emdash"
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/emdash"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "General Action, Inc.",
        "domain": "emdash.sh",
        "domainRegistered": "",
        "domainNote": "Not looked up: RDAP isn't requested under the 1 November 2026 rules.",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-07",
        "notes": [
          "The licence names General Action, Inc.. The repository is github.com/generalaction/emdash."
        ],
        "score": 40
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/emdash.json",
      "live": {
        "slug": "emdash",
        "securityTxt": {
          "url": "https://emdash.sh/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:15.230445185Z"
        },
        "updatedAt": "2026-11-07T16:01:15.230445185Z"
      }
    },
    "answer": "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 \u0026 documentation, agent ergonomics, security \u0026 auth and transparency \u0026 trust.",
    "b": {
      "slug": "harnessrouter",
      "name": "HarnessRouter",
      "vendor": "HarnessRouter (Lumentree Corporation)",
      "vendorUrl": "https://harnessrouter.ai",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "HarnessRouter runs complete agent harnesses such as Codex, Claude Code and Hermes behind one HTTP API, the Unified Harness Protocol, with sessions, streaming, files and artifacts. It comes as a hosted cloud or a self-hosted Community Edition.",
      "url": "https://www.anchorterminal.com/tools/harnessrouter",
      "markdownUrl": "https://www.anchorterminal.com/tools/harnessrouter.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/harnessrouter.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/harnessrouter.json",
      "dns": "harnessrouter.grade.anchorterminal.com",
      "repo": "https://github.com/HarnessRouter/harnessrouter",
      "license": "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.",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.harnessrouter.ai",
      "packages": [
        {
          "registry": "oci",
          "name": "harnessrouter/harnessrouter"
        }
      ],
      "auth": "api-key",
      "authNotes": "A Workspace API key (sk-hr-) as a Bearer token from the product's server, never from a browser (https://harnessrouter.ai/docs/authentication). Keys are created in the console after a browser sign-up, can be held to one workspace or reach the whole organisation, and are revoked at once by DELETE /v1/orgs/{org}/keys/{id}. No OAuth or per-endpoint scopes found. The self-hosted Community Edition signs into its console with a username and password and needs no HarnessRouter key.",
      "pricing": "usage",
      "pricingNotes": "Free plan at $0 with no card, for the console and configuring agents, with 2 tasks at a time during its 7-day trial. Running tasks draws on top-up credit ($10 minimum, 5.5 per cent fee, minimum $0.80) or a plan, Developer $20, Production $200 or Scale $1,000 a month, each fully included as usage. Agent work is $0.020 an active minute on top-ups and $0.014 to $0.006 on plans, and model calls are at the provider's price or on your own keys (https://harnessrouter.ai/pricing.md, checked 2026-11-04). Self-serve payment is card-only.",
      "priceSummary": "$20 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, llms-full.txt, the pricing page or the UHP schema (checked 2026-10-17). Payment is by card for top-ups and plans.",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": 4069,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-04"
      },
      "docsUrl": "https://harnessrouter.ai/docs",
      "llmsTxt": "https://harnessrouter.ai/llms.txt",
      "openapi": "https://github.com/HarnessRouter/harnessrouter/blob/main/protocol/schema/uhp-2026-10-04.openapi.yaml",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "open-source",
        "apache-2.0",
        "api-key",
        "usage",
        "openapi",
        "llms-txt",
        "docker",
        "python",
        "streaming",
        "cloud-agent",
        "agent-skill"
      ],
      "lastRelease": "2026-11-03",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 47.7,
        "grade": "D",
        "agentReady": false,
        "rank": 1131,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 46,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 72,
          "payments": 25,
          "reliability": 35,
          "schema": 83,
          "security": 60,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": -11,
        "negativeNotes": [
          "2026-10-06, -5. Privately reported flaws fixed in public commits #416 to #429 on 6 and 7 October 2026. The gateway source names them GHSA-p6cq-54cg-8mpv (a bearer token that failed verification still reached internal routes, so anyone could rewrite any organisation's connections and routing; \"found live on the hosted service and closed there the same way, 2026-10-06\"), GHSA-qrr8-m92f-7vfp (identity headers trusted by default), GHSA-mw9j-m5jf-5r56 and GHSA-c5g7-c47h-f6c3 (server-side request forgery through git imports and upload addresses) and GHSA-rmh9-whjx-gfrc (secrets with quotes or non-ASCII characters left unredacted). A workspace key could also read, change and delete another workspace's harnesses, sessions and responses and mint an organisation-wide key (\"reported privately three times\"). All were fixed within days and described in the source. The advisory pages couldn't be read (GitHub answered 403), so whether they're published is unchecked, and the deduction is lower than an open cross-tenant flaw would get. Source https://github.com/HarnessRouter/harnessrouter/blob/main/gateway/app.py",
          "2026-10-10, -3. Since 10 October 2026 harness writes carrying a field the harness doesn't have, or a `default_model` its base doesn't run, are refused with 422 (`model_not_available` for the model), where they were accepted with 200 before. UHP's own versioning rules reserve such a tightening for a new version. The first notice was the known-compromises entry added to the versioning page in the same commit on 10 October, the day the hosted service made the change, and the changelog followed on 19 October (same-day term; it applies to the hosted service, so the 0.x reading doesn't reach it). Source https://github.com/HarnessRouter/harnessrouter/blob/main/protocol/VERSIONING.md",
          "2026-11-03, -3. Release v0.37.16 (3 November) fixes a flaw its commit describes with no advisory identifier. A relay route kept a connection's key usable after its turn ended, even after the operator removed the connection (\"200 on the turn's route after the turn had ended\"). The v0.37.15 fixes of 2 November (credentials and instance secrets readable by agent turns, the published default console password accepted) cite GHSA-m479 and GHSA-r37g in the source, and other v0.37.16 and v0.37.17 fixes cite GHSA-3vf8, GHSA-fx92, GHSA-gf7m-w8pf-6f68, GHSA-mm72-wr37-26pv and GHSA-mx6c-8c42-fw44, so they aren't counted here. None of those advisories could be read (GitHub answered 403). Source https://github.com/HarnessRouter/harnessrouter/commit/430358a"
        ],
        "verdict": "A product's server sends a task to a named harness and gets streamed progress, sessions and files back, under a published OpenAPI contract with idempotency keys and a closed set of error codes. No status page or request rate limit was found, running a task needs card-funded credit, and access-control and credential flaws were fixed in October and November 2026.",
        "bestFor": "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.",
        "strengths": [
          "UHP is published as OpenAPI 3.1 and JSON Schema 2020-12 under Apache-2.0, with a 101-check conformance suite in the repository",
          "Every task call takes an Idempotency-Key, and the error envelope has a closed code set, with a retry rule per code",
          "Per-turn budgets (400 steps, 7,200 seconds and $10 by default) cap what one task can spend",
          "30 harnesses listed as available, including Codex, Claude Code, Hermes, OpenCode, goose and Qoder, behind one task contract",
          "245 tagged releases between 15 August and 3 November 2026, and the self-hosted Community Edition runs with no HarnessRouter account"
        ],
        "weaknesses": [
          "No status page found (status.harnessrouter.ai has no DNS record), and the terms give no service level without a signed Order Form",
          "No request rate limit is published. Only concurrency (2 tasks at a time in the Free trial) and task length (30 minutes, or 1 hour after a top-up) are stated",
          "Running a task on the hosted service draws on credit, and top-ups and plans are card-only, so an agent can't start without a person",
          "Access-control, SSRF and redaction flaws were fixed on 6 and 7 October 2026, and credential exposure to agent turns on 2 and 3 November, with no advisory readable",
          "Harness writes with unknown fields began failing with 422 on 10 October 2026, announced only that day in the versioning page and on 19 October in the changelog"
        ],
        "agentNotes": [
          "Name the harness yourself. The task call is POST /{harness_id}/v1/responses, and HarnessRouter doesn't choose a harness for you",
          "Send a fresh Idempotency-Key with each new task, reuse it only for a retry of the same request, and recover from the session if a stream drops",
          "Call cancel to stop work. Closing the SSE connection leaves the agent running and billing",
          "Keep the Workspace API key on the server. The docs forbid calling the API from a browser with it",
          "Check each tool's enforcement in GET /v1/bases. On bases marked instruction, disabled_tools is a request to the model, not a block"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 47.7
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 72,
          "payments": 25,
          "reliability": 35,
          "schema": 83,
          "security": 60,
          "transparency": 79
        },
        "provenanceScore": 67,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "docker run -d --name harnessrouter -p 127.0.0.1:3000:3000 -v harnessrouter:/data harnessrouter/harnessrouter",
        "http": "curl -N https://api.harnessrouter.ai/$HARNESS_ID/v1/responses -H \"Authorization: Bearer $HR_API_KEY\" -H \"Idempotency-Key: $(uuidgen)\" -H \"Content-Type: application/json\" -d '{\"input\": \"Review this uploaded agreement and return a checklist.\", \"stream\": true}'"
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/harnessrouter"
      },
      "area": "frameworks",
      "unitPrices": [
        {
          "item": "Developer plan, all $20 as usage",
          "unit": "month",
          "usd": 20,
          "note": "agent work $0.014 an active minute, one workspace"
        },
        {
          "item": "Production plan, all $200 as usage",
          "unit": "month",
          "usd": 200,
          "note": "agent work $0.010 an active minute, five workspaces"
        },
        {
          "item": "Scale plan, all $1,000 as usage",
          "unit": "month",
          "usd": 1000,
          "note": "agent work $0.006 an active minute, tracing included"
        },
        {
          "item": "Agent work on top-up credit, per hour of active work",
          "unit": "session-hour",
          "usd": 1.2,
          "note": "$0.020 an active minute, billed by the second. Waiting on the model, the user or a queue isn't billed"
        },
        {
          "item": "Tracing add-on",
          "unit": "month",
          "usd": 50,
          "note": "beta, included with Scale"
        }
      ],
      "provenance": {
        "legalEntity": "Lumentree Corporation",
        "domain": "harnessrouter.ai",
        "domainRegistered": "2026-06-18",
        "endpointOnVendorDomain": true,
        "terms": "https://harnessrouter.ai/legal/terms",
        "privacy": "https://harnessrouter.ai/legal/privacy",
        "statusPage": "",
        "changelog": "https://unifiedharnessprotocol.org/changelog",
        "securityTxt": "none",
        "checked": "2026-11-04",
        "notes": [
          "The terms (v1.1, 31 July 2026) name Lumentree Corporation, a California corporation, as the contracting party, and the disclosure policy names the same company. The YC launch lists the company as Epsilla (Summer 2023), per the 17 October check.",
          "harnessrouter.ai was registered on 18 June 2026 and unifiedharnessprotocol.org on 12 August 2026, from the registry RDAP readings of 17 October 2026 (not re-read; RDAP is a JSON service).",
          "No status page. status.harnessrouter.ai has no DNS record (4 November 2026) and no other status page was found.",
          "harnessrouter.ai/.well-known/security.txt answered 404 on 17 October 2026 (not re-read). A disclosure policy is at /legal/security, and SECURITY.md in the repository names GitHub private reporting and contact@harnessrouter.ai.",
          "The changelog is the UHP specification's (protocol/CHANGELOG.md in the repository). HarnessRouter itself has 245 tags in the repository and no product changelog page was found.",
          "The terms (§4.4(c)) forbid scraping or crawling except as allowed by the documentation, an API endpoint, robots.txt or written permission. robots.txt on harnessrouter.ai names ClaudeBot, Claude-User and Claude-SearchBot and allows all paths, and unifiedharnessprotocol.org allows all paths (4 November 2026)."
        ],
        "score": 67
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/harnessrouter.json",
      "live": {
        "slug": "harnessrouter",
        "probe": {
          "target": "https://api.harnessrouter.ai",
          "method": "get",
          "lastAt": "2026-11-07T18:20:29.556272565Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 313,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 291,
          "p95ms24h": 400,
          "samples24h": 239,
          "samples30d": 5145,
          "days": [
            {
              "date": "2026-10-17",
              "probes": 21,
              "ok": 21
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "HarnessRouter/harnessrouter",
            "version": "v0.38.2",
            "released": "2026-11-04",
            "seenAt": "2026-11-06T23:32:20.439259022Z"
          }
        ],
        "githubStars": 4262,
        "securityTxt": {
          "url": "https://harnessrouter.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:32.980927731Z"
        },
        "llmsTxt": {
          "url": "https://harnessrouter.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:40.598398049Z"
        },
        "domain": {
          "domain": "harnessrouter.ai",
          "registered": "2026-06-18",
          "source": "https://rdap.identitydigital.services/rdap/domain/harnessrouter.ai",
          "checkedAt": "2026-11-01T14:17:32.25734582Z"
        },
        "pages": [
          {
            "url": "https://unifiedharnessprotocol.org/changelog",
            "kind": "deprecations",
            "status": 304,
            "checkedAt": "2026-11-07T14:22:52.813950452Z",
            "changedAt": "2026-11-04T08:35:29.196603298Z",
            "fingerprint": "df248ace8f95"
          },
          {
            "url": "https://harnessrouter.ai/pricing.md",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:10:52.413474371Z",
            "changedAt": "2026-10-18T23:31:33.798956939Z",
            "fingerprint": "b31b753df12b"
          },
          {
            "url": "https://harnessrouter.ai/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:10:48.041658297Z",
            "changedAt": "2026-11-03T07:51:05.619736871Z",
            "fingerprint": "3de312eb4d16"
          },
          {
            "url": "https://harnessrouter.ai/legal/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:10:50.353093961Z",
            "changedAt": "2026-11-03T07:51:07.897150705Z",
            "fingerprint": "d25dce7ee92b"
          }
        ],
        "github": {
          "repo": "harnessrouter/harnessrouter",
          "checkedAt": "2026-11-02T08:53:53.843359717Z",
          "stars": 3860,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-11-02T02:10:02Z",
          "openIssues": 16,
          "openPRs": 5,
          "issuesOpened90d": 85,
          "issuesClosed90d": 69,
          "prsMerged90d": 479,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 50,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-11-01T10:11:08Z"
          },
          "advisories": [
            {
              "ghsa": "GHSA-59mq-hx4p-fw48",
              "severity": "medium",
              "published": "2026-10-08T04:42:01Z"
            },
            {
              "ghsa": "GHSA-c5g7-c47h-f6c3",
              "severity": "medium",
              "published": "2026-10-08T01:58:14Z"
            },
            {
              "ghsa": "GHSA-qrr8-m92f-7vfp",
              "severity": "high",
              "published": "2026-10-07T19:55:26Z"
            },
            {
              "ghsa": "GHSA-mw9j-m5jf-5r56",
              "severity": "high",
              "published": "2026-10-07T19:24:34Z"
            },
            {
              "ghsa": "GHSA-7pwj-vv9r-rh2m",
              "severity": "medium",
              "published": "2026-10-07T07:13:59Z"
            },
            {
              "ghsa": "GHSA-rmh9-whjx-gfrc",
              "severity": "medium",
              "published": "2026-10-07T07:13:58Z"
            },
            {
              "ghsa": "GHSA-4386-3vpq-3xhx",
              "severity": "high",
              "published": "2026-10-06T21:59:22Z"
            },
            {
              "ghsa": "GHSA-p6cq-54cg-8mpv",
              "severity": "critical",
              "published": "2026-10-06T21:59:21Z"
            },
            {
              "ghsa": "GHSA-cgf4-38c9-39vr",
              "severity": "high",
              "published": "2026-10-06T21:32:58Z"
            },
            {
              "ghsa": "GHSA-9pjr-97x3-c4wv",
              "severity": "high",
              "published": "2026-10-06T21:32:57Z"
            },
            {
              "ghsa": "GHSA-5hfm-crcm-5vh7",
              "severity": "high",
              "published": "2026-10-06T20:00:17Z"
            }
          ],
          "replies": {
            "sampled": 25,
            "unanswered": 6,
            "medianDays": 0.9
          }
        },
        "updatedAt": "2026-11-07T18:20:29.556272565Z"
      }
    },
    "edges": [
      {
        "by": 35,
        "category": "payments",
        "leads": "emdash",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 60,
          "b": 25
        }
      },
      {
        "by": 28,
        "category": "schema",
        "leads": "harnessrouter",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Harness reading. Docs site and a workspace server package (55).",
          "b": "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."
        },
        "scores": {
          "a": 55,
          "b": 83
        }
      },
      {
        "by": 22,
        "category": "security",
        "leads": "harnessrouter",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 38,
          "b": 60
        }
      },
      {
        "by": 20,
        "category": "reliability",
        "leads": "emdash",
        "name": "Reliability",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 55,
          "b": 35
        }
      },
      {
        "by": 19,
        "category": "transparency",
        "leads": "harnessrouter",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "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.",
          "b": "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."
        },
        "scores": {
          "a": 54,
          "b": 73
        }
      },
      {
        "by": 18,
        "category": "ergonomics",
        "leads": "harnessrouter",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "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).",
          "b": "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."
        },
        "scores": {
          "a": 55,
          "b": 73
        }
      }
    ],
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "General Action, Inc.",
        "b": "HarnessRouter (Lumentree Corporation)",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "https://api.harnessrouter.ai",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "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.",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "0",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-11-06",
        "b": "2026-11-03",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-07-30",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "yes, with an opt-out",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "4.1k stars",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2.5/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "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 \u0026 documentation, agent ergonomics, security \u0026 auth and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Emdash or HarnessRouter?"
      },
      {
        "answer": "Yes. Emdash is open source (Apache-2.0). HarnessRouter is open source (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.).",
        "question": "Are Emdash and HarnessRouter open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 55 against 35",
          "Payments \u0026 pricing, 60 against 25"
        ],
        "also": [
          "No key needed to call it",
          "No incidents deducted, where HarnessRouter loses 11 points for them"
        ],
        "goodFor": "Developers who want parallel agents in worktrees, fed from their issue tracker, locally or over SSH.",
        "slug": "emdash",
        "watchFor": "Telemetry on unless turned off in Settings or with TELEMETRY_ENABLED=false"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 83 against 55",
          "Agent ergonomics, 73 against 55",
          "Security \u0026 auth, 60 against 38",
          "Transparency \u0026 trust, 73 against 54"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "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.",
        "slug": "harnessrouter",
        "watchFor": "No status page found (status.harnessrouter.ai has no DNS record), and the terms give no service level without a signed Order Form"
      }
    ],
    "history": {
      "emdash": null,
      "harnessrouter": [
        {
          "causes": [
            "correction",
            "event"
          ],
          "date": "2026-11-04",
          "delta": -5.6,
          "from": 53.3,
          "fromGrade": "D",
          "to": 47.7,
          "toGrade": "D"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-30",
          "delta": -0.1,
          "from": 53.4,
          "fromGrade": "D",
          "to": 53.3,
          "toGrade": "D"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.2,
          "from": 53.2,
          "fromGrade": "D",
          "to": 53.4,
          "toGrade": "D"
        }
      ]
    },
    "job": {
      "capability": "agent.harness",
      "name": "Agent harnesses"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agent-zero-vs-emdash.json",
        "title": "Agent Zero vs Emdash",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agent-zero-vs-harnessrouter.json",
        "title": "Agent Zero vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-emdash.json",
        "title": "Aider vs Emdash",
        "url": "https://www.anchorterminal.com/compare/aider-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-harnessrouter.json",
        "title": "Aider vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/aider-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amp-vs-emdash.json",
        "title": "Amp vs Emdash",
        "url": "https://www.anchorterminal.com/compare/amp-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amp-vs-harnessrouter.json",
        "title": "Amp vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/amp-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antigravity-cli-vs-emdash.json",
        "title": "Antigravity CLI vs Emdash",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antigravity-cli-vs-harnessrouter.json",
        "title": "Antigravity CLI vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-emdash.json",
        "title": "Auggie CLI vs Emdash",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-harnessrouter.json",
        "title": "Auggie CLI vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/axlr-vs-emdash.json",
        "title": "AXLR vs Emdash",
        "url": "https://www.anchorterminal.com/compare/axlr-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/axlr-vs-harnessrouter.json",
        "title": "AXLR vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/axlr-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-emdash.json",
        "title": "Claude Code vs Emdash",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-harnessrouter.json",
        "title": "Claude Code vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cline-vs-emdash.json",
        "title": "Cline vs Emdash",
        "url": "https://www.anchorterminal.com/compare/cline-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cline-vs-harnessrouter.json",
        "title": "Cline vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/cline-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/conductor-vs-emdash.json",
        "title": "Conductor vs Emdash",
        "url": "https://www.anchorterminal.com/compare/conductor-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/conductor-vs-harnessrouter.json",
        "title": "Conductor vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/conductor-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-emdash.json",
        "title": "Crush vs Emdash",
        "url": "https://www.anchorterminal.com/compare/crush-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-harnessrouter.json",
        "title": "Crush vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/crush-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-emdash.json",
        "title": "Cursor CLI vs Emdash",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-harnessrouter.json",
        "title": "Cursor CLI vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-emdash.json",
        "title": "DeepSeek Harness (dsh) vs Emdash",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-harnessrouter.json",
        "title": "DeepSeek Harness (dsh) vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-emdash.json",
        "title": "dsh-superagent (DeepSeek) vs Emdash",
        "url": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-harnessrouter.json",
        "title": "dsh-superagent (DeepSeek) vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/deepseek-superagent-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/devin-vs-emdash.json",
        "title": "Devin vs Emdash",
        "url": "https://www.anchorterminal.com/compare/devin-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/devin-vs-harnessrouter.json",
        "title": "Devin vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/devin-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-emdash.json",
        "title": "Droid CLI vs Emdash",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-harnessrouter.json",
        "title": "Droid CLI vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-emdash.json",
        "title": "Pi vs Emdash",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter.json",
        "title": "Pi vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-gemini-cli.json",
        "title": "Emdash vs Gemini CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-gemini-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-github-copilot-cli.json",
        "title": "Emdash vs GitHub Copilot CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-github-copilot-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-goose.json",
        "title": "Emdash vs goose",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-goose"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-harness2.json",
        "title": "Emdash vs Harness²",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-harness2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-jules.json",
        "title": "Emdash vs Jules",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-junie.json",
        "title": "Emdash vs Junie CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-junie"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-kilo-code-cli.json",
        "title": "Emdash vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-kimi-code-cli.json",
        "title": "Emdash vs Kimi Code CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-kimi-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-kiro-cli.json",
        "title": "Emdash vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-letta.json",
        "title": "Emdash vs Letta",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-mini-swe-agent.json",
        "title": "Emdash vs mini-swe-agent",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-mini-swe-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-minimax-code.json",
        "title": "Emdash vs MiniMax Code",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-minimax-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-mistral-vibe-cli.json",
        "title": "Emdash vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-muse-code.json",
        "title": "Emdash vs Muse Code",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-muse-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-openai-agents-api.json",
        "title": "Emdash vs OpenAI Agents API",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-openai-agents-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-openai-codex.json",
        "title": "Emdash vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-openai-codex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-opencode.json",
        "title": "Emdash vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-openhands.json",
        "title": "Emdash vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-openmausbot.json",
        "title": "Emdash vs OpenMausBot",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-openmausbot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-orca.json",
        "title": "Emdash vs Orca",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-orca"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-paseo.json",
        "title": "Emdash vs Paseo",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-paseo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-prime-agent.json",
        "title": "Emdash vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-qoder-cli.json",
        "title": "Emdash vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-qwen-code.json",
        "title": "Emdash vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-reflection-mirror.json",
        "title": "Emdash vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-rovo-dev-cli.json",
        "title": "Emdash vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-sculptor.json",
        "title": "Emdash vs Sculptor",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-sculptor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-t3-code.json",
        "title": "Emdash vs T3 Code",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-t3-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-traycer.json",
        "title": "Emdash vs Traycer",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-traycer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-unstoppable.json",
        "title": "Emdash vs Unstoppable",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-unstoppable"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-verdent.json",
        "title": "Emdash vs Verdent",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-verdent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-vibe-trading.json",
        "title": "Emdash vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-warp.json",
        "title": "Emdash vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-cli-vs-harnessrouter.json",
        "title": "Gemini CLI vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-harnessrouter.json",
        "title": "GitHub Copilot CLI vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-harnessrouter.json",
        "title": "goose vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/goose-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-harnessrouter.json",
        "title": "Harness² vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-jules.json",
        "title": "HarnessRouter vs Jules",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-junie.json",
        "title": "HarnessRouter vs Junie CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-junie"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-kilo-code-cli.json",
        "title": "HarnessRouter vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-kimi-code-cli.json",
        "title": "HarnessRouter vs Kimi Code CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-kimi-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-kiro-cli.json",
        "title": "HarnessRouter vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-letta.json",
        "title": "HarnessRouter vs Letta",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-letta"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-mini-swe-agent.json",
        "title": "HarnessRouter vs mini-swe-agent",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-mini-swe-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-minimax-code.json",
        "title": "HarnessRouter vs MiniMax Code",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-minimax-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-mistral-vibe-cli.json",
        "title": "HarnessRouter vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-muse-code.json",
        "title": "HarnessRouter vs Muse Code",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-muse-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-openai-agents-api.json",
        "title": "HarnessRouter vs OpenAI Agents API",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-openai-agents-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-openai-codex.json",
        "title": "HarnessRouter vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-openai-codex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-opencode.json",
        "title": "HarnessRouter vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-openhands.json",
        "title": "HarnessRouter vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-openmausbot.json",
        "title": "HarnessRouter vs OpenMausBot",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-openmausbot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-orca.json",
        "title": "HarnessRouter vs Orca",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-orca"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-paseo.json",
        "title": "HarnessRouter vs Paseo",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-paseo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-prime-agent.json",
        "title": "HarnessRouter vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-qoder-cli.json",
        "title": "HarnessRouter vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-qwen-code.json",
        "title": "HarnessRouter vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-reflection-mirror.json",
        "title": "HarnessRouter vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-rovo-dev-cli.json",
        "title": "HarnessRouter vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-sculptor.json",
        "title": "HarnessRouter vs Sculptor",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-sculptor"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-t3-code.json",
        "title": "HarnessRouter vs T3 Code",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-t3-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-traycer.json",
        "title": "HarnessRouter vs Traycer",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-traycer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-unstoppable.json",
        "title": "HarnessRouter vs Unstoppable",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-unstoppable"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-verdent.json",
        "title": "HarnessRouter vs Verdent",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-verdent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-vibe-trading.json",
        "title": "HarnessRouter vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-warp.json",
        "title": "HarnessRouter vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/clawboo-vs-emdash.json",
        "title": "Clawboo vs Emdash",
        "url": "https://www.anchorterminal.com/compare/clawboo-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/clawboo-vs-harnessrouter.json",
        "title": "Clawboo vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/clawboo-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-emdash.json",
        "title": "CLI Manager vs Emdash",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-emdash"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-harnessrouter.json",
        "title": "CLI Manager vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-harness-autonomous.json",
        "title": "Emdash vs Harness",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-harness-autonomous"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-paperclip.json",
        "title": "Emdash vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-paperclip"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emdash-vs-parallax-agents.json",
        "title": "Emdash vs Parallax",
        "url": "https://www.anchorterminal.com/compare/emdash-vs-parallax-agents"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-autonomous-vs-harnessrouter.json",
        "title": "Harness vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/harness-autonomous-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-paperclip.json",
        "title": "HarnessRouter vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-paperclip"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-parallax-agents.json",
        "title": "HarnessRouter vs Parallax",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-parallax-agents"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 20,
        "edge": "emdash",
        "emdash": 55,
        "harnessrouter": 35,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 28,
        "edge": "harnessrouter",
        "emdash": 55,
        "harnessrouter": 83,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 18,
        "edge": "harnessrouter",
        "emdash": 55,
        "harnessrouter": 73,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 22,
        "edge": "harnessrouter",
        "emdash": 38,
        "harnessrouter": 60,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 35,
        "edge": "emdash",
        "emdash": 60,
        "harnessrouter": 25,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "edge": "harnessrouter",
        "emdash": 70,
        "harnessrouter": 72,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 19,
        "edge": "harnessrouter",
        "emdash": 54,
        "harnessrouter": 73,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "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 \u0026 documentation, agent ergonomics, security \u0026 auth and transparency \u0026 trust. Both do agent harnesses.",
    "tasks": null,
    "tutorials": [],
    "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.",
      "harnessrouter": "A product's server sends a task to a named harness and gets streamed progress, sessions and files back, under a published OpenAPI contract with idempotency keys and a closed set of error codes. No status page or request rate limit was found, running a task needs card-funded credit, and access-control and credential flaws were fixed in October and November 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/emdash-vs-harnessrouter",
    "json": "https://www.anchorterminal.com/compare/emdash-vs-harnessrouter.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/emdash-vs-harnessrouter.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/emdash-vs-harnessrouter.min.md"
  },
  "markdown": "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 \u0026 documentation, agent ergonomics, security \u0026 auth and transparency \u0026 trust. Both do agent harnesses.\n\n- Emdash: grade D, 53.9/100, rank #927 of 1486. Markdown https://www.anchorterminal.com/tools/emdash.md · JSON https://www.anchorterminal.com/api/v1/tools/emdash.json\n- HarnessRouter: grade D, 47.7/100, rank #1131 of 1486. Markdown https://www.anchorterminal.com/tools/harnessrouter.md · JSON https://www.anchorterminal.com/api/v1/tools/harnessrouter.json\n- Best agent harnesses and coding agents: https://www.anchorterminal.com/best/agent-harnesses/index.md\n- All 1500 harnesses comparisons: https://www.anchorterminal.com/compare/agent-harnesses/index.md\n\n## Which one, for what\n\n### Emdash (D)\n\nGood for: Developers who want parallel agents in worktrees, fed from their issue tracker, locally or over SSH.\n\nAhead on:\n- Reliability, 55 against 35\n- Payments \u0026 pricing, 60 against 25\n\nAlso in its favour:\n- No key needed to call it\n- No incidents deducted, where HarnessRouter loses 11 points for them\n\nWatch for: Telemetry on unless turned off in Settings or with TELEMETRY_ENABLED=false\n\n### HarnessRouter (D)\n\nGood 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.\n\nAhead on:\n- Schema \u0026 documentation, 83 against 55\n- Agent ergonomics, 73 against 55\n- Security \u0026 auth, 60 against 38\n- Transparency \u0026 trust, 73 against 54\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: No status page found (status.harnessrouter.ai has no DNS record), and the terms give no service level without a signed Order Form\n\n\n## Why the edge\n\n### Payments \u0026 pricing: Emdash +35\n\n- 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.\n- 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.\n\n### Schema \u0026 documentation: HarnessRouter +28\n\n- Emdash (55): Harness reading. Docs site and a workspace server package (55).\n- 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.\n\n### Security \u0026 auth: HarnessRouter +22\n\n- 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.\n- 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.\n\n### Reliability: Emdash +20\n\n- 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.\n- 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.\n\n### Transparency \u0026 trust: HarnessRouter +19\n\n- 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.\n- 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.\n\n### Agent ergonomics: HarnessRouter +18\n\n- 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).\n- 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.\n\n## Score by category\n\n| Category | Weight | Emdash | HarnessRouter | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 55 | 35 | Emdash +20 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 55 | 83 | HarnessRouter +28 |\n| Agent ergonomics | 13% (16.2 this run) | 55 | 73 | HarnessRouter +18 |\n| Security \u0026 auth | 14% (17.5 this run) | 38 | 60 | HarnessRouter +22 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 25 | Emdash +35 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 70 | 72 | HarnessRouter +2 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 54 | 73 | HarnessRouter +19 |\n| Negative events | ≤15 | 0 | -11 | |\n| **Total** | | **53.9 · D** | **47.7 · D** | |\n\n## Facts side by side\n\n| Fact | Emdash | HarnessRouter |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | General Action, Inc. | HarnessRouter (Lumentree Corporation) |\n| Hosted endpoint | no (local only) | `https://api.harnessrouter.ai` |\n| Transports |  | HTTP |\n| Auth | None | API key |\n| Pricing | Free | Pay per use |\n| x402 | no | no |\n| 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. |\n| Tools exposed | none | 0 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-11-06 | 2026-11-03 |\n| Terms last updated | no document linked | no date given |\n| Privacy policy last updated | no document linked | 2026-07-30 |\n| Customer content may train models | not read yet | yes, with an opt-out |\n| Terms restrict automated access | not read yet | yes |\n| Terms restrict benchmarking | not read yet | not found in the text |\n| Terms or service can change without notice | not read yet | not found in the text |\n| Arbitration or class-action waiver | not read yet | yes |\n| Popularity | none | 4.1k stars |\n| Agent reviews | none | 2.5/5 (4) |\n\n## How the scores have moved\n\n### Emdash\n\nNo score change since it was listed.\n\n### HarnessRouter\n\n- -5.6 on 4 November 2026: correction, negative event\n- -0.1 on 30 October 2026: checklist\n- +0.2 on 27 October 2026: checklist\n\n## Verdicts\n\n**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.\n\n**HarnessRouter.** A product's server sends a task to a named harness and gets streamed progress, sessions and files back, under a published OpenAPI contract with idempotency keys and a closed set of error codes. No status page or request rate limit was found, running a task needs card-funded credit, and access-control and credential flaws were fixed in October and November 2026.\n\n## Before you call either\n\n### Emdash\n\n1. Launch with TELEMETRY_ENABLED=false if you don't want telemetry\n2. Use the SSH mode to keep agents on a remote machine\n\n### HarnessRouter\n\n1. Name the harness yourself. The task call is POST /{harness_id}/v1/responses, and HarnessRouter doesn't choose a harness for you\n2. Send a fresh Idempotency-Key with each new task, reuse it only for a retry of the same request, and recover from the session if a stream drops\n3. Call cancel to stop work. Closing the SSE connection leaves the agent running and billing\n4. Keep the Workspace API key on the server. The docs forbid calling the API from a browser with it\n5. Check each tool's enforcement in GET /v1/bases. On bases marked instruction, disabled_tools is a request to the model, not a block\n\n## Questions\n\n### Which is better for AI agents, Emdash or HarnessRouter?\n\nEmdash 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 \u0026 documentation, agent ergonomics, security \u0026 auth and transparency \u0026 trust.\n\n### Are Emdash and HarnessRouter open source?\n\nYes. Emdash is open source (Apache-2.0). HarnessRouter is open source (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.).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/emdash-vs-harnessrouter.json, and with the fewest tokens: https://www.anchorterminal.com/compare/emdash-vs-harnessrouter.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"emdash\", \"b\": \"harnessrouter\"}`. From a terminal: `anchor compare emdash harnessrouter`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/emdash.json and https://www.anchorterminal.com/api/v1/tools/harnessrouter.json\n\n## Other comparisons with Emdash or HarnessRouter\n\n- [Agent Zero vs Emdash](https://www.anchorterminal.com/compare/agent-zero-vs-emdash.md)\n- [Agent Zero vs HarnessRouter](https://www.anchorterminal.com/compare/agent-zero-vs-harnessrouter.md)\n- [Aider vs Emdash](https://www.anchorterminal.com/compare/aider-vs-emdash.md)\n- [Aider vs HarnessRouter](https://www.anchorterminal.com/compare/aider-vs-harnessrouter.md)\n- [Amp vs Emdash](https://www.anchorterminal.com/compare/amp-vs-emdash.md)\n- [Amp vs HarnessRouter](https://www.anchorterminal.com/compare/amp-vs-harnessrouter.md)\n- [Antigravity CLI vs Emdash](https://www.anchorterminal.com/compare/antigravity-cli-vs-emdash.md)\n- [Antigravity CLI vs HarnessRouter](https://www.anchorterminal.com/compare/antigravity-cli-vs-harnessrouter.md)\n- [Auggie CLI vs Emdash](https://www.anchorterminal.com/compare/auggie-vs-emdash.md)\n- [Auggie CLI vs HarnessRouter](https://www.anchorterminal.com/compare/auggie-vs-harnessrouter.md)\n- [AXLR vs Emdash](https://www.anchorterminal.com/compare/axlr-vs-emdash.md)\n- [AXLR vs HarnessRouter](https://www.anchorterminal.com/compare/axlr-vs-harnessrouter.md)\n- [Claude Code vs Emdash](https://www.anchorterminal.com/compare/claude-code-vs-emdash.md)\n- [Claude Code vs HarnessRouter](https://www.anchorterminal.com/compare/claude-code-vs-harnessrouter.md)\n- [Cline vs Emdash](https://www.anchorterminal.com/compare/cline-vs-emdash.md)\n- [Cline vs HarnessRouter](https://www.anchorterminal.com/compare/cline-vs-harnessrouter.md)\n- [Conductor vs Emdash](https://www.anchorterminal.com/compare/conductor-vs-emdash.md)\n- [Conductor vs HarnessRouter](https://www.anchorterminal.com/compare/conductor-vs-harnessrouter.md)\n- [Crush vs Emdash](https://www.anchorterminal.com/compare/crush-vs-emdash.md)\n- [Crush vs HarnessRouter](https://www.anchorterminal.com/compare/crush-vs-harnessrouter.md)\n- [Cursor CLI vs Emdash](https://www.anchorterminal.com/compare/cursor-cli-vs-emdash.md)\n- [Cursor CLI vs HarnessRouter](https://www.anchorterminal.com/compare/cursor-cli-vs-harnessrouter.md)\n- [DeepSeek Harness (dsh) vs Emdash](https://www.anchorterminal.com/compare/deepseek-harness-vs-emdash.md)\n- [DeepSeek Harness (dsh) vs HarnessRouter](https://www.anchorterminal.com/compare/deepseek-harness-vs-harnessrouter.md)\n- [dsh-superagent (DeepSeek) vs Emdash](https://www.anchorterminal.com/compare/deepseek-superagent-vs-emdash.md)\n- [dsh-superagent (DeepSeek) vs HarnessRouter](https://www.anchorterminal.com/compare/deepseek-superagent-vs-harnessrouter.md)\n- [Devin vs Emdash](https://www.anchorterminal.com/compare/devin-vs-emdash.md)\n- [Devin vs HarnessRouter](https://www.anchorterminal.com/compare/devin-vs-harnessrouter.md)\n- [Droid CLI vs Emdash](https://www.anchorterminal.com/compare/droid-cli-vs-emdash.md)\n- [Droid CLI vs HarnessRouter](https://www.anchorterminal.com/compare/droid-cli-vs-harnessrouter.md)\n- [Pi vs Emdash](https://www.anchorterminal.com/compare/earendil-pi-vs-emdash.md)\n- [Pi vs HarnessRouter](https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter.md)\n- [Emdash vs Gemini CLI](https://www.anchorterminal.com/compare/emdash-vs-gemini-cli.md)\n- [Emdash vs GitHub Copilot CLI](https://www.anchorterminal.com/compare/emdash-vs-github-copilot-cli.md)\n- [Emdash vs goose](https://www.anchorterminal.com/compare/emdash-vs-goose.md)\n- [Emdash vs Harness²](https://www.anchorterminal.com/compare/emdash-vs-harness2.md)\n- [Emdash vs Jules](https://www.anchorterminal.com/compare/emdash-vs-jules.md)\n- [Emdash vs Junie CLI](https://www.anchorterminal.com/compare/emdash-vs-junie.md)\n- [Emdash vs Kilo Code CLI](https://www.anchorterminal.com/compare/emdash-vs-kilo-code-cli.md)\n- [Emdash vs Kimi Code CLI](https://www.anchorterminal.com/compare/emdash-vs-kimi-code-cli.md)\n- [Emdash vs Kiro CLI](https://www.anchorterminal.com/compare/emdash-vs-kiro-cli.md)\n- [Emdash vs Letta](https://www.anchorterminal.com/compare/emdash-vs-letta.md)\n- [Emdash vs mini-swe-agent](https://www.anchorterminal.com/compare/emdash-vs-mini-swe-agent.md)\n- [Emdash vs MiniMax Code](https://www.anchorterminal.com/compare/emdash-vs-minimax-code.md)\n- [Emdash vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/emdash-vs-mistral-vibe-cli.md)\n- [Emdash vs Muse Code](https://www.anchorterminal.com/compare/emdash-vs-muse-code.md)\n- [Emdash vs OpenAI Agents API](https://www.anchorterminal.com/compare/emdash-vs-openai-agents-api.md)\n- [Emdash vs OpenAI Codex](https://www.anchorterminal.com/compare/emdash-vs-openai-codex.md)\n- [Emdash vs OpenCode](https://www.anchorterminal.com/compare/emdash-vs-opencode.md)\n- [Emdash vs OpenHands](https://www.anchorterminal.com/compare/emdash-vs-openhands.md)\n- [Emdash vs OpenMausBot](https://www.anchorterminal.com/compare/emdash-vs-openmausbot.md)\n- [Emdash vs Orca](https://www.anchorterminal.com/compare/emdash-vs-orca.md)\n- [Emdash vs Paseo](https://www.anchorterminal.com/compare/emdash-vs-paseo.md)\n- [Emdash vs Prime Agent](https://www.anchorterminal.com/compare/emdash-vs-prime-agent.md)\n- [Emdash vs Qoder CLI](https://www.anchorterminal.com/compare/emdash-vs-qoder-cli.md)\n- [Emdash vs Qwen Code](https://www.anchorterminal.com/compare/emdash-vs-qwen-code.md)\n- [Emdash vs Mirror CLI](https://www.anchorterminal.com/compare/emdash-vs-reflection-mirror.md)\n- [Emdash vs Rovo Dev CLI](https://www.anchorterminal.com/compare/emdash-vs-rovo-dev-cli.md)\n- [Emdash vs Sculptor](https://www.anchorterminal.com/compare/emdash-vs-sculptor.md)\n- [Emdash vs T3 Code](https://www.anchorterminal.com/compare/emdash-vs-t3-code.md)\n- [Emdash vs Traycer](https://www.anchorterminal.com/compare/emdash-vs-traycer.md)\n- [Emdash vs Unstoppable](https://www.anchorterminal.com/compare/emdash-vs-unstoppable.md)\n- [Emdash vs Verdent](https://www.anchorterminal.com/compare/emdash-vs-verdent.md)\n- [Emdash vs Vibe-Trading](https://www.anchorterminal.com/compare/emdash-vs-vibe-trading.md)\n- [Emdash vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/emdash-vs-warp.md)\n- [Gemini CLI vs HarnessRouter](https://www.anchorterminal.com/compare/gemini-cli-vs-harnessrouter.md)\n- [GitHub Copilot CLI vs HarnessRouter](https://www.anchorterminal.com/compare/github-copilot-cli-vs-harnessrouter.md)\n- [goose vs HarnessRouter](https://www.anchorterminal.com/compare/goose-vs-harnessrouter.md)\n- [Harness² vs HarnessRouter](https://www.anchorterminal.com/compare/harness2-vs-harnessrouter.md)\n- [HarnessRouter vs Jules](https://www.anchorterminal.com/compare/harnessrouter-vs-jules.md)\n- [HarnessRouter vs Junie CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-junie.md)\n- [HarnessRouter vs Kilo Code CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-kilo-code-cli.md)\n- [HarnessRouter vs Kimi Code CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-kimi-code-cli.md)\n- [HarnessRouter vs Kiro CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-kiro-cli.md)\n- [HarnessRouter vs Letta](https://www.anchorterminal.com/compare/harnessrouter-vs-letta.md)\n- [HarnessRouter vs mini-swe-agent](https://www.anchorterminal.com/compare/harnessrouter-vs-mini-swe-agent.md)\n- [HarnessRouter vs MiniMax Code](https://www.anchorterminal.com/compare/harnessrouter-vs-minimax-code.md)\n- [HarnessRouter vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-mistral-vibe-cli.md)\n- [HarnessRouter vs Muse Code](https://www.anchorterminal.com/compare/harnessrouter-vs-muse-code.md)\n- [HarnessRouter vs OpenAI Agents API](https://www.anchorterminal.com/compare/harnessrouter-vs-openai-agents-api.md)\n- [HarnessRouter vs OpenAI Codex](https://www.anchorterminal.com/compare/harnessrouter-vs-openai-codex.md)\n- [HarnessRouter vs OpenCode](https://www.anchorterminal.com/compare/harnessrouter-vs-opencode.md)\n- [HarnessRouter vs OpenHands](https://www.anchorterminal.com/compare/harnessrouter-vs-openhands.md)\n- [HarnessRouter vs OpenMausBot](https://www.anchorterminal.com/compare/harnessrouter-vs-openmausbot.md)\n- [HarnessRouter vs Orca](https://www.anchorterminal.com/compare/harnessrouter-vs-orca.md)\n- [HarnessRouter vs Paseo](https://www.anchorterminal.com/compare/harnessrouter-vs-paseo.md)\n- [HarnessRouter vs Prime Agent](https://www.anchorterminal.com/compare/harnessrouter-vs-prime-agent.md)\n- [HarnessRouter vs Qoder CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-qoder-cli.md)\n- [HarnessRouter vs Qwen Code](https://www.anchorterminal.com/compare/harnessrouter-vs-qwen-code.md)\n- [HarnessRouter vs Mirror CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-reflection-mirror.md)\n- [HarnessRouter vs Rovo Dev CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-rovo-dev-cli.md)\n- [HarnessRouter vs Sculptor](https://www.anchorterminal.com/compare/harnessrouter-vs-sculptor.md)\n- [HarnessRouter vs T3 Code](https://www.anchorterminal.com/compare/harnessrouter-vs-t3-code.md)\n- [HarnessRouter vs Traycer](https://www.anchorterminal.com/compare/harnessrouter-vs-traycer.md)\n- [HarnessRouter vs Unstoppable](https://www.anchorterminal.com/compare/harnessrouter-vs-unstoppable.md)\n- [HarnessRouter vs Verdent](https://www.anchorterminal.com/compare/harnessrouter-vs-verdent.md)\n- [HarnessRouter vs Vibe-Trading](https://www.anchorterminal.com/compare/harnessrouter-vs-vibe-trading.md)\n- [HarnessRouter vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/harnessrouter-vs-warp.md)\n- [Clawboo vs Emdash](https://www.anchorterminal.com/compare/clawboo-vs-emdash.md)\n- [Clawboo vs HarnessRouter](https://www.anchorterminal.com/compare/clawboo-vs-harnessrouter.md)\n- [CLI Manager vs Emdash](https://www.anchorterminal.com/compare/cli-manager-vs-emdash.md)\n- [CLI Manager vs HarnessRouter](https://www.anchorterminal.com/compare/cli-manager-vs-harnessrouter.md)\n- [Emdash vs Harness](https://www.anchorterminal.com/compare/emdash-vs-harness-autonomous.md)\n- [Emdash vs Paperclip](https://www.anchorterminal.com/compare/emdash-vs-paperclip.md)\n- [Emdash vs Parallax](https://www.anchorterminal.com/compare/emdash-vs-parallax-agents.md)\n- [Harness vs HarnessRouter](https://www.anchorterminal.com/compare/harness-autonomous-vs-harnessrouter.md)\n- [HarnessRouter vs Paperclip](https://www.anchorterminal.com/compare/harnessrouter-vs-paperclip.md)\n- [HarnessRouter vs Parallax](https://www.anchorterminal.com/compare/harnessrouter-vs-parallax-agents.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Emdash vs HarnessRouter",
        "url": ""
      }
    ],
    "description": "Emdash scores 53.9 (D) to HarnessRouter's 47.7 (D) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Emdash D 53.9",
      "HarnessRouter D 47.7",
      "scores"
    ],
    "h1": "Emdash vs HarnessRouter",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/emdash-vs-harnessrouter",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Emdash vs HarnessRouter for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/emdash-vs-harnessrouter"
  },
  "tokens": {
    "markdown": 6500,
    "slim": 2780
  },
  "version": 1
}
