{
  "data": {
    "a": {
      "slug": "droid-cli",
      "name": "Droid CLI",
      "vendor": "Factory",
      "vendorUrl": "https://factory.com",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Droid CLI is Factory's closed-source coding agent for the terminal. It runs interactively or headless through `droid exec`, connects MCP servers, runs multi-agent Missions, and can be driven by TypeScript and Python SDKs. A paid Factory plan is required.",
      "url": "https://www.anchorterminal.com/tools/droid-cli",
      "markdownUrl": "https://www.anchorterminal.com/tools/droid-cli.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/droid-cli.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/droid-cli.json",
      "repo": "https://github.com/Factory-AI/factory",
      "license": "Proprietary, under Factory's Terms and Conditions. The `droid` npm package is marked `UNLICENSED` and the public repository holds documentation only. The Python SDK is Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "droid"
        },
        {
          "registry": "npm",
          "name": "@factory/droid-sdk"
        },
        {
          "registry": "pypi",
          "name": "droid-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "A Factory account is required. The interactive CLI signs in through a browser with OAuth, and the docs say stored tokens rotate every 30 days. Headless runs set `FACTORY_API_KEY` to a key starting `fk-` created on the API keys page in Factory settings. Organisations can use service accounts whose keys can be rotated and revoked through an API.",
      "pricing": "paid",
      "pricingNotes": "Pro is $20 a month, Plus $100 and Max $200, each with the CLI, the Factory App and the SDK. Teams is $60 a month per team plus $40 a seat, and Business and Enterprise are by quote. Usage is capped by rolling 5-hour, 7-day and 30-day rate limits stated without numbers. Extra usage is prepaid credit from $10. No free tier or trial was found (checked 2026-10-09).",
      "priceSummary": "$20 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the pricing pages or the terms (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 49,
        "npmWeekly": 7766,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.factory.com/droid-cli/overview",
      "llmsTxt": "https://docs.factory.com/llms.txt",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "harness",
        "coding-agent",
        "cli",
        "closed-source",
        "mcp",
        "acp",
        "llms-txt",
        "sdk",
        "sandbox",
        "telemetry-default-on"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.1,
        "grade": "C",
        "agentReady": false,
        "rank": 560,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 13,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 72,
          "maintenance": 79,
          "payments": 10,
          "reliability": 49,
          "schema": 79,
          "security": 63,
          "transparency": 64
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "`droid exec` is read-only unless `--auto` raises the autonomy level, with command rules, an optional kernel-enforced sandbox, JSON output and documented exit codes. No free tier, status page or security.txt was found, the source is closed, and usage metrics go to Factory by default.",
        "bestFor": "Teams that want a terminal coding agent with tiered autonomy, command rules and an optional sandbox, and that will pay for a Factory plan.",
        "strengths": [
          "`droid exec` is read-only by default. `--auto low`, `medium` or `high` opens edits and commands by risk tier, and a run that exceeds its level exits non-zero",
          "Optional OS sandbox using Seatbelt on macOS and bubblewrap with seccomp on Linux, with writes limited to the working directory and network limited to allowed domains",
          "Text, JSON and JSON-RPC output, exit codes 0, 1 and 2, session resume and fork, and tool lists that can be restricted per run",
          "llms.txt with a Markdown copy of every docs page, and a dated changelog with 62 entries between 11 July and 8 October 2026",
          "The install script verifies a SHA-256 checksum, and the `droid` npm package is published from GitHub Actions through a trusted publisher"
        ],
        "weaknesses": [
          "No free tier or trial was found. Plans start at $20 a month and included usage is stated only as rolling rate limits without numbers",
          "The sandbox is off until `sandbox.enabled` is set, and `--skip-permissions-unsafe` skips every permission prompt",
          "Usage metrics go to Factory's collector by default. The pages read give no opt-out outside an airgapped deployment",
          "Closed source on a 0.x version line with near-daily releases. The public tracker had 33 open issues on 9 October 2026, most with no reply",
          "No status page and no security.txt were found. The trust centre is drawn by script and was not read",
          "The individual terms forbid using the service for benchmarking or competitive analysis, which matters before any probe is run"
        ],
        "agentNotes": [
          "Set `FACTORY_API_KEY` (starts `fk-`) from the API keys page in Factory settings for headless runs. Interactive use signs in through a browser",
          "Start with `droid exec` and no flags for analysis. Add `--auto low` for edits and `--auto medium` for installs, tests and local commits",
          "Use `--output-format json` and read `is_error`, `num_turns` and `session_id`. Treat a non-zero exit code as failure",
          "Set `sandbox.enabled` to true before running on untrusted code. In `droid exec` a sandbox violation is denied without a prompt",
          "Pin the version in CI with `npm install -g droid@\u003cversion\u003e`, or set `FACTORY_DROID_AUTO_UPDATE_ENABLED=false` on standalone installs, which update themselves"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.1
          }
        ],
        "editorialScores": {
          "ergonomics": 72,
          "maintenance": 79,
          "payments": 10,
          "reliability": 49,
          "schema": 79,
          "security": 63,
          "transparency": 55
        },
        "provenanceScore": 72
      },
      "connect": {
        "install": "curl -fsSL https://app.factory.ai/cli | sh   # or: npm install -g droid",
        "headless": {
          "command": "droid exec --auto low --output-format json \"$TASK\"",
          "env": {
            "FACTORY_API_KEY": "fk-..."
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/droid-cli"
      },
      "area": "frameworks",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 20,
          "note": "rolling rate limits, numbers not published"
        },
        {
          "item": "Plus plan",
          "unit": "month",
          "usd": 100,
          "note": "about 5 times Pro usage"
        },
        {
          "item": "Max plan",
          "unit": "month",
          "usd": 200,
          "note": "about 10 times Pro usage"
        },
        {
          "item": "Teams seat",
          "unit": "seat-month",
          "usd": 40,
          "note": "plus $60 a month per team, up to 10 seats"
        }
      ],
      "provenance": {
        "legalEntity": "The San Francisco AI Factory, Inc.",
        "domain": "factory.com",
        "domainRegistered": "1999-03-09",
        "endpointOnVendorDomain": null,
        "terms": "https://factory.com/legal/terms-individual",
        "privacy": "https://factory.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://docs.factory.com/changelog/release-notes",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The Terms and Conditions for Individual Plans (last updated 14 July 2026) name The San Francisco AI Factory, Inc., a Delaware corporation in San Francisco. The privacy policy (last updated 20 August 2026) names the same company.",
          "RDAP (Verisign) gives factory.com a registration date of 1999-03-09, long before the company.",
          "The CLI installs from app.factory.ai and downloads.factory.ai and signs in to app.factory.ai, a second domain of the vendor's.",
          "factory.com/.well-known/security.txt answered 404 on 9 October 2026.",
          "No status page is linked from the home page, the docs support page or the other pages read. factory.com/sla states a 99 per cent availability target.",
          "The terms linked are those for individual plans. Organisation plans are sold under separate orders, which we did not read."
        ],
        "score": 72
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/droid-cli.json",
      "live": {
        "slug": "droid-cli",
        "versions": [
          {
            "registry": "npm",
            "name": "@factory/droid-sdk",
            "version": "0.9.1",
            "seenAt": "2026-10-09T16:50:37.734856262Z"
          },
          {
            "registry": "npm",
            "name": "droid",
            "version": "0.237.0",
            "seenAt": "2026-10-09T16:50:36.904664611Z"
          },
          {
            "registry": "pypi",
            "name": "droid-sdk",
            "version": "0.5.0",
            "released": "2026-09-24",
            "seenAt": "2026-10-09T16:50:39.131992485Z"
          }
        ],
        "githubStars": 49,
        "npmWeekly": 7766,
        "pypiWeekly": 8371,
        "pages": [
          {
            "url": "https://docs.factory.com/changelog/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:37:19.435901865Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "79ac0e23f836"
          },
          {
            "url": "https://factory.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:39:19.155213369Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "5ef46e9f3c4f"
          },
          {
            "url": "https://factory.com/legal/terms-individual",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:39:16.902019177Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ebfbb9d9f0ab"
          }
        ],
        "updatedAt": "2026-10-09T18:39:19.155213369Z"
      }
    },
    "answer": "OpenCode scores 67.7 (B) on agent readiness against Droid CLI's 59.1 (C), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "opencode",
      "name": "OpenCode",
      "vendor": "Anomaly",
      "vendorUrl": "https://opencode.ai",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Open-source terminal coding agent from Anomaly Innovations, with a TUI, a desktop app in beta, IDE and ACP integration, and a headless HTTP server with an OpenAPI spec and a TypeScript SDK.",
      "url": "https://www.anchorterminal.com/tools/opencode",
      "markdownUrl": "https://www.anchorterminal.com/tools/opencode.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/opencode.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/opencode.json",
      "repo": "https://github.com/anomalyco/opencode",
      "license": "MIT",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "opencode-ai"
        },
        {
          "registry": "npm",
          "name": "@opencode-ai/sdk"
        }
      ],
      "auth": "none",
      "authNotes": "No account needed. Provider keys go in with `opencode auth login` (stored in ~/.local/share/opencode/auth.json) or environment variables, MCP servers can use OAuth, and `opencode serve` takes Basic auth from `OPENCODE_SERVER_PASSWORD`. With no key it uses free OpenCode Zen models with a public key.",
      "pricing": "freemium",
      "pricingNotes": "Free and MIT. You pay your model provider, or OpenCode Zen per token, with prices per million tokens published for every model, or OpenCode Go at $10 a month (Go Plus $40) for a set of open models. Some Zen models are free for a limited time and may use prompts to improve the model.",
      "priceSummary": "$10 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs or the source (checked 2026-10-01).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 211000,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-01"
      },
      "docsUrl": "https://opencode.ai/docs",
      "openapi": "https://raw.githubusercontent.com/anomalyco/opencode/dev/packages/sdk/openapi.json",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "open-source",
        "local",
        "freemium",
        "typescript",
        "openapi",
        "no-card",
        "no-key",
        "usage-priced"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.7,
        "grade": "B",
        "agentReady": false,
        "rank": 241,
        "ranked": true,
        "rankOf": 950,
        "categoryRank": 8,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 79,
          "maintenance": 81,
          "payments": 60,
          "reliability": 68,
          "schema": 88,
          "security": 60,
          "transparency": 67
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-01-12. GHSA-vxw4-wv6m-9hhh (CVE-2026-22812, 8.8), the HTTP server the TUI started had no authentication, so local processes could run shell commands as the user, fixed in 1.0.216. GHSA-c83v-7274-4vgp (CVE-2026-22813), unsanitised Markdown in the web UI let a malicious page run commands on the machine, fixed in 1.1.10. Fixed, published and more than six months old, -1 each. https://github.com/anomalyco/opencode/security/advisories",
          "2026-09-24. GHSA-632h-h47v-g4x4 (7.5, no CVE). The server's `/global/upgrade` endpoint accepted any package specifier without checking where the request came from, so a web page could make `opencode serve` install an attacker's npm package and run its scripts. Fixed in 1.18.22. Inside six months, -2. https://github.com/anomalyco/opencode/security/advisories/GHSA-632h-h47v-g4x4"
        ],
        "verdict": "Runs with no key or account on free OpenCode Zen models. Most permissions default to allow, and SECURITY.md says the permission system is not a sandbox.",
        "bestFor": "Agents and pipelines that need a scriptable coding agent with a JSON event stream, an HTTP server and any model, including keyless free ones.",
        "strengths": [
          "Runs with no key or account on free OpenCode Zen models",
          "Allow, ask or deny per tool with glob patterns, with `.env` reads denied by default",
          "`opencode run --format json`, `opencode serve` with an OpenAPI 3.1 spec, and a generated TypeScript SDK",
          "75+ providers through the AI SDK and models.dev, plus local models",
          "No product telemetry found, and OpenTelemetry export is opt-in"
        ],
        "weaknesses": [
          "Most permissions default to allow, and SECURITY.md says the permission system is not a sandbox",
          "Updates download and install at startup unless `autoupdate` is off",
          "Keyless runs send prompts to free models, some of which may use them for training",
          "Three advisories in 2026 against its local HTTP server and web UI",
          "About 4,700 open issues and 1,600 open pull requests"
        ],
        "agentNotes": [
          "Add deny rules for `bash` patterns and `external_directory` before an unattended run. Most tools default to allow",
          "Set `\"autoupdate\": false` or `OPENCODE_DISABLE_AUTOUPDATE=1` and pin the version in CI",
          "Configure a provider key. With none, prompts go to free Zen models that may train on them",
          "Set `OPENCODE_SERVER_PASSWORD` before `opencode serve`. Without it the server runs unauthenticated",
          "Use `opencode run --format json` and read the event stream rather than the formatted output"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.7
          }
        ],
        "editorialScores": {
          "ergonomics": 79,
          "maintenance": 81,
          "payments": 60,
          "reliability": 68,
          "schema": 88,
          "security": 60,
          "transparency": 82
        },
        "provenanceScore": 51
      },
      "connect": {
        "install": "npm i -g opencode-ai@latest   # or: curl -fsSL https://opencode.ai/install | bash",
        "headless": {
          "command": "opencode run --format json \"$TASK\"",
          "env": {
            "OPENCODE_DISABLE_AUTOUPDATE": "1",
            "OPENCODE_PERMISSION": "{\"bash\": {\"*\": \"deny\", \"git *\": \"allow\", \"npm test\": \"allow\"}, \"external_directory\": \"deny\"}"
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/opencode"
      },
      "area": "frameworks",
      "unitPrices": [
        {
          "item": "OpenCode Go",
          "unit": "month",
          "usd": 10,
          "note": "Go Plus is $40 a month"
        }
      ],
      "provenance": {
        "legalEntity": "Anomaly Innovations, Inc.",
        "domain": "opencode.ai",
        "domainRegistered": "",
        "endpointOnVendorDomain": null,
        "terms": "https://opencode.ai/legal/terms-of-service",
        "privacy": "https://opencode.ai/legal/privacy-policy",
        "statusPage": "",
        "changelog": "https://opencode.ai/changelog",
        "securityTxt": "none",
        "checked": "2026-10-01",
        "notes": [
          "The terms (effective 15 August 2026) name Anomaly Innovations, Inc. The privacy policy is effective 6 March 2026, with help@anoma.ly as the contact.",
          "opencode.ai/.well-known/security.txt returns 404. SECURITY.md points to GitHub private reporting and security@anoma.ly.",
          "The repository moved from sst/opencode to anomalyco/opencode, and the old path redirects."
        ],
        "score": 51
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/opencode.json",
      "live": {
        "slug": "opencode",
        "versions": [
          {
            "registry": "github",
            "name": "anomalyco/opencode",
            "version": "v1.18.35",
            "released": "2026-10-06",
            "seenAt": "2026-10-09T17:10:42.76932482Z"
          },
          {
            "registry": "npm",
            "name": "@opencode-ai/sdk",
            "version": "1.18.35",
            "seenAt": "2026-10-09T17:10:40.593007534Z"
          },
          {
            "registry": "npm",
            "name": "opencode-ai",
            "version": "1.18.35",
            "seenAt": "2026-10-09T17:10:40.503446572Z"
          }
        ],
        "githubStars": 212367,
        "npmWeekly": 3070494,
        "securityTxt": {
          "url": "https://opencode.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-09T15:39:51.634824745Z"
        },
        "domain": {
          "domain": "opencode.ai",
          "registered": "2022-12-07",
          "source": "https://rdap.identitydigital.services/rdap/domain/opencode.ai",
          "checkedAt": "2026-10-04T13:08:49.460678183Z"
        },
        "pages": [
          {
            "url": "https://opencode.ai/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-09T18:42:43.022134062Z",
            "changedAt": "2026-10-07T18:07:58.575118389Z",
            "fingerprint": "b71cb3507f94"
          },
          {
            "url": "https://opencode.ai/legal/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-09T18:42:45.207694197Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "be82d391bf89"
          },
          {
            "url": "https://opencode.ai/legal/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-09T18:42:47.199084358Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "63cbae74f05e"
          }
        ],
        "updatedAt": "2026-10-09T18:42:47.199084358Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "Factory",
        "b": "Anomaly",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary, under Factory's Terms and Conditions. The `droid` npm package is marked `UNLICENSED` and the public repository holds documentation only. The Python SDK is Apache-2.0",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-08",
        "b": "2026-09-30",
        "name": "Last release"
      },
      {
        "a": "2026-07-14",
        "b": "2026-08-15",
        "name": "Terms last updated"
      },
      {
        "a": "2026-08-20",
        "b": "2026-03-06",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "49 stars, 7.8k npm/wk",
        "b": "211k stars",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "OpenCode scores 67.7 (B) on agent readiness against Droid CLI's 59.1 (C), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Droid CLI or OpenCode?"
      },
      {
        "answer": "No open-source release is listed for Droid CLI. OpenCode is open source (MIT).",
        "question": "Are Droid CLI and OpenCode open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "No incidents deducted, where OpenCode loses 4 points for them"
        ],
        "goodFor": "Teams that want a terminal coding agent with tiered autonomy, command rules and an optional sandbox, and that will pay for a Factory plan.",
        "slug": "droid-cli",
        "watchFor": "No free tier or trial was found. Plans start at $20 a month and included usage is stated only as rolling rate limits without numbers"
      },
      {
        "aheadOn": [
          "Reliability, 68 against 49",
          "Schema \u0026 documentation, 88 against 79",
          "Agent ergonomics, 79 against 72",
          "Payments \u0026 pricing, 60 against 10"
        ],
        "also": [
          "No key needed to call it",
          "Free to start without a card",
          "Open source"
        ],
        "goodFor": "Agents and pipelines that need a scriptable coding agent with a JSON event stream, an HTTP server and any model, including keyless free ones.",
        "slug": "opencode",
        "watchFor": "Most permissions default to allow, and SECURITY.md says the permission system is not a sandbox"
      }
    ],
    "job": {
      "capability": "agent.harness",
      "name": "Agent harnesses"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-droid-cli.json",
        "title": "Aider vs Droid CLI",
        "url": "https://www.anchorterminal.com/compare/aider-vs-droid-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-opencode.json",
        "title": "Aider vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/aider-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amp-vs-droid-cli.json",
        "title": "Amp vs Droid CLI",
        "url": "https://www.anchorterminal.com/compare/amp-vs-droid-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amp-vs-opencode.json",
        "title": "Amp vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/amp-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-droid-cli.json",
        "title": "Claude Code vs Droid CLI",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-droid-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-opencode.json",
        "title": "Claude Code vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cline-vs-droid-cli.json",
        "title": "Cline vs Droid CLI",
        "url": "https://www.anchorterminal.com/compare/cline-vs-droid-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cline-vs-opencode.json",
        "title": "Cline vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/cline-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-droid-cli.json",
        "title": "Cursor CLI vs Droid CLI",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-droid-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-opencode.json",
        "title": "Cursor CLI vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/devin-vs-droid-cli.json",
        "title": "Devin vs Droid CLI",
        "url": "https://www.anchorterminal.com/compare/devin-vs-droid-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/devin-vs-opencode.json",
        "title": "Devin vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/devin-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi.json",
        "title": "Droid CLI vs Pi",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-gemini-cli.json",
        "title": "Droid CLI vs Gemini CLI",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-gemini-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-github-copilot-cli.json",
        "title": "Droid CLI vs GitHub Copilot CLI",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-github-copilot-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-goose.json",
        "title": "Droid CLI vs goose",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-goose"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-kilo-code-cli.json",
        "title": "Droid CLI vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-kiro-cli.json",
        "title": "Droid CLI vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-openai-codex.json",
        "title": "Droid CLI vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-openai-codex"
      },
      {
        "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/droid-cli-vs-prime-agent.json",
        "title": "Droid CLI vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-qwen-code.json",
        "title": "Droid CLI vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-opencode.json",
        "title": "Pi vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-cli-vs-opencode.json",
        "title": "Gemini CLI vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-opencode.json",
        "title": "GitHub Copilot CLI vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-opencode.json",
        "title": "goose vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/goose-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-opencode.json",
        "title": "Kilo Code CLI vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiro-cli-vs-opencode.json",
        "title": "Kiro CLI vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/kiro-cli-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-codex-vs-opencode.json",
        "title": "OpenAI Codex vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/openai-codex-vs-opencode"
      },
      {
        "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/opencode-vs-prime-agent.json",
        "title": "OpenCode vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/opencode-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencode-vs-qwen-code.json",
        "title": "OpenCode vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/opencode-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-paperclip.json",
        "title": "Droid CLI vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-paperclip"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencode-vs-paperclip.json",
        "title": "OpenCode vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/opencode-vs-paperclip"
      }
    ],
    "scores": [
      {
        "by": 19,
        "droid-cli": 49,
        "edge": "opencode",
        "key": "reliability",
        "name": "Reliability",
        "opencode": 68,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 9,
        "droid-cli": 79,
        "edge": "opencode",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "opencode": 88,
        "weight": 13
      },
      {
        "by": 7,
        "droid-cli": 72,
        "edge": "opencode",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "opencode": 79,
        "weight": 13
      },
      {
        "by": 3,
        "droid-cli": 63,
        "edge": "droid-cli",
        "key": "security",
        "name": "Security \u0026 auth",
        "opencode": 60,
        "weight": 14
      },
      {
        "by": 50,
        "droid-cli": 10,
        "edge": "opencode",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "opencode": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "droid-cli": 79,
        "edge": "opencode",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "opencode": 81,
        "weight": 7
      },
      {
        "by": 3,
        "droid-cli": 64,
        "edge": "opencode",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "opencode": 67,
        "weight": 7
      }
    ],
    "summary": "OpenCode scores 67.7 (B) on agent readiness against Droid CLI's 59.1 (C), and leads in 6 of 7 scored categories. Both do agent harnesses.",
    "verdicts": {
      "droid-cli": "`droid exec` is read-only unless `--auto` raises the autonomy level, with command rules, an optional kernel-enforced sandbox, JSON output and documented exit codes. No free tier, status page or security.txt was found, the source is closed, and usage metrics go to Factory by default.",
      "opencode": "Runs with no key or account on free OpenCode Zen models. Most permissions default to allow, and SECURITY.md says the permission system is not a sandbox."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/droid-cli-vs-opencode",
    "json": "https://www.anchorterminal.com/compare/droid-cli-vs-opencode.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/droid-cli-vs-opencode.md",
    "slim": "https://www.anchorterminal.com/compare/droid-cli-vs-opencode.min.md"
  },
  "markdown": "OpenCode scores 67.7 (B) on agent readiness against Droid CLI's 59.1 (C), and leads in 6 of 7 scored categories. Both do agent harnesses.\n\n- Droid CLI: grade C, 59.1/100, rank #560 of 950. Markdown https://www.anchorterminal.com/tools/droid-cli.md · JSON https://www.anchorterminal.com/api/v1/tools/droid-cli.json\n- OpenCode: grade B, 67.7/100, rank #241 of 950. Markdown https://www.anchorterminal.com/tools/opencode.md · JSON https://www.anchorterminal.com/api/v1/tools/opencode.json\n- Best agent harnesses and coding agents: https://www.anchorterminal.com/best/agent-harnesses/index.md\n- All 167 harnesses comparisons: https://www.anchorterminal.com/compare/agent-harnesses/index.md\n\n## Which one, for what\n\n### Droid CLI (C)\n\nGood for: Teams that want a terminal coding agent with tiered autonomy, command rules and an optional sandbox, and that will pay for a Factory plan.\n\nAlso in its favour:\n- No incidents deducted, where OpenCode loses 4 points for them\n\nWatch for: No free tier or trial was found. Plans start at $20 a month and included usage is stated only as rolling rate limits without numbers\n\n### OpenCode (B)\n\nGood for: Agents and pipelines that need a scriptable coding agent with a JSON event stream, an HTTP server and any model, including keyless free ones.\n\nAhead on:\n- Reliability, 68 against 49\n- Schema \u0026 documentation, 88 against 79\n- Agent ergonomics, 79 against 72\n- Payments \u0026 pricing, 60 against 10\n\nAlso in its favour:\n- No key needed to call it\n- Free to start without a card\n- Open source\n\nWatch for: Most permissions default to allow, and SECURITY.md says the permission system is not a sandbox\n\n\n## Score by category\n\n| Category | Weight | Droid CLI | OpenCode | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 49 | 68 | OpenCode +19 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 79 | 88 | OpenCode +9 |\n| Agent ergonomics | 13% (16.2 this run) | 72 | 79 | OpenCode +7 |\n| Security \u0026 auth | 14% (17.5 this run) | 63 | 60 | Droid CLI +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 60 | OpenCode +50 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 79 | 81 | OpenCode +2 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 67 | OpenCode +3 |\n| Negative events | ≤15 | 0 | -4 | |\n| **Total** | | **59.1 · C** | **67.7 · B** | |\n\n## Facts side by side\n\n| Fact | Droid CLI | OpenCode |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | Factory | Anomaly |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  |  |\n| Auth | OAuth or key | None |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | Proprietary, under Factory's Terms and Conditions. The `droid` npm package is marked `UNLICENSED` and the public repository holds documentation only. The Python SDK is Apache-2.0 | MIT |\n| Read-only variant documented | yes | no |\n| llms.txt | yes | no |\n| Last release | 2026-10-08 | 2026-09-30 |\n| Terms last updated | 2026-07-14 | 2026-08-15 |\n| Privacy policy last updated | 2026-08-20 | 2026-03-06 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 49 stars, 7.8k npm/wk | 211k stars |\n| Agent reviews | none | 2/5 (2) |\n\n## Verdicts\n\n**Droid CLI.** `droid exec` is read-only unless `--auto` raises the autonomy level, with command rules, an optional kernel-enforced sandbox, JSON output and documented exit codes. No free tier, status page or security.txt was found, the source is closed, and usage metrics go to Factory by default.\n\n**OpenCode.** Runs with no key or account on free OpenCode Zen models. Most permissions default to allow, and SECURITY.md says the permission system is not a sandbox.\n\n## Before you call either\n\n### Droid CLI\n\n1. Set `FACTORY_API_KEY` (starts `fk-`) from the API keys page in Factory settings for headless runs. Interactive use signs in through a browser\n2. Start with `droid exec` and no flags for analysis. Add `--auto low` for edits and `--auto medium` for installs, tests and local commits\n3. Use `--output-format json` and read `is_error`, `num_turns` and `session_id`. Treat a non-zero exit code as failure\n4. Set `sandbox.enabled` to true before running on untrusted code. In `droid exec` a sandbox violation is denied without a prompt\n5. Pin the version in CI with `npm install -g droid@\u003cversion\u003e`, or set `FACTORY_DROID_AUTO_UPDATE_ENABLED=false` on standalone installs, which update themselves\n\n### OpenCode\n\n1. Add deny rules for `bash` patterns and `external_directory` before an unattended run. Most tools default to allow\n2. Set `\"autoupdate\": false` or `OPENCODE_DISABLE_AUTOUPDATE=1` and pin the version in CI\n3. Configure a provider key. With none, prompts go to free Zen models that may train on them\n4. Set `OPENCODE_SERVER_PASSWORD` before `opencode serve`. Without it the server runs unauthenticated\n5. Use `opencode run --format json` and read the event stream rather than the formatted output\n\n## Questions\n\n### Which is better for AI agents, Droid CLI or OpenCode?\n\nOpenCode scores 67.7 (B) on agent readiness against Droid CLI's 59.1 (C), and leads in 6 of 7 scored categories.\n\n### Are Droid CLI and OpenCode open source?\n\nNo open-source release is listed for Droid CLI. OpenCode is open source (MIT).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/droid-cli-vs-opencode.json, and with the fewest tokens: https://www.anchorterminal.com/compare/droid-cli-vs-opencode.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"droid-cli\", \"b\": \"opencode\"}`. From a terminal: `anchor compare droid-cli opencode`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/droid-cli.json and https://www.anchorterminal.com/api/v1/tools/opencode.json\n\n## Other comparisons with Droid CLI or OpenCode\n\n- [Aider vs Droid CLI](https://www.anchorterminal.com/compare/aider-vs-droid-cli.md)\n- [Aider vs OpenCode](https://www.anchorterminal.com/compare/aider-vs-opencode.md)\n- [Amp vs Droid CLI](https://www.anchorterminal.com/compare/amp-vs-droid-cli.md)\n- [Amp vs OpenCode](https://www.anchorterminal.com/compare/amp-vs-opencode.md)\n- [Claude Code vs Droid CLI](https://www.anchorterminal.com/compare/claude-code-vs-droid-cli.md)\n- [Claude Code vs OpenCode](https://www.anchorterminal.com/compare/claude-code-vs-opencode.md)\n- [Cline vs Droid CLI](https://www.anchorterminal.com/compare/cline-vs-droid-cli.md)\n- [Cline vs OpenCode](https://www.anchorterminal.com/compare/cline-vs-opencode.md)\n- [Cursor CLI vs Droid CLI](https://www.anchorterminal.com/compare/cursor-cli-vs-droid-cli.md)\n- [Cursor CLI vs OpenCode](https://www.anchorterminal.com/compare/cursor-cli-vs-opencode.md)\n- [Devin vs Droid CLI](https://www.anchorterminal.com/compare/devin-vs-droid-cli.md)\n- [Devin vs OpenCode](https://www.anchorterminal.com/compare/devin-vs-opencode.md)\n- [Droid CLI vs Pi](https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi.md)\n- [Droid CLI vs Gemini CLI](https://www.anchorterminal.com/compare/droid-cli-vs-gemini-cli.md)\n- [Droid CLI vs GitHub Copilot CLI](https://www.anchorterminal.com/compare/droid-cli-vs-github-copilot-cli.md)\n- [Droid CLI vs goose](https://www.anchorterminal.com/compare/droid-cli-vs-goose.md)\n- [Droid CLI vs Kilo Code CLI](https://www.anchorterminal.com/compare/droid-cli-vs-kilo-code-cli.md)\n- [Droid CLI vs Kiro CLI](https://www.anchorterminal.com/compare/droid-cli-vs-kiro-cli.md)\n- [Droid CLI vs OpenAI Codex](https://www.anchorterminal.com/compare/droid-cli-vs-openai-codex.md)\n- [Droid CLI vs OpenHands](https://www.anchorterminal.com/compare/droid-cli-vs-openhands.md)\n- [Droid CLI vs Prime Agent](https://www.anchorterminal.com/compare/droid-cli-vs-prime-agent.md)\n- [Droid CLI vs Qwen Code](https://www.anchorterminal.com/compare/droid-cli-vs-qwen-code.md)\n- [Pi vs OpenCode](https://www.anchorterminal.com/compare/earendil-pi-vs-opencode.md)\n- [Gemini CLI vs OpenCode](https://www.anchorterminal.com/compare/gemini-cli-vs-opencode.md)\n- [GitHub Copilot CLI vs OpenCode](https://www.anchorterminal.com/compare/github-copilot-cli-vs-opencode.md)\n- [goose vs OpenCode](https://www.anchorterminal.com/compare/goose-vs-opencode.md)\n- [Kilo Code CLI vs OpenCode](https://www.anchorterminal.com/compare/kilo-code-cli-vs-opencode.md)\n- [Kiro CLI vs OpenCode](https://www.anchorterminal.com/compare/kiro-cli-vs-opencode.md)\n- [OpenAI Codex vs OpenCode](https://www.anchorterminal.com/compare/openai-codex-vs-opencode.md)\n- [OpenCode vs OpenHands](https://www.anchorterminal.com/compare/opencode-vs-openhands.md)\n- [OpenCode vs Prime Agent](https://www.anchorterminal.com/compare/opencode-vs-prime-agent.md)\n- [OpenCode vs Qwen Code](https://www.anchorterminal.com/compare/opencode-vs-qwen-code.md)\n- [Droid CLI vs Paperclip](https://www.anchorterminal.com/compare/droid-cli-vs-paperclip.md)\n- [OpenCode vs Paperclip](https://www.anchorterminal.com/compare/opencode-vs-paperclip.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-10",
    "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"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Droid CLI vs OpenCode",
        "url": ""
      }
    ],
    "description": "OpenCode scores 67.7 (B) to Droid CLI's 59.1 (C) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Droid CLI C 59.1",
      "OpenCode B 67.7",
      "scores"
    ],
    "h1": "Droid CLI vs OpenCode",
    "image": "https://www.anchorterminal.com/assets/og/compare-droid-cli-vs-opencode.png",
    "path": "/compare/droid-cli-vs-opencode",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Droid CLI vs OpenCode for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/droid-cli-vs-opencode"
  },
  "tokens": {
    "markdown": 2500,
    "slim": 630
  },
  "version": 1
}
