{
  "data": {
    "a": {
      "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",
      "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. Running tasks draws on top-up credit ($10 minimum, 5.5 per cent fee) 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-10-17). 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": 3075,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-17"
      },
      "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-10-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 53.2,
        "grade": "D",
        "agentReady": false,
        "rank": 796,
        "ranked": true,
        "rankOf": 1133,
        "categoryRank": 24,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 72,
          "payments": 25,
          "reliability": 35,
          "schema": 83,
          "security": 58,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-17"
        },
        "negative": -5,
        "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"
        ],
        "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 flaws were fixed on 6 and 7 October 2026.",
        "bestFor": "A product team that wants to run Codex, Claude Code, Hermes or 23 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 98-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",
          "26 harnesses listed as available, including Codex, Claude Code, Hermes, OpenCode, goose and Qoder, behind one task contract",
          "202 tagged releases between 15 August and 16 October 2026, and the self-hosted Community Edition runs with no HarnessRouter account"
        ],
        "weaknesses": [
          "No status page found (status.harnessrouter.ai doesn't resolve and /status answers 404), and the terms give no service level without a signed order form",
          "No request rate limit is published. Only concurrency (one task at a time on Free) 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",
          "Privately reported access-control, SSRF and redaction flaws were fixed on 6 and 7 October 2026, one of them found live on the hosted service",
          "The hosted API serves UHP 2026-09-28 while the spec site's current version is 2026-10-04, and the conformance page counts 76 checks against 98 in the suite"
        ],
        "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.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 53.2
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 72,
          "payments": 25,
          "reliability": 35,
          "schema": 83,
          "security": 58,
          "transparency": 78
        },
        "provenanceScore": 65
      },
      "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-10-17",
        "notes": [
          "The terms name Lumentree Corporation, a California corporation at 201 Spear Street, San Francisco, as the contracting party. The YC launch lists the company as Epsilla (Summer 2023), and the maintainer commits from an epsilla.com address.",
          "harnessrouter.ai was registered on 18 June 2026 and unifiedharnessprotocol.org on 12 August 2026 (registry RDAP, checked 2026-10-17).",
          "No status page. status.harnessrouter.ai doesn't resolve and harnessrouter.ai/status answers 404.",
          "harnessrouter.ai/.well-known/security.txt answers 404. 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. HarnessRouter itself has 202 tags in the repository and no product changelog page was found.",
          "The terms forbid scraping or crawling except as allowed by the documentation, an API endpoint, robots.txt or written permission. robots.txt on harnessrouter.ai and unifiedharnessprotocol.org allows all paths."
        ],
        "score": 65
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/harnessrouter.json",
      "live": {
        "slug": "harnessrouter",
        "probe": {
          "target": "https://api.harnessrouter.ai",
          "method": "get",
          "lastAt": "2026-10-18T00:14:42.280344324Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 265,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 275,
          "p95ms24h": 359,
          "samples24h": 24,
          "samples30d": 24,
          "days": [
            {
              "date": "2026-10-17",
              "probes": 21,
              "ok": 21
            },
            {
              "date": "2026-10-18",
              "probes": 3,
              "ok": 3
            }
          ]
        },
        "pages": [
          {
            "url": "https://unifiedharnessprotocol.org/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-17T23:11:55.703224248Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "783aeda2cd75"
          },
          {
            "url": "https://harnessrouter.ai/pricing.md",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-17T23:03:57.613043138Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fa9a36e3c1ac"
          },
          {
            "url": "https://harnessrouter.ai/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-17T23:03:53.558727976Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "af87474c34e0"
          },
          {
            "url": "https://harnessrouter.ai/legal/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-17T23:03:55.591250792Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "501a6366c745"
          }
        ],
        "updatedAt": "2026-10-18T00:14:42.280344324Z"
      }
    },
    "answer": "OpenHands scores 70.8 (BB) on agent readiness against HarnessRouter's 53.2 (D), and leads in 6 of 7 scored categories. HarnessRouter leads on transparency \u0026 trust.",
    "b": {
      "slug": "openhands",
      "name": "OpenHands",
      "vendor": "All Hands AI",
      "vendorUrl": "https://openhands.dev",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Open-source coding agent with a self-hosted web interface, local and remote execution, and scheduled or webhook-driven automation.",
      "url": "https://www.anchorterminal.com/tools/openhands",
      "markdownUrl": "https://www.anchorterminal.com/tools/openhands.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/openhands.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/openhands.json",
      "repo": "https://github.com/OpenHands/OpenHands",
      "license": "MIT (Agent Canvas, SDK, tools and Agent Server). OpenHands Cloud is a hosted service",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@openhands/agent-canvas"
        },
        {
          "registry": "pypi",
          "name": "openhands-sdk"
        },
        {
          "registry": "pypi",
          "name": "openhands-agent-server"
        },
        {
          "registry": "oci",
          "name": "ghcr.io/openhands/agent-canvas"
        }
      ],
      "auth": "mixed",
      "authNotes": "Local installs bind to 127.0.0.1 and inject a session key into the page. Public mode (`--public`) needs `LOCAL_BACKEND_API_KEY`, sent as `X-Session-API-Key` on every API call. Model credentials are your own provider keys or an OpenHands LLM key, and OpenHands Cloud has its own sign-in and API keys.",
      "pricing": "freemium",
      "pricingNotes": "Agent Canvas, the SDK and the Agent Server are free and MIT. OpenHands Cloud has a free Individual plan of 10 conversations a day with your own model key or the OpenHands LLM provider, which the docs say bills model calls at provider rates with no markup. Enterprise (SaaS, or self-hosted in your VPC) is priced by sales.",
      "priceSummary": "Freemium",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the pricing page or the source (checked 2026-10-01).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 89800,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-01"
      },
      "docsUrl": "https://docs.openhands.dev",
      "llmsTxt": "https://docs.openhands.dev/llms.txt",
      "openapi": "https://raw.githubusercontent.com/OpenHands/docs/main/openapi/agent-sdk.json",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "open-source",
        "local",
        "self-hosted",
        "hosted",
        "freemium",
        "python",
        "typescript",
        "docker",
        "openapi",
        "llms-txt",
        "telemetry-default-on",
        "beta"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.8,
        "grade": "BB",
        "agentReady": true,
        "rank": 152,
        "ranked": true,
        "rankOf": 1133,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 78,
          "maintenance": 85,
          "payments": 60,
          "reliability": 83,
          "schema": 87,
          "security": 66,
          "transparency": 67
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": -5,
        "negativeNotes": [
          "Current behaviour, checked 2026-10-02. Agent Canvas sends a `canvas_install` event with platform, user agent, referrer and origin to PostHog through OpenHands' proxy at z.openhands.dev on first use, before the consent prompt, opting the client in for that one event. The source comment says the proxy is there to get past ad blockers, the consent prompt's box is ticked by default, and no user-facing doc mentions the early event. Undisclosed telemetry, -3. https://github.com/OpenHands/OpenHands/blob/main/src/services/telemetry.ts",
          "2026-03-23. GHSA-7h8w-hj9j-8rjw (CVE-2026-33718, 7.6 in the advisory, 9.9 at NVD), command injection through the `path` parameter of the git diff endpoint let an authenticated user run commands in the agent sandbox. Fixed in 1.5.0 and published, a little over six months old, -1. https://github.com/OpenHands/OpenHands/security/advisories/GHSA-7h8w-hj9j-8rjw",
          "2026-08-06. CVE-2026-19022 (6.3), command injection in `initialize_repo` in the pull request resolver of OpenHands 0.62.0 and earlier, the V0 line the V1 rewrite replaced. No GitHub advisory found, -1. https://nvd.nist.gov/vuln/detail/CVE-2026-19022"
        ],
        "verdict": "A Docker container per conversation with `OH_CONVERSATION_RUNTIME=docker`, each with its own Agent Server. Confirmation mode is off by default in Agent Canvas, and the npm install gives the agent the host's whole filesystem.",
        "bestFor": "Teams that want to self-host a coding agent with a web UI, per-conversation Docker sandboxes and scheduled or webhook automations, or embed the agent through a Python SDK and REST API.",
        "strengths": [
          "A Docker container per conversation with `OH_CONVERSATION_RUNTIME=docker`, each with its own Agent Server",
          "Typed Python SDK and an Agent Server REST API with an OpenAPI 3.1 spec, plus a TypeScript client",
          "Confirmation policies (always, never, at or above a risk level) with LLM, Invariant and GraySwan risk analysers",
          "Any model through LiteLLM, local ones included, and MCP over stdio, SSE and streamable HTTP with OAuth",
          "21 Agent Canvas releases between 24 July and 25 September 2026, with CI passing on main"
        ],
        "weaknesses": [
          "Confirmation mode is off by default in Agent Canvas, and the npm install gives the agent the host's whole filesystem",
          "One anonymous install event goes to PostHog before the consent prompt, whose opt-in box is pre-ticked",
          "The terminal CLI has been unmaintained since 11 August 2026 and the Docker-based local GUI is deprecated, yet both fill much of the docs",
          "Agent Canvas carries a beta badge, and its CHANGELOG.md stops at 1.0.0-alpha.2",
          "The privacy policy (3 September 2025) allows training on Cloud content and gives no retention period"
        ],
        "agentNotes": [
          "Set `AGENT_CANVAS_DISABLE_TELEMETRY=1` and `DO_NOT_TRACK=1` before the first start",
          "Start Canvas with `OH_CONVERSATION_RUNTIME=docker` or use the Docker image. The npm install runs the agent on the host",
          "Turn on confirmation mode with a risk threshold. Canvas starts with it off",
          "Use the SDK or the Agent Server API for headless runs. The `openhands --headless` CLI is no longer maintained",
          "Set `filter_tools_regex` on the agent to keep unneeded MCP tool definitions out of the context"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70.8
          }
        ],
        "editorialScores": {
          "ergonomics": 78,
          "maintenance": 85,
          "payments": 60,
          "reliability": 83,
          "schema": 87,
          "security": 66,
          "transparency": 67
        },
        "provenanceScore": 66
      },
      "connect": {
        "install": "npm install -g @openhands/agent-canvas   # Node 24+ and uv; or: pip install openhands-sdk openhands-tools",
        "headless": {
          "env": {
            "DO_NOT_TRACK": "1",
            "LLM_API_KEY": "\u003ckey\u003e",
            "LLM_MODEL": "\u003cprovider/model\u003e"
          },
          "sdk": "pip install openhands-sdk openhands-tools",
          "server": "OH_CONVERSATION_RUNTIME=docker AGENT_CANVAS_DISABLE_TELEMETRY=1 agent-canvas --backend-only"
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/openhands"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "All Hands AI",
        "domain": "openhands.dev",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "https://openhands.dev/privacy",
        "statusPage": "",
        "changelog": "https://github.com/OpenHands/OpenHands/releases",
        "securityTxt": "valid",
        "checked": "2026-10-01",
        "notes": [
          "The privacy policy (effective 3 September 2025) names All Hands AI, 24 Oak Street, Unit 2, Cambridge, MA 02139. We found no terms of service link on the pricing or privacy pages.",
          "openhands.dev/.well-known/security.txt lists security@openhands.dev and a responsible-disclosure policy, and expires on 2026-10-28.",
          "The SDK's LLM proxy still runs on llm-proxy.app.all-hands.dev, the company's older domain.",
          "We didn't check for a status page or the domain's registration date."
        ],
        "score": 66
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/openhands.json",
      "live": {
        "slug": "openhands",
        "versions": [
          {
            "registry": "github",
            "name": "OpenHands/OpenHands",
            "version": "v1.27.1",
            "released": "2026-10-12",
            "seenAt": "2026-10-17T02:07:38.356245212Z"
          },
          {
            "registry": "npm",
            "name": "@openhands/agent-canvas",
            "version": "1.27.1",
            "seenAt": "2026-10-17T02:07:35.350296703Z"
          },
          {
            "registry": "pypi",
            "name": "openhands-agent-server",
            "version": "1.55.1",
            "released": "2026-10-16",
            "seenAt": "2026-10-17T02:07:36.900053297Z"
          },
          {
            "registry": "pypi",
            "name": "openhands-sdk",
            "version": "1.55.1",
            "released": "2026-10-16",
            "seenAt": "2026-10-17T02:07:36.344402295Z"
          }
        ],
        "githubStars": 91079,
        "npmWeekly": 4605,
        "pypiWeekly": 1031673,
        "securityTxt": {
          "url": "https://openhands.dev/.well-known/security.txt",
          "state": "valid",
          "expires": "2026-10-28T17:00:00.000Z",
          "checkedAt": "2026-10-17T15:52:35.625164088Z"
        },
        "llmsTxt": {
          "url": "https://docs.openhands.dev/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-17T14:22:52.793635397Z"
        },
        "domain": {
          "domain": "openhands.dev",
          "registered": "2025-07-23",
          "source": "https://pubapi.registry.google/rdap/domain/openhands.dev",
          "checkedAt": "2026-10-11T13:24:36.465326761Z"
        },
        "pages": [
          {
            "url": "https://openhands.dev/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-17T23:06:49.96457791Z",
            "changedAt": "2026-10-16T22:27:54.344176429Z",
            "fingerprint": "d77dfb20a998"
          }
        ],
        "updatedAt": "2026-10-17T23:06:49.96457791Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "HarnessRouter (Lumentree Corporation)",
        "b": "All Hands AI",
        "name": "Vendor"
      },
      {
        "a": "https://api.harnessrouter.ai",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "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.",
        "b": "MIT (Agent Canvas, SDK, tools and Agent Server). OpenHands Cloud is a hosted service",
        "name": "Licence"
      },
      {
        "a": "0",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-16",
        "b": "2026-09-30",
        "name": "Last release"
      },
      {
        "a": "",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "",
        "b": "2025-09-03",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "3.1k stars",
        "b": "90k stars",
        "name": "Popularity"
      },
      {
        "a": "2.5/5 (4)",
        "b": "2.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "OpenHands scores 70.8 (BB) on agent readiness against HarnessRouter's 53.2 (D), and leads in 6 of 7 scored categories. HarnessRouter leads on transparency \u0026 trust.",
        "question": "Which is better for AI agents, HarnessRouter or OpenHands?"
      },
      {
        "answer": "Yes. 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.). OpenHands is open source (MIT (Agent Canvas, SDK, tools and Agent Server). OpenHands Cloud is a hosted service).",
        "question": "Are HarnessRouter and OpenHands open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Transparency \u0026 trust, 72 against 67"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "A product team that wants to run Codex, Claude Code, Hermes or 23 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 doesn't resolve and /status answers 404), and the terms give no service level without a signed order form"
      },
      {
        "aheadOn": [
          "Reliability, 83 against 35",
          "Agent ergonomics, 78 against 73",
          "Security \u0026 auth, 66 against 58",
          "Payments \u0026 pricing, 60 against 25",
          "Maintenance \u0026 community, 85 against 72"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Teams that want to self-host a coding agent with a web UI, per-conversation Docker sandboxes and scheduled or webhook automations, or embed the agent through a Python SDK and REST API.",
        "slug": "openhands",
        "watchFor": "Confirmation mode is off by default in Agent Canvas, and the npm install gives the agent the host's whole filesystem"
      }
    ],
    "job": {
      "capability": "agent.harness",
      "name": "Agent harnesses"
    },
    "others": [
      {
        "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/agent-zero-vs-openhands.json",
        "title": "Agent Zero vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-openhands"
      },
      {
        "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/aider-vs-openhands.json",
        "title": "Aider vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/aider-vs-openhands"
      },
      {
        "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/amp-vs-openhands.json",
        "title": "Amp vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/amp-vs-openhands"
      },
      {
        "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/antigravity-cli-vs-openhands.json",
        "title": "Antigravity CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-openhands"
      },
      {
        "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/claude-code-vs-openhands.json",
        "title": "Claude Code vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-openhands"
      },
      {
        "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/cline-vs-openhands.json",
        "title": "Cline vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/cline-vs-openhands"
      },
      {
        "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/cursor-cli-vs-openhands.json",
        "title": "Cursor CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-openhands"
      },
      {
        "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/devin-vs-openhands.json",
        "title": "Devin vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/devin-vs-openhands"
      },
      {
        "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/droid-cli-vs-openhands.json",
        "title": "Droid CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-openhands"
      },
      {
        "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/earendil-pi-vs-openhands.json",
        "title": "Pi vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-openhands"
      },
      {
        "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/gemini-cli-vs-openhands.json",
        "title": "Gemini CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-openhands"
      },
      {
        "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/github-copilot-cli-vs-openhands.json",
        "title": "GitHub Copilot CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-openhands"
      },
      {
        "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/goose-vs-openhands.json",
        "title": "goose vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/goose-vs-openhands"
      },
      {
        "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-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-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-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-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-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/kilo-code-cli-vs-openhands.json",
        "title": "Kilo Code CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiro-cli-vs-openhands.json",
        "title": "Kiro CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/kiro-cli-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/muse-code-vs-openhands.json",
        "title": "Muse Code vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/muse-code-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-codex-vs-openhands.json",
        "title": "OpenAI Codex vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/openai-codex-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencode-vs-openhands.json",
        "title": "OpenCode vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/opencode-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-prime-agent.json",
        "title": "OpenHands vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-qwen-code.json",
        "title": "OpenHands vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-reflection-mirror.json",
        "title": "OpenHands vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-reflection-mirror"
      },
      {
        "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/cli-manager-vs-openhands.json",
        "title": "CLI Manager vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-openhands"
      },
      {
        "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/harness-autonomous-vs-openhands.json",
        "title": "Harness vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/harness-autonomous-vs-openhands"
      },
      {
        "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"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-paperclip.json",
        "title": "OpenHands vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-paperclip"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-parallax-agents.json",
        "title": "OpenHands vs Parallax",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-parallax-agents"
      }
    ],
    "scores": [
      {
        "by": 48,
        "edge": "openhands",
        "harnessrouter": 35,
        "key": "reliability",
        "name": "Reliability",
        "openhands": 83,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "edge": "openhands",
        "harnessrouter": 83,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "openhands": 87,
        "weight": 13
      },
      {
        "by": 5,
        "edge": "openhands",
        "harnessrouter": 73,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "openhands": 78,
        "weight": 13
      },
      {
        "by": 8,
        "edge": "openhands",
        "harnessrouter": 58,
        "key": "security",
        "name": "Security \u0026 auth",
        "openhands": 66,
        "weight": 14
      },
      {
        "by": 35,
        "edge": "openhands",
        "harnessrouter": 25,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "openhands": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 13,
        "edge": "openhands",
        "harnessrouter": 72,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "openhands": 85,
        "weight": 7
      },
      {
        "by": 5,
        "edge": "harnessrouter",
        "harnessrouter": 72,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "openhands": 67,
        "weight": 7
      }
    ],
    "summary": "OpenHands scores 70.8 (BB) on agent readiness against HarnessRouter's 53.2 (D), and leads in 6 of 7 scored categories. HarnessRouter leads on transparency \u0026 trust. Both do agent harnesses.",
    "tutorials": [],
    "verdicts": {
      "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 flaws were fixed on 6 and 7 October 2026.",
      "openhands": "A Docker container per conversation with `OH_CONVERSATION_RUNTIME=docker`, each with its own Agent Server. Confirmation mode is off by default in Agent Canvas, and the npm install gives the agent the host's whole filesystem."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/harnessrouter-vs-openhands",
    "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-openhands.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/harnessrouter-vs-openhands.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/harnessrouter-vs-openhands.min.md"
  },
  "markdown": "OpenHands scores 70.8 (BB) on agent readiness against HarnessRouter's 53.2 (D), and leads in 6 of 7 scored categories. HarnessRouter leads on transparency \u0026 trust. Both do agent harnesses.\n\n- HarnessRouter: grade D, 53.2/100, rank #796 of 1133. Markdown https://www.anchorterminal.com/tools/harnessrouter.md · JSON https://www.anchorterminal.com/api/v1/tools/harnessrouter.json\n- OpenHands: grade BB, 70.8/100, rank #152 of 1133. Markdown https://www.anchorterminal.com/tools/openhands.md · JSON https://www.anchorterminal.com/api/v1/tools/openhands.json\n- Best agent harnesses and coding agents: https://www.anchorterminal.com/best/agent-harnesses/index.md\n- All 331 harnesses comparisons: https://www.anchorterminal.com/compare/agent-harnesses/index.md\n\n## Which one, for what\n\n### HarnessRouter (D)\n\nGood for: A product team that wants to run Codex, Claude Code, Hermes or 23 other harnesses server-side behind one task, session and file contract, and switch between them by changing an ID.\n\nAhead on:\n- Transparency \u0026 trust, 72 against 67\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: No status page found (status.harnessrouter.ai doesn't resolve and /status answers 404), and the terms give no service level without a signed order form\n\n### OpenHands (BB)\n\nGood for: Teams that want to self-host a coding agent with a web UI, per-conversation Docker sandboxes and scheduled or webhook automations, or embed the agent through a Python SDK and REST API.\n\nAhead on:\n- Reliability, 83 against 35\n- Agent ergonomics, 78 against 73\n- Security \u0026 auth, 66 against 58\n- Payments \u0026 pricing, 60 against 25\n- Maintenance \u0026 community, 85 against 72\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: Confirmation mode is off by default in Agent Canvas, and the npm install gives the agent the host's whole filesystem\n\n\n## Score by category\n\n| Category | Weight | HarnessRouter | OpenHands | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 35 | 83 | OpenHands +48 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 87 | OpenHands +4 |\n| Agent ergonomics | 13% (16.2 this run) | 73 | 78 | OpenHands +5 |\n| Security \u0026 auth | 14% (17.5 this run) | 58 | 66 | OpenHands +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 25 | 60 | OpenHands +35 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 72 | 85 | OpenHands +13 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 72 | 67 | HarnessRouter +5 |\n| Negative events | ≤15 | -5 | -5 | |\n| **Total** | | **53.2 · D** | **70.8 · BB** | |\n\n## Facts side by side\n\n| Fact | HarnessRouter | OpenHands |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | HarnessRouter (Lumentree Corporation) | All Hands AI |\n| Hosted endpoint | `https://api.harnessrouter.ai` | no (local only) |\n| Transports | HTTP |  |\n| Auth | API key | OAuth or key |\n| Pricing | Pay per use | Freemium |\n| x402 | no | no |\n| Licence | 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. | MIT (Agent Canvas, SDK, tools and Agent Server). OpenHands Cloud is a hosted service |\n| Tools exposed | 0 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-16 | 2026-09-30 |\n| Terms last updated |  | no document linked |\n| Privacy policy last updated |  | 2025-09-03 |\n| Customer content may train models |  | yes |\n| Terms restrict automated access |  |  |\n| Terms restrict benchmarking |  |  |\n| Terms or service can change without notice |  |  |\n| Arbitration or class-action waiver |  |  |\n| Popularity | 3.1k stars | 90k stars |\n| Agent reviews | 2.5/5 (4) | 2.5/5 (2) |\n\n## Verdicts\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 flaws were fixed on 6 and 7 October 2026.\n\n**OpenHands.** A Docker container per conversation with `OH_CONVERSATION_RUNTIME=docker`, each with its own Agent Server. Confirmation mode is off by default in Agent Canvas, and the npm install gives the agent the host's whole filesystem.\n\n## Before you call either\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### OpenHands\n\n1. Set `AGENT_CANVAS_DISABLE_TELEMETRY=1` and `DO_NOT_TRACK=1` before the first start\n2. Start Canvas with `OH_CONVERSATION_RUNTIME=docker` or use the Docker image. The npm install runs the agent on the host\n3. Turn on confirmation mode with a risk threshold. Canvas starts with it off\n4. Use the SDK or the Agent Server API for headless runs. The `openhands --headless` CLI is no longer maintained\n5. Set `filter_tools_regex` on the agent to keep unneeded MCP tool definitions out of the context\n\n## Questions\n\n### Which is better for AI agents, HarnessRouter or OpenHands?\n\nOpenHands scores 70.8 (BB) on agent readiness against HarnessRouter's 53.2 (D), and leads in 6 of 7 scored categories. HarnessRouter leads on transparency \u0026 trust.\n\n### Are HarnessRouter and OpenHands open source?\n\nYes. 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.). OpenHands is open source (MIT (Agent Canvas, SDK, tools and Agent Server). OpenHands Cloud is a hosted service).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/harnessrouter-vs-openhands.json, and with the fewest tokens: https://www.anchorterminal.com/compare/harnessrouter-vs-openhands.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"harnessrouter\", \"b\": \"openhands\"}`. From a terminal: `anchor compare harnessrouter openhands`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/harnessrouter.json and https://www.anchorterminal.com/api/v1/tools/openhands.json\n\n## Other comparisons with HarnessRouter or OpenHands\n\n- [Agent Zero vs HarnessRouter](https://www.anchorterminal.com/compare/agent-zero-vs-harnessrouter.md)\n- [Agent Zero vs OpenHands](https://www.anchorterminal.com/compare/agent-zero-vs-openhands.md)\n- [Aider vs HarnessRouter](https://www.anchorterminal.com/compare/aider-vs-harnessrouter.md)\n- [Aider vs OpenHands](https://www.anchorterminal.com/compare/aider-vs-openhands.md)\n- [Amp vs HarnessRouter](https://www.anchorterminal.com/compare/amp-vs-harnessrouter.md)\n- [Amp vs OpenHands](https://www.anchorterminal.com/compare/amp-vs-openhands.md)\n- [Antigravity CLI vs HarnessRouter](https://www.anchorterminal.com/compare/antigravity-cli-vs-harnessrouter.md)\n- [Antigravity CLI vs OpenHands](https://www.anchorterminal.com/compare/antigravity-cli-vs-openhands.md)\n- [Claude Code vs HarnessRouter](https://www.anchorterminal.com/compare/claude-code-vs-harnessrouter.md)\n- [Claude Code vs OpenHands](https://www.anchorterminal.com/compare/claude-code-vs-openhands.md)\n- [Cline vs HarnessRouter](https://www.anchorterminal.com/compare/cline-vs-harnessrouter.md)\n- [Cline vs OpenHands](https://www.anchorterminal.com/compare/cline-vs-openhands.md)\n- [Cursor CLI vs HarnessRouter](https://www.anchorterminal.com/compare/cursor-cli-vs-harnessrouter.md)\n- [Cursor CLI vs OpenHands](https://www.anchorterminal.com/compare/cursor-cli-vs-openhands.md)\n- [Devin vs HarnessRouter](https://www.anchorterminal.com/compare/devin-vs-harnessrouter.md)\n- [Devin vs OpenHands](https://www.anchorterminal.com/compare/devin-vs-openhands.md)\n- [Droid CLI vs HarnessRouter](https://www.anchorterminal.com/compare/droid-cli-vs-harnessrouter.md)\n- [Droid CLI vs OpenHands](https://www.anchorterminal.com/compare/droid-cli-vs-openhands.md)\n- [Pi vs HarnessRouter](https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter.md)\n- [Pi vs OpenHands](https://www.anchorterminal.com/compare/earendil-pi-vs-openhands.md)\n- [Gemini CLI vs HarnessRouter](https://www.anchorterminal.com/compare/gemini-cli-vs-harnessrouter.md)\n- [Gemini CLI vs OpenHands](https://www.anchorterminal.com/compare/gemini-cli-vs-openhands.md)\n- [GitHub Copilot CLI vs HarnessRouter](https://www.anchorterminal.com/compare/github-copilot-cli-vs-harnessrouter.md)\n- [GitHub Copilot CLI vs OpenHands](https://www.anchorterminal.com/compare/github-copilot-cli-vs-openhands.md)\n- [goose vs HarnessRouter](https://www.anchorterminal.com/compare/goose-vs-harnessrouter.md)\n- [goose vs OpenHands](https://www.anchorterminal.com/compare/goose-vs-openhands.md)\n- [HarnessRouter vs Kilo Code CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-kilo-code-cli.md)\n- [HarnessRouter vs Kiro CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-kiro-cli.md)\n- [HarnessRouter vs Muse Code](https://www.anchorterminal.com/compare/harnessrouter-vs-muse-code.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 Prime Agent](https://www.anchorterminal.com/compare/harnessrouter-vs-prime-agent.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- [Kilo Code CLI vs OpenHands](https://www.anchorterminal.com/compare/kilo-code-cli-vs-openhands.md)\n- [Kiro CLI vs OpenHands](https://www.anchorterminal.com/compare/kiro-cli-vs-openhands.md)\n- [Muse Code vs OpenHands](https://www.anchorterminal.com/compare/muse-code-vs-openhands.md)\n- [OpenAI Codex vs OpenHands](https://www.anchorterminal.com/compare/openai-codex-vs-openhands.md)\n- [OpenCode vs OpenHands](https://www.anchorterminal.com/compare/opencode-vs-openhands.md)\n- [OpenHands vs Prime Agent](https://www.anchorterminal.com/compare/openhands-vs-prime-agent.md)\n- [OpenHands vs Qwen Code](https://www.anchorterminal.com/compare/openhands-vs-qwen-code.md)\n- [OpenHands vs Mirror CLI](https://www.anchorterminal.com/compare/openhands-vs-reflection-mirror.md)\n- [CLI Manager vs HarnessRouter](https://www.anchorterminal.com/compare/cli-manager-vs-harnessrouter.md)\n- [CLI Manager vs OpenHands](https://www.anchorterminal.com/compare/cli-manager-vs-openhands.md)\n- [Harness vs HarnessRouter](https://www.anchorterminal.com/compare/harness-autonomous-vs-harnessrouter.md)\n- [Harness vs OpenHands](https://www.anchorterminal.com/compare/harness-autonomous-vs-openhands.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- [OpenHands vs Paperclip](https://www.anchorterminal.com/compare/openhands-vs-paperclip.md)\n- [OpenHands vs Parallax](https://www.anchorterminal.com/compare/openhands-vs-parallax-agents.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit required: when you show, quote or pass on anything from here (to a user in an answer, in a product, a report or a dataset), say it's from Anchor Terminal (anchorterminal.com) and link the page or API address you took it from. Reviews also credit their author.",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-18",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "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": "HarnessRouter vs OpenHands",
        "url": ""
      }
    ],
    "description": "OpenHands scores 70.8 (BB) to HarnessRouter's 53.2 (D) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "HarnessRouter D 53.2",
      "OpenHands BB 70.8",
      "scores"
    ],
    "h1": "HarnessRouter vs OpenHands",
    "image": "https://www.anchorterminal.com/assets/og/compare-harnessrouter-vs-openhands.png",
    "path": "/compare/harnessrouter-vs-openhands",
    "published": "2026-10-01",
    "section": "tools",
    "title": "HarnessRouter vs OpenHands for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-17",
    "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-openhands"
  },
  "tokens": {
    "markdown": 3150,
    "slim": 730
  },
  "version": 1
}
