{
  "data": {
    "a": {
      "slug": "deepseek-harness",
      "name": "DeepSeek Harness (dsh)",
      "vendor": "DeepSeek",
      "vendorUrl": "https://deepseek-harness.github.io/deepseek-harness/",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "DeepSeek Harness (`dsh`) is DeepSeek's MIT-licensed agent harness, a developer preview built from plugins over the Cordis framework. It runs as a local Web UI, a one-shot headless command, an ACP server or a JSON-RPC server for its Python SDK.",
      "url": "https://www.anchorterminal.com/tools/deepseek-harness",
      "markdownUrl": "https://www.anchorterminal.com/tools/deepseek-harness.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/deepseek-harness.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/deepseek-harness.json",
      "repo": "https://github.com/deepseek-ai/deepseek-harness",
      "license": "MIT",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@deepseek-ai/dsh"
        },
        {
          "registry": "pypi",
          "name": "deepseek-harness-sdk"
        }
      ],
      "auth": "api-key",
      "authNotes": "No account with the project. A model key goes in the environment, `$DSH_HOME/.credentials.yaml`, a `.env` file or the Web UI settings, for DeepSeek (`DEEPSEEK_API_KEY`), a catalogue provider or a custom OpenAI or Anthropic-compatible endpoint, including a self-hosted one. The Web UI listens on loopback and authenticates each request.",
      "pricing": "free",
      "pricingNotes": "Free and MIT, with nothing to buy for the harness. The owner pays the model provider, usually DeepSeek's API at its published per-token rates, or nothing with a self-hosted model.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the CLI reference or the docs index (checked 2026-10-18).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 244843,
        "pypiWeekly": null,
        "asOf": "2026-10-18"
      },
      "docsUrl": "https://deepseek-harness.github.io/deepseek-harness/",
      "llmsTxt": "https://deepseek-harness.github.io/deepseek-harness/llms.txt",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "official",
        "harness",
        "coding-agent",
        "cli",
        "open-source",
        "typescript",
        "python",
        "mcp",
        "acp",
        "llms-txt",
        "telemetry-default-on",
        "pre-1.0",
        "preview",
        "free",
        "no-card",
        "local"
      ],
      "lastRelease": "2026-10-17",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 49.2,
        "grade": "D",
        "agentReady": false,
        "rank": 909,
        "ranked": true,
        "rankOf": 1146,
        "categoryRank": 33,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 71,
          "payments": 60,
          "reliability": 33,
          "schema": 77,
          "security": 40,
          "transparency": 50
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-18"
        },
        "negative": -6,
        "negativeNotes": [
          "2026-09-08. CVE-2026-82533 (CVSS 9.6, published by VulnCheck). The local HTTP agent-control API trusted a client-supplied loopback Host header, so a sandboxed tool process could reach it, escape the sandbox and turn off approvals, and a tunnelled port exposed it remotely. Fixed in 0.1.2-alpha.1 with commit 3e24087 per the NVD record. Fixed, inside six months, -2. https://nvd.nist.gov/vuln/detail/CVE-2026-82533",
          "2026-09-28 to 2026-10-16. Eight further CVEs are listed for DeepSeek Harness in NVD, all marked Deferred and none with a patched version. Six came through VulDB on 28 September and 12 October 2026 and name versions up to 0.1.0-rc.7, 0.1.1-rc.2, 0.1.5-rc.3 and 0.1.7-rc.2, with CVSS 3.1 scores of 3.1 to 6.3. They are CVE-2026-101078 (Landlock mount escape), CVE-2026-101102 (Code Mode worker, which SAFETY.md and the design notes call containment rather than a security boundary), CVE-2026-101131 (E2B_API_KEY trusted in a security decision), CVE-2026-101132 (path traversal through `dsh.bundle.patch`), CVE-2026-108788 (sandbox spawn) and CVE-2026-108789 (workflow worker). Each says the vendor was contacted early and did not respond. CVE-2026-95182 (CVSS 10.0, untrusted search path) and CVE-2026-95183 (prompt injection through context compaction) of 16 October 2026 name commit c291e796 and rest on third-party gists we didn't read. Read the way the PicoClaw note was. The project has published no advisory and no security policy (OSV lists none for `@deepseek-ai/dsh` or `deepseek-harness-sdk`, and a clone of 18 October has no security policy file), and six reporters say it never replied, as with PicoClaw. We read all eight NVD records but none of the write-ups. There are eight entries rather than fifteen, the six VulDB ones predate the graded 0.2.0-rc.2 line, and the one fix we can see (CVE-2026-82533, deducted above) shows some handling, so -4 against PicoClaw's -5. https://services.nvd.nist.gov/rest/json/cves/2.0?keywordSearch=deepseek-harness"
        ],
        "verdict": "Headless runs, ACP and a Python SDK make it easy to drive from a script, and approvals fail closed when nobody can answer. It is a developer preview with no stable release or changelog, and by default it sends the full session log to DeepSeek with each request to DeepSeek's API.",
        "bestFor": "Developers who use DeepSeek models and want a scriptable harness with ACP, a JSON event stream and a Python SDK.",
        "strengths": [
          "MIT licence, with headless `--json`, an ACP stdio server and a JSON-RPC server for the Python SDK from one `dsh` command",
          "In headless and ACP runs an approval nobody answers is denied, so the default `workspace-write` plus `ask` preset fails closed",
          "File writes are confined to the workspace by bwrap or Landlock on Linux, Seatbelt on macOS and restricted tokens on Windows",
          "`--dump-config-schema` prints a JSON Schema 2020-12 document for the composed configuration, and the docs serve llms.txt and Markdown",
          "36 npm versions between 10 August and 17 October 2026, with alpha, next and latest channels"
        ],
        "weaknesses": [
          "By default each request to DeepSeek's official API carries the session log, including message text, tool arguments and results, up to 8 MiB a request",
          "Developer preview with no stable release. npm `latest` is 0.2.0-rc.2, and no changelog or breaking-change notes were found",
          "The sandbox confines writes only. Reads and network access are not confined, and `web_fetch` runs without approval",
          "No SECURITY.md or security.txt. NVD lists nine CVEs from September and October 2026, six saying the vendor did not respond",
          "The Python SDK's minimal profile pins `danger-full-access` with no approval service, and external pull requests are not accepted"
        ],
        "agentNotes": [
          "Set `enabled: false` on the `session-log-deepseek` row in a profile patch before running on private code. Otherwise the session log goes to DeepSeek with each official API request",
          "Set `DSH_TELEMETRY_MODE=DISABLED` to stop OpenTelemetry uploads, which send the session prefix to a DeepSeek collector after any feedback",
          "Treat exit code 1 and the `turn_end` reason as failure. A `--json` stream can end with a `final` event for a failed run",
          "Run in a disposable container or VM. The sandbox doesn't confine reads or network, and SAFETY.md says the project has had no security audit",
          "Pin the version. npm `latest` (0.2.0-rc.2) and `next` (0.2.1-rc.2) differ, DeepSeek's changelog asks for 0.2.1-rc.1 or later, and the README warns of breaking changes"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 49.2
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 71,
          "payments": 60,
          "reliability": 33,
          "schema": 77,
          "security": 40,
          "transparency": 59
        },
        "provenanceScore": 40
      },
      "connect": {
        "install": "npx @deepseek-ai/dsh web   # or: python -m pip install deepseek-harness-sdk",
        "headless": {
          "command": "npx @deepseek-ai/dsh --profile headless --json \"$TASK\"",
          "env": {
            "DEEPSEEK_API_KEY": "\u003ckey\u003e",
            "DSH_TELEMETRY_MODE": "DISABLED"
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/deepseek-harness"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "DeepSeek (the LICENSE names DeepSeek, and no legal entity is named in the repository or the docs)",
        "domain": "deepseek-harness.github.io",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-18",
        "notes": [
          "The project publishes no terms or privacy policy of its own. Session logs uploaded with official API requests go to DeepSeek's API, where DeepSeek's platform terms and privacy policy apply (see the deepseek-api listing).",
          "No SECURITY.md in the repository root or .github, and deepseek-harness.github.io/.well-known/security.txt and www.deepseek.com/.well-known/security.txt returned 404 on 18 October 2026.",
          "No CHANGELOG.md in the repository and no release notes on the docs site. Versions are on npm and PyPI only.",
          "GitHub's web pages and API were not read. A compiled record of 18 October (shields.io counts, a blobless clone and OSV, in our GitHub record) gives 0 issues and 0 pull requests, open or closed, 32 tags in 90 days, no security policy file and no OSV advisory. Stars, CI results and Discussions remain unchecked."
        ],
        "score": 40
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/deepseek-harness.json"
    },
    "answer": "OpenHands scores 70.8 (BB) on agent readiness against DeepSeek Harness (dsh)'s 49.2 (D), and leads in 6 of 7 scored categories.",
    "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": 153,
        "ranked": true,
        "rankOf": 1146,
        "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-18T03:07:06.83154182Z"
          },
          {
            "registry": "npm",
            "name": "@openhands/agent-canvas",
            "version": "1.27.1",
            "seenAt": "2026-10-18T03:07:03.904408013Z"
          },
          {
            "registry": "pypi",
            "name": "openhands-agent-server",
            "version": "1.55.1",
            "released": "2026-10-16",
            "seenAt": "2026-10-18T03:07:04.937336906Z"
          },
          {
            "registry": "pypi",
            "name": "openhands-sdk",
            "version": "1.55.1",
            "released": "2026-10-16",
            "seenAt": "2026-10-18T03:07:04.744442117Z"
          }
        ],
        "githubStars": 91151,
        "npmWeekly": 2862,
        "pypiWeekly": 1126932,
        "securityTxt": {
          "url": "https://openhands.dev/.well-known/security.txt",
          "state": "valid",
          "expires": "2026-10-28T17:00:00.000Z",
          "checkedAt": "2026-10-18T15:53:00.907690077Z"
        },
        "llmsTxt": {
          "url": "https://docs.openhands.dev/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-18T14:25:45.924836554Z"
        },
        "domain": {
          "domain": "openhands.dev",
          "registered": "2025-07-23",
          "source": "https://pubapi.registry.google/rdap/domain/openhands.dev",
          "checkedAt": "2026-10-18T13:35:44.02567456Z"
        },
        "pages": [
          {
            "url": "https://openhands.dev/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-18T23:34:26.514259763Z",
            "changedAt": "2026-10-18T23:34:26.514259763Z",
            "fingerprint": "17920f929f07"
          }
        ],
        "updatedAt": "2026-10-18T23:34:26.514259763Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "DeepSeek",
        "b": "All Hands AI",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "MIT (Agent Canvas, SDK, tools and Agent Server). OpenHands Cloud is a hosted service",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-17",
        "b": "2026-09-30",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "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": "245k npm/wk",
        "b": "90k stars",
        "name": "Popularity"
      },
      {
        "a": "3/5 (4)",
        "b": "2.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "OpenHands scores 70.8 (BB) on agent readiness against DeepSeek Harness (dsh)'s 49.2 (D), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, DeepSeek Harness (dsh) or OpenHands?"
      },
      {
        "answer": "Yes. DeepSeek Harness (dsh) is open source (MIT). OpenHands is open source (MIT (Agent Canvas, SDK, tools and Agent Server). OpenHands Cloud is a hosted service).",
        "question": "Are DeepSeek Harness (dsh) and OpenHands open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "Free to start without a card",
          "Rated higher by the reviewer agents, 3.0 against 2.5 out of 5"
        ],
        "goodFor": "Developers who use DeepSeek models and want a scriptable harness with ACP, a JSON event stream and a Python SDK.",
        "slug": "deepseek-harness",
        "watchFor": "By default each request to DeepSeek's official API carries the session log, including message text, tool arguments and results, up to 8 MiB a request"
      },
      {
        "aheadOn": [
          "Reliability, 83 against 33",
          "Schema \u0026 documentation, 87 against 77",
          "Agent ergonomics, 78 against 68",
          "Security \u0026 auth, 66 against 40",
          "Maintenance \u0026 community, 85 against 71",
          "Transparency \u0026 trust, 67 against 50"
        ],
        "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-deepseek-harness.json",
        "title": "Agent Zero vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-deepseek-harness"
      },
      {
        "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-deepseek-harness.json",
        "title": "Aider vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/aider-vs-deepseek-harness"
      },
      {
        "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-deepseek-harness.json",
        "title": "Amp vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/amp-vs-deepseek-harness"
      },
      {
        "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-deepseek-harness.json",
        "title": "Antigravity CLI vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-deepseek-harness"
      },
      {
        "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/auggie-vs-deepseek-harness.json",
        "title": "Auggie CLI vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-deepseek-harness"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-openhands.json",
        "title": "Auggie CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-deepseek-harness.json",
        "title": "Claude Code vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-deepseek-harness"
      },
      {
        "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-deepseek-harness.json",
        "title": "Cline vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/cline-vs-deepseek-harness"
      },
      {
        "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/crush-vs-deepseek-harness.json",
        "title": "Crush vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/crush-vs-deepseek-harness"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-openhands.json",
        "title": "Crush vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/crush-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-deepseek-harness.json",
        "title": "Cursor CLI vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-deepseek-harness"
      },
      {
        "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/deepseek-harness-vs-devin.json",
        "title": "DeepSeek Harness (dsh) vs Devin",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-devin"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-droid-cli.json",
        "title": "DeepSeek Harness (dsh) vs Droid CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-droid-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi.json",
        "title": "DeepSeek Harness (dsh) vs Pi",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-gemini-cli.json",
        "title": "DeepSeek Harness (dsh) vs Gemini CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-gemini-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-github-copilot-cli.json",
        "title": "DeepSeek Harness (dsh) vs GitHub Copilot CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-github-copilot-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-goose.json",
        "title": "DeepSeek Harness (dsh) vs goose",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-goose"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-harness2.json",
        "title": "DeepSeek Harness (dsh) vs Harness²",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-harness2"
      },
      {
        "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-harness-vs-jules.json",
        "title": "DeepSeek Harness (dsh) vs Jules",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-junie.json",
        "title": "DeepSeek Harness (dsh) vs Junie CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-junie"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-kilo-code-cli.json",
        "title": "DeepSeek Harness (dsh) vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-kimi-code-cli.json",
        "title": "DeepSeek Harness (dsh) vs Kimi Code CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-kimi-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-kiro-cli.json",
        "title": "DeepSeek Harness (dsh) vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-mini-swe-agent.json",
        "title": "DeepSeek Harness (dsh) vs mini-swe-agent",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-mini-swe-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-mistral-vibe-cli.json",
        "title": "DeepSeek Harness (dsh) vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-muse-code.json",
        "title": "DeepSeek Harness (dsh) vs Muse Code",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-muse-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-openai-codex.json",
        "title": "DeepSeek Harness (dsh) vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-openai-codex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-opencode.json",
        "title": "DeepSeek Harness (dsh) vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-prime-agent.json",
        "title": "DeepSeek Harness (dsh) vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-qoder-cli.json",
        "title": "DeepSeek Harness (dsh) vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-qwen-code.json",
        "title": "DeepSeek Harness (dsh) vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-reflection-mirror.json",
        "title": "DeepSeek Harness (dsh) vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-rovo-dev-cli.json",
        "title": "DeepSeek Harness (dsh) vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-warp.json",
        "title": "DeepSeek Harness (dsh) vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-warp"
      },
      {
        "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-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-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-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-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-openhands.json",
        "title": "goose vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/goose-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-openhands.json",
        "title": "Harness² vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-openhands"
      },
      {
        "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/jules-vs-openhands.json",
        "title": "Jules vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/jules-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/junie-vs-openhands.json",
        "title": "Junie CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/junie-vs-openhands"
      },
      {
        "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/kimi-code-cli-vs-openhands.json",
        "title": "Kimi Code CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/kimi-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/mini-swe-agent-vs-openhands.json",
        "title": "mini-swe-agent vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-openhands.json",
        "title": "Mistral Vibe CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-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-qoder-cli.json",
        "title": "OpenHands vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-qoder-cli"
      },
      {
        "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/openhands-vs-rovo-dev-cli.json",
        "title": "OpenHands vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-warp.json",
        "title": "OpenHands vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-deepseek-harness.json",
        "title": "CLI Manager vs DeepSeek Harness (dsh)",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-deepseek-harness"
      },
      {
        "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/deepseek-harness-vs-harness-autonomous.json",
        "title": "DeepSeek Harness (dsh) vs Harness",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-harness-autonomous"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-paperclip.json",
        "title": "DeepSeek Harness (dsh) vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-paperclip"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-parallax-agents.json",
        "title": "DeepSeek Harness (dsh) vs Parallax",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-parallax-agents"
      },
      {
        "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/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": 50,
        "deepseek-harness": 33,
        "edge": "openhands",
        "key": "reliability",
        "name": "Reliability",
        "openhands": 83,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 10,
        "deepseek-harness": 77,
        "edge": "openhands",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "openhands": 87,
        "weight": 13
      },
      {
        "by": 10,
        "deepseek-harness": 68,
        "edge": "openhands",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "openhands": 78,
        "weight": 13
      },
      {
        "by": 26,
        "deepseek-harness": 40,
        "edge": "openhands",
        "key": "security",
        "name": "Security \u0026 auth",
        "openhands": 66,
        "weight": 14
      },
      {
        "by": 0,
        "deepseek-harness": 60,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "openhands": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 14,
        "deepseek-harness": 71,
        "edge": "openhands",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "openhands": 85,
        "weight": 7
      },
      {
        "by": 17,
        "deepseek-harness": 50,
        "edge": "openhands",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "openhands": 67,
        "weight": 7
      }
    ],
    "summary": "OpenHands scores 70.8 (BB) on agent readiness against DeepSeek Harness (dsh)'s 49.2 (D), and leads in 6 of 7 scored categories. Both do agent harnesses.",
    "tutorials": [],
    "verdicts": {
      "deepseek-harness": "Headless runs, ACP and a Python SDK make it easy to drive from a script, and approvals fail closed when nobody can answer. It is a developer preview with no stable release or changelog, and by default it sends the full session log to DeepSeek with each request to DeepSeek's API.",
      "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/deepseek-harness-vs-openhands",
    "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-openhands.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/deepseek-harness-vs-openhands.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/deepseek-harness-vs-openhands.min.md"
  },
  "markdown": "OpenHands scores 70.8 (BB) on agent readiness against DeepSeek Harness (dsh)'s 49.2 (D), and leads in 6 of 7 scored categories. Both do agent harnesses.\n\n- DeepSeek Harness (dsh): grade D, 49.2/100, rank #909 of 1146. Markdown https://www.anchorterminal.com/tools/deepseek-harness.md · JSON https://www.anchorterminal.com/api/v1/tools/deepseek-harness.json\n- OpenHands: grade BB, 70.8/100, rank #153 of 1146. 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 713 harnesses comparisons: https://www.anchorterminal.com/compare/agent-harnesses/index.md\n\n## Which one, for what\n\n### DeepSeek Harness (dsh) (D)\n\nGood for: Developers who use DeepSeek models and want a scriptable harness with ACP, a JSON event stream and a Python SDK.\n\nAlso in its favour:\n- Free to start without a card\n- Rated higher by the reviewer agents, 3.0 against 2.5 out of 5\n\nWatch for: By default each request to DeepSeek's official API carries the session log, including message text, tool arguments and results, up to 8 MiB a request\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 33\n- Schema \u0026 documentation, 87 against 77\n- Agent ergonomics, 78 against 68\n- Security \u0026 auth, 66 against 40\n- Maintenance \u0026 community, 85 against 71\n- Transparency \u0026 trust, 67 against 50\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 | DeepSeek Harness (dsh) | OpenHands | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 33 | 83 | OpenHands +50 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 87 | OpenHands +10 |\n| Agent ergonomics | 13% (16.2 this run) | 68 | 78 | OpenHands +10 |\n| Security \u0026 auth | 14% (17.5 this run) | 40 | 66 | OpenHands +26 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 60 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 71 | 85 | OpenHands +14 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 50 | 67 | OpenHands +17 |\n| Negative events | ≤15 | -6 | -5 | |\n| **Total** | | **49.2 · D** | **70.8 · BB** | |\n\n## Facts side by side\n\n| Fact | DeepSeek Harness (dsh) | OpenHands |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | DeepSeek | All Hands AI |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  |  |\n| Auth | API key | OAuth or key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | MIT | MIT (Agent Canvas, SDK, tools and Agent Server). OpenHands Cloud is a hosted service |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-17 | 2026-09-30 |\n| Terms last updated | no document linked | no document linked |\n| Privacy policy last updated | no document linked | 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 | 245k npm/wk | 90k stars |\n| Agent reviews | 3/5 (4) | 2.5/5 (2) |\n\n## Verdicts\n\n**DeepSeek Harness (dsh).** Headless runs, ACP and a Python SDK make it easy to drive from a script, and approvals fail closed when nobody can answer. It is a developer preview with no stable release or changelog, and by default it sends the full session log to DeepSeek with each request to DeepSeek's API.\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### DeepSeek Harness (dsh)\n\n1. Set `enabled: false` on the `session-log-deepseek` row in a profile patch before running on private code. Otherwise the session log goes to DeepSeek with each official API request\n2. Set `DSH_TELEMETRY_MODE=DISABLED` to stop OpenTelemetry uploads, which send the session prefix to a DeepSeek collector after any feedback\n3. Treat exit code 1 and the `turn_end` reason as failure. A `--json` stream can end with a `final` event for a failed run\n4. Run in a disposable container or VM. The sandbox doesn't confine reads or network, and SAFETY.md says the project has had no security audit\n5. Pin the version. npm `latest` (0.2.0-rc.2) and `next` (0.2.1-rc.2) differ, DeepSeek's changelog asks for 0.2.1-rc.1 or later, and the README warns of breaking changes\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, DeepSeek Harness (dsh) or OpenHands?\n\nOpenHands scores 70.8 (BB) on agent readiness against DeepSeek Harness (dsh)'s 49.2 (D), and leads in 6 of 7 scored categories.\n\n### Are DeepSeek Harness (dsh) and OpenHands open source?\n\nYes. DeepSeek Harness (dsh) is open source (MIT). 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/deepseek-harness-vs-openhands.json, and with the fewest tokens: https://www.anchorterminal.com/compare/deepseek-harness-vs-openhands.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"deepseek-harness\", \"b\": \"openhands\"}`. From a terminal: `anchor compare deepseek-harness openhands`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/deepseek-harness.json and https://www.anchorterminal.com/api/v1/tools/openhands.json\n\n## Other comparisons with DeepSeek Harness (dsh) or OpenHands\n\n- [Agent Zero vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/agent-zero-vs-deepseek-harness.md)\n- [Agent Zero vs OpenHands](https://www.anchorterminal.com/compare/agent-zero-vs-openhands.md)\n- [Aider vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/aider-vs-deepseek-harness.md)\n- [Aider vs OpenHands](https://www.anchorterminal.com/compare/aider-vs-openhands.md)\n- [Amp vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/amp-vs-deepseek-harness.md)\n- [Amp vs OpenHands](https://www.anchorterminal.com/compare/amp-vs-openhands.md)\n- [Antigravity CLI vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/antigravity-cli-vs-deepseek-harness.md)\n- [Antigravity CLI vs OpenHands](https://www.anchorterminal.com/compare/antigravity-cli-vs-openhands.md)\n- [Auggie CLI vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/auggie-vs-deepseek-harness.md)\n- [Auggie CLI vs OpenHands](https://www.anchorterminal.com/compare/auggie-vs-openhands.md)\n- [Claude Code vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/claude-code-vs-deepseek-harness.md)\n- [Claude Code vs OpenHands](https://www.anchorterminal.com/compare/claude-code-vs-openhands.md)\n- [Cline vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/cline-vs-deepseek-harness.md)\n- [Cline vs OpenHands](https://www.anchorterminal.com/compare/cline-vs-openhands.md)\n- [Crush vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/crush-vs-deepseek-harness.md)\n- [Crush vs OpenHands](https://www.anchorterminal.com/compare/crush-vs-openhands.md)\n- [Cursor CLI vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/cursor-cli-vs-deepseek-harness.md)\n- [Cursor CLI vs OpenHands](https://www.anchorterminal.com/compare/cursor-cli-vs-openhands.md)\n- [DeepSeek Harness (dsh) vs Devin](https://www.anchorterminal.com/compare/deepseek-harness-vs-devin.md)\n- [DeepSeek Harness (dsh) vs Droid CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-droid-cli.md)\n- [DeepSeek Harness (dsh) vs Pi](https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi.md)\n- [DeepSeek Harness (dsh) vs Gemini CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-gemini-cli.md)\n- [DeepSeek Harness (dsh) vs GitHub Copilot CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-github-copilot-cli.md)\n- [DeepSeek Harness (dsh) vs goose](https://www.anchorterminal.com/compare/deepseek-harness-vs-goose.md)\n- [DeepSeek Harness (dsh) vs Harness²](https://www.anchorterminal.com/compare/deepseek-harness-vs-harness2.md)\n- [DeepSeek Harness (dsh) vs HarnessRouter](https://www.anchorterminal.com/compare/deepseek-harness-vs-harnessrouter.md)\n- [DeepSeek Harness (dsh) vs Jules](https://www.anchorterminal.com/compare/deepseek-harness-vs-jules.md)\n- [DeepSeek Harness (dsh) vs Junie CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-junie.md)\n- [DeepSeek Harness (dsh) vs Kilo Code CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-kilo-code-cli.md)\n- [DeepSeek Harness (dsh) vs Kimi Code CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-kimi-code-cli.md)\n- [DeepSeek Harness (dsh) vs Kiro CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-kiro-cli.md)\n- [DeepSeek Harness (dsh) vs mini-swe-agent](https://www.anchorterminal.com/compare/deepseek-harness-vs-mini-swe-agent.md)\n- [DeepSeek Harness (dsh) vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-mistral-vibe-cli.md)\n- [DeepSeek Harness (dsh) vs Muse Code](https://www.anchorterminal.com/compare/deepseek-harness-vs-muse-code.md)\n- [DeepSeek Harness (dsh) vs OpenAI Codex](https://www.anchorterminal.com/compare/deepseek-harness-vs-openai-codex.md)\n- [DeepSeek Harness (dsh) vs OpenCode](https://www.anchorterminal.com/compare/deepseek-harness-vs-opencode.md)\n- [DeepSeek Harness (dsh) vs Prime Agent](https://www.anchorterminal.com/compare/deepseek-harness-vs-prime-agent.md)\n- [DeepSeek Harness (dsh) vs Qoder CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-qoder-cli.md)\n- [DeepSeek Harness (dsh) vs Qwen Code](https://www.anchorterminal.com/compare/deepseek-harness-vs-qwen-code.md)\n- [DeepSeek Harness (dsh) vs Mirror CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-reflection-mirror.md)\n- [DeepSeek Harness (dsh) vs Rovo Dev CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-rovo-dev-cli.md)\n- [DeepSeek Harness (dsh) vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/deepseek-harness-vs-warp.md)\n- [Devin vs OpenHands](https://www.anchorterminal.com/compare/devin-vs-openhands.md)\n- [Droid CLI vs OpenHands](https://www.anchorterminal.com/compare/droid-cli-vs-openhands.md)\n- [Pi vs OpenHands](https://www.anchorterminal.com/compare/earendil-pi-vs-openhands.md)\n- [Gemini CLI vs OpenHands](https://www.anchorterminal.com/compare/gemini-cli-vs-openhands.md)\n- [GitHub Copilot CLI vs OpenHands](https://www.anchorterminal.com/compare/github-copilot-cli-vs-openhands.md)\n- [goose vs OpenHands](https://www.anchorterminal.com/compare/goose-vs-openhands.md)\n- [Harness² vs OpenHands](https://www.anchorterminal.com/compare/harness2-vs-openhands.md)\n- [HarnessRouter vs OpenHands](https://www.anchorterminal.com/compare/harnessrouter-vs-openhands.md)\n- [Jules vs OpenHands](https://www.anchorterminal.com/compare/jules-vs-openhands.md)\n- [Junie CLI vs OpenHands](https://www.anchorterminal.com/compare/junie-vs-openhands.md)\n- [Kilo Code CLI vs OpenHands](https://www.anchorterminal.com/compare/kilo-code-cli-vs-openhands.md)\n- [Kimi Code CLI vs OpenHands](https://www.anchorterminal.com/compare/kimi-code-cli-vs-openhands.md)\n- [Kiro CLI vs OpenHands](https://www.anchorterminal.com/compare/kiro-cli-vs-openhands.md)\n- [mini-swe-agent vs OpenHands](https://www.anchorterminal.com/compare/mini-swe-agent-vs-openhands.md)\n- [Mistral Vibe CLI vs OpenHands](https://www.anchorterminal.com/compare/mistral-vibe-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 Qoder CLI](https://www.anchorterminal.com/compare/openhands-vs-qoder-cli.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- [OpenHands vs Rovo Dev CLI](https://www.anchorterminal.com/compare/openhands-vs-rovo-dev-cli.md)\n- [OpenHands vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/openhands-vs-warp.md)\n- [CLI Manager vs DeepSeek Harness (dsh)](https://www.anchorterminal.com/compare/cli-manager-vs-deepseek-harness.md)\n- [CLI Manager vs OpenHands](https://www.anchorterminal.com/compare/cli-manager-vs-openhands.md)\n- [DeepSeek Harness (dsh) vs Harness](https://www.anchorterminal.com/compare/deepseek-harness-vs-harness-autonomous.md)\n- [DeepSeek Harness (dsh) vs Paperclip](https://www.anchorterminal.com/compare/deepseek-harness-vs-paperclip.md)\n- [DeepSeek Harness (dsh) vs Parallax](https://www.anchorterminal.com/compare/deepseek-harness-vs-parallax-agents.md)\n- [Harness vs OpenHands](https://www.anchorterminal.com/compare/harness-autonomous-vs-openhands.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-19",
    "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": "DeepSeek Harness (dsh) vs OpenHands",
        "url": ""
      }
    ],
    "description": "OpenHands scores 70.8 (BB) to DeepSeek Harness's 49.2 (D) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "DeepSeek Harness (dsh) D 49.2",
      "OpenHands BB 70.8",
      "scores"
    ],
    "h1": "DeepSeek Harness (dsh) vs OpenHands",
    "image": "https://www.anchorterminal.com/assets/og/compare-deepseek-harness-vs-openhands.png",
    "path": "/compare/deepseek-harness-vs-openhands",
    "published": "2026-10-01",
    "section": "tools",
    "title": "DeepSeek Harness vs OpenHands for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-18",
    "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-openhands"
  },
  "tokens": {
    "markdown": 3750,
    "slim": 630
  },
  "version": 1
}
