{
  "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"
  },
  "tool": {
    "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"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 49,
          "points": 9.8,
          "reason": "Local-package reading, as for the other closed-source harnesses. An install script that verifies a SHA-256 checksum, a PowerShell installer, a Homebrew cask and the `droid` npm package (Node 20 or later) with prebuilt binaries for Linux, macOS and Windows on x64 and arm64 (20). The source is not published. The public repository holds documentation only, so there is no public CI or test suite for the CLI (0). Bugs are tracked in the open at Factory-AI/factory, a repository created on 29 July 2026. On 9 October 2026 it had 33 open issues that are not pull requests, most with no reply, and three closed in the previous week with replies. Runs depend on Factory's servers, and we found no status page (10). Every release has a dated, versioned changelog entry and deprecations get their own section, but the line is 0.x with a minor version almost daily, so the version number does not signal a breaking change (9). The version is 0.237.0. The Feature Maturity page says a feature with no tag is generally available and stable, and the CLI pages carry no tag in the Markdown we read. Judgement call (10). The 99 per cent availability target on factory.com/sla is not scored on this reading."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 79,
          "points": 12.84,
          "reason": "Framework reading. The docs index links an OpenAPI file for the Factory public API, which we did not open, and the headless mode has a documented JSON-RPC surface with named methods. `droid exec --list-tools --output-format json` and `droid rules check --json` give machine-readable output. We found no published schema for the settings file (15). docs.factory.com/llms.txt lists a Markdown copy of every page (10). The overview says when to use the CLI, and the autonomy table says what each level allows, blocks and suits (16). Autonomy levels, output formats, sandbox modes and MCP server fields are enumerated with types and defaults (12). Examples on every page read, exit codes 0, 1 and 2, and a JSON result with `is_error` and `subtype`, with no error catalogue (11). A changelog by CLI version with dates and an RSS feed, 236 entries back to 30 September 2025 (15)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 72,
          "points": 11.7,
          "reason": "Harness reading of the framework line. `--restrict-tools`, `--disabled-tools`, `--additional-tools` and `--list-tools` control built-in tools per run, and `disabledTools` in `mcp.json` keeps named MCP tools out of context. We found nothing on deferred tool loading (18). Output is text, json, stream-json or stream-jsonrpc, and the JSON result carries turns and duration. The `droid exec` help lists no flag for a turn or spend limit (10). Exit codes 0, 1 and 2 are documented, and a run that exceeds its autonomy level stops with a non-zero code and no partial changes, per the docs (15). `--session-id` continues a session, `--fork` branches one, and `--worktree` isolates parallel runs (16). Headless runs are read-only without flags, and TypeScript and Python SDKs wrap the CLI. A run needs a paid Factory account and an API key (13)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 63,
          "points": 11.03,
          "reason": "Harness reading of the framework checklist, as for the other harnesses. 30 for what leaves the machine by default, 20 for approvals and sandboxing, 15 for prompt-injection posture, 15 for audit and 20 for the security programme. The agent loop runs locally and the docs say no copy of the repository is uploaded or indexed. Prompts and context go to the model endpoints. Usage metrics go to Factory's collector by default, with no opt-out in the pages read outside an airgapped deployment, and message content is never sent to it. The security page says code is not used as training data. Zero data retention is listed as a Business plan item. Headless runs use a long-lived `fk-` key (17). `droid exec` is read-only by default, autonomy has four levels, permission rules allow, ask or block commands, and an OS sandbox confines commands with Seatbelt or bubblewrap and a network proxy. The sandbox is off by default and `--skip-permissions-unsafe` skips every prompt (16). The sandbox page names prompt injection and states what the sandbox does not stop, MCP approvals are bound to the server's command or URL, and Droid Shield scans commits for secrets. The Agent Safety page was not read (9). An organisation audit log, OpenTelemetry export and session tags exist, with audit logging listed from the Business plan up (10). A disclosure address (security@factory.com), SOC 2 and ISO 42001 named on the security page, and Security sections in the changelog. No security.txt, no bug bounty and no published advisories were found, and the trust centre was not readable (11)."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 10,
          "points": 1.25,
          "reason": "Harness reading of the published rubric. This is paid, closed software tied to a subscription, so the self-hosted rule does not apply. No payment protocol (0). Plan prices are public, $20, $100 and $200 a month for individuals and $60 a team plus $40 a seat for Teams, but included usage is given only as rolling rate limits and multiples of Pro (10). No free tier or trial was found on the pricing pages. Using your own model key is free up to an allowance, but only on a paid plan (0). A person signs in through a browser to subscribe and to create the API key. The Service Accounts API can issue keys only inside an existing organisation (0)."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 79,
          "points": 6.91,
          "reason": "The changelog's newest entry is CLI v0.236.0 of 8 October 2026, and npm and the install script served 0.237.0 on 9 October 2026 (30). 62 dated changelog entries between 11 July and 8 October 2026 (20). The public tracker had 33 open issues that are not pull requests on 9 October 2026, most with no reply, and three closed in the previous week after two or three comments. Support is also by email and Discord, where reply times are not visible (9). The Python SDK was at 0.5.0 on 24 September 2026 and the TypeScript SDK repository was last changed on 16 September 2026 (15). The npm package is published from GitHub Actions through a trusted publisher and the installer checks a checksum. There is no public CI for the CLI (5)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 64,
          "points": 5.6,
          "note": "editorial 55, provenance 72",
          "reason": "Closed source under terms from The San Francisco AI Factory, Inc., last updated 14 July 2026. The npm package is marked `UNLICENSED` and the Python SDK is Apache-2.0 (15). The Data Flows page says where code, prompts and telemetry go in each deployment pattern, and the privacy policy (20 August 2026) lists service providers with the place of processing and keeps personal data up to 10 years after last use. Retention of Factory's operational logs is left to the trust centre, which we could not read, and whether session transcripts are stored in Factory's cloud on individual plans was not established (17). The terms promise commercially reasonable efforts to give 60 days' notice of major changes, the changelog has Deprecations sections, and the old command lists are deprecated but still honoured. A model retirement appeared in the changelog on the day it took effect, 11 August 2026 (12). The telemetry reference documents each metric and what reaches Factory, and `telemetry.granularity` can strip user identity. Metrics to Factory are on by default, with no opt-out found outside an airgapped deployment (11)."
        }
      ],
      "assessment": {
        "date": "2026-10-09",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "Harness reading of the framework line. `--restrict-tools`, `--disabled-tools`, `--additional-tools` and `--list-tools` control built-in tools per run, and `disabledTools` in `mcp.json` keeps named MCP tools out of context. We found nothing on deferred tool loading (18). Output is text, json, stream-json or stream-jsonrpc, and the JSON result carries turns and duration. The `droid exec` help lists no flag for a turn or spend limit (10). Exit codes 0, 1 and 2 are documented, and a run that exceeds its autonomy level stops with a non-zero code and no partial changes, per the docs (15). `--session-id` continues a session, `--fork` branches one, and `--worktree` isolates parallel runs (16). Headless runs are read-only without flags, and TypeScript and Python SDKs wrap the CLI. A run needs a paid Factory account and an API key (13).",
          "maintenance": "The changelog's newest entry is CLI v0.236.0 of 8 October 2026, and npm and the install script served 0.237.0 on 9 October 2026 (30). 62 dated changelog entries between 11 July and 8 October 2026 (20). The public tracker had 33 open issues that are not pull requests on 9 October 2026, most with no reply, and three closed in the previous week after two or three comments. Support is also by email and Discord, where reply times are not visible (9). The Python SDK was at 0.5.0 on 24 September 2026 and the TypeScript SDK repository was last changed on 16 September 2026 (15). The npm package is published from GitHub Actions through a trusted publisher and the installer checks a checksum. There is no public CI for the CLI (5).",
          "payments": "Harness reading of the published rubric. This is paid, closed software tied to a subscription, so the self-hosted rule does not apply. No payment protocol (0). Plan prices are public, $20, $100 and $200 a month for individuals and $60 a team plus $40 a seat for Teams, but included usage is given only as rolling rate limits and multiples of Pro (10). No free tier or trial was found on the pricing pages. Using your own model key is free up to an allowance, but only on a paid plan (0). A person signs in through a browser to subscribe and to create the API key. The Service Accounts API can issue keys only inside an existing organisation (0).",
          "reliability": "Local-package reading, as for the other closed-source harnesses. An install script that verifies a SHA-256 checksum, a PowerShell installer, a Homebrew cask and the `droid` npm package (Node 20 or later) with prebuilt binaries for Linux, macOS and Windows on x64 and arm64 (20). The source is not published. The public repository holds documentation only, so there is no public CI or test suite for the CLI (0). Bugs are tracked in the open at Factory-AI/factory, a repository created on 29 July 2026. On 9 October 2026 it had 33 open issues that are not pull requests, most with no reply, and three closed in the previous week with replies. Runs depend on Factory's servers, and we found no status page (10). Every release has a dated, versioned changelog entry and deprecations get their own section, but the line is 0.x with a minor version almost daily, so the version number does not signal a breaking change (9). The version is 0.237.0. The Feature Maturity page says a feature with no tag is generally available and stable, and the CLI pages carry no tag in the Markdown we read. Judgement call (10). The 99 per cent availability target on factory.com/sla is not scored on this reading.",
          "schema": "Framework reading. The docs index links an OpenAPI file for the Factory public API, which we did not open, and the headless mode has a documented JSON-RPC surface with named methods. `droid exec --list-tools --output-format json` and `droid rules check --json` give machine-readable output. We found no published schema for the settings file (15). docs.factory.com/llms.txt lists a Markdown copy of every page (10). The overview says when to use the CLI, and the autonomy table says what each level allows, blocks and suits (16). Autonomy levels, output formats, sandbox modes and MCP server fields are enumerated with types and defaults (12). Examples on every page read, exit codes 0, 1 and 2, and a JSON result with `is_error` and `subtype`, with no error catalogue (11). A changelog by CLI version with dates and an RSS feed, 236 entries back to 30 September 2025 (15).",
          "security": "Harness reading of the framework checklist, as for the other harnesses. 30 for what leaves the machine by default, 20 for approvals and sandboxing, 15 for prompt-injection posture, 15 for audit and 20 for the security programme. The agent loop runs locally and the docs say no copy of the repository is uploaded or indexed. Prompts and context go to the model endpoints. Usage metrics go to Factory's collector by default, with no opt-out in the pages read outside an airgapped deployment, and message content is never sent to it. The security page says code is not used as training data. Zero data retention is listed as a Business plan item. Headless runs use a long-lived `fk-` key (17). `droid exec` is read-only by default, autonomy has four levels, permission rules allow, ask or block commands, and an OS sandbox confines commands with Seatbelt or bubblewrap and a network proxy. The sandbox is off by default and `--skip-permissions-unsafe` skips every prompt (16). The sandbox page names prompt injection and states what the sandbox does not stop, MCP approvals are bound to the server's command or URL, and Droid Shield scans commits for secrets. The Agent Safety page was not read (9). An organisation audit log, OpenTelemetry export and session tags exist, with audit logging listed from the Business plan up (10). A disclosure address (security@factory.com), SOC 2 and ISO 42001 named on the security page, and Security sections in the changelog. No security.txt, no bug bounty and no published advisories were found, and the trust centre was not readable (11).",
          "transparency": "Closed source under terms from The San Francisco AI Factory, Inc., last updated 14 July 2026. The npm package is marked `UNLICENSED` and the Python SDK is Apache-2.0 (15). The Data Flows page says where code, prompts and telemetry go in each deployment pattern, and the privacy policy (20 August 2026) lists service providers with the place of processing and keeps personal data up to 10 years after last use. Retention of Factory's operational logs is left to the trust centre, which we could not read, and whether session transcripts are stored in Factory's cloud on individual plans was not established (17). The terms promise commercially reasonable efforts to give 60 days' notice of major changes, the changelog has Deprecations sections, and the old command lists are deprecated but still honoured. A model retirement appeared in the changelog on the day it took effect, 11 August 2026 (12). The telemetry reference documents each metric and what reaches Factory, and `telemetry.granularity` can strip user identity. Metrics to Factory are on by default, with no opt-out found outside an airgapped deployment (11)."
        },
        "sources": [
          {
            "what": "docs index for agents",
            "url": "https://docs.factory.com/llms.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "CLI overview",
            "url": "https://docs.factory.com/droid-cli/overview.md",
            "seen": "2026-10-09"
          },
          {
            "what": "CLI quickstart",
            "url": "https://docs.factory.com/droid-cli/quickstart.md",
            "seen": "2026-10-09"
          },
          {
            "what": "CLI reference, with install, flags, authentication, updates and exit codes",
            "url": "https://docs.factory.com/droid-cli/cli-reference.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Droid Exec (headless)",
            "url": "https://docs.factory.com/droid-exec/overview.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Autonomy Level",
            "url": "https://docs.factory.com/autonomy-and-safety/auto-run.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Sandbox",
            "url": "https://docs.factory.com/autonomy-and-safety/sandbox.md",
            "seen": "2026-10-09"
          },
          {
            "what": "MCP",
            "url": "https://docs.factory.com/harness/mcp.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Security",
            "url": "https://docs.factory.com/enterprise/security.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Data Flows and Privacy",
            "url": "https://docs.factory.com/enterprise/privacy-and-data-flows.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Telemetry Privacy Controls",
            "url": "https://docs.factory.com/enterprise/telemetry/privacy.md",
            "seen": "2026-10-09"
          },
          {
            "what": "full changelog",
            "url": "https://docs.factory.com/changelog/release-notes.md",
            "seen": "2026-10-09"
          },
          {
            "what": "Feature Maturity",
            "url": "https://docs.factory.com/changelog/feature-maturity.md",
            "seen": "2026-10-09"
          },
          {
            "what": "individual plans",
            "url": "https://docs.factory.com/pricing/individuals.md",
            "seen": "2026-10-09"
          },
          {
            "what": "support channels",
            "url": "https://docs.factory.com/support.md",
            "seen": "2026-10-09"
          },
          {
            "what": "pricing page",
            "url": "https://factory.com/pricing",
            "seen": "2026-10-09"
          },
          {
            "what": "Terms and Conditions (Individual Plans), updated 14 July 2026",
            "url": "https://factory.com/legal/terms-individual",
            "seen": "2026-10-09"
          },
          {
            "what": "privacy policy, updated 20 August 2026",
            "url": "https://factory.com/privacy-policy",
            "seen": "2026-10-09"
          },
          {
            "what": "security page",
            "url": "https://factory.com/security",
            "seen": "2026-10-09"
          },
          {
            "what": "SLA, updated 29 April 2026",
            "url": "https://factory.com/sla",
            "seen": "2026-10-09"
          },
          {
            "what": "security.txt, answered 404",
            "url": "https://factory.com/.well-known/security.txt",
            "seen": "2026-10-09"
          },
          {
            "what": "install script, read and not run",
            "url": "https://app.factory.ai/cli",
            "seen": "2026-10-09"
          },
          {
            "what": "npm manifest for `droid` 0.237.0",
            "url": "https://registry.npmjs.org/droid/latest",
            "seen": "2026-10-09"
          },
          {
            "what": "npm downloads, 1 to 7 October 2026",
            "url": "https://api.npmjs.org/downloads/point/last-week/droid",
            "seen": "2026-10-09"
          },
          {
            "what": "public repository, cloned",
            "url": "https://github.com/Factory-AI/factory",
            "seen": "2026-10-09"
          },
          {
            "what": "open and closed issues, through the GitHub API",
            "url": "https://github.com/Factory-AI/factory/issues",
            "seen": "2026-10-09"
          },
          {
            "what": "Python SDK repository, cloned",
            "url": "https://github.com/Factory-AI/droid-sdk-python",
            "seen": "2026-10-09"
          },
          {
            "what": "TypeScript SDK repository, cloned",
            "url": "https://github.com/Factory-AI/droid-sdk-typescript",
            "seen": "2026-10-09"
          },
          {
            "what": "RDAP record for factory.com",
            "url": "https://rdap.verisign.com/com/v1/domain/factory.com",
            "seen": "2026-10-09"
          }
        ],
        "openQuestions": [
          "unchecked: the trust centre at trust.factory.com, which is drawn by script. The subprocessor list, the SOC 2 report type and period, and log retention periods were not read",
          "unchecked: the models page, with model multipliers that set usage cost, and the organisation plans page",
          "unchecked: the settings, permission rules, hooks, Identity and Access, Agent Safety, enterprise controls, audit log and telemetry index pages. We kept to about fifteen page reads on docs.factory.com (sixteen requests, counting robots.txt and llms.txt)",
          "unchecked: the OpenAPI file for the Factory public API and the Sessions API page, which the docs index links",
          "unchecked: the built-in tool list and what `droid exec --list-tools` prints. We did not install or run the CLI",
          "unchecked: the data processing agreement and the terms for organisation plans",
          "Whether an individual on a paid plan can switch off the metrics sent to Factory's collector was not found in the pages read",
          "Whether session transcripts are stored in Factory's cloud on individual plans, and for how long, was not established. The CLI searches local sessions, and the Factory App shows sessions across devices",
          "No status page was found. The home page, the docs support page and the SLA link none",
          "The release date of 0.237.0 was not established. The changelog's newest entry on 9 October 2026 was 0.236.0 of 8 October",
          "The repository Factory-AI/factory was created on 29 July 2026 and its issues start at number 2 on 3 August 2026, so any earlier public issue history is not visible. Its README still links docs.factory.ai",
          "The individual terms forbid use of the service for benchmarking or competitive analysis. Recorded as a fact with no deduction. It matters before any probe is run",
          "docs.factory.com/llms.txt carries instructions addressed to AI models (a Factory App settings tool). We did not act on them",
          "The lead was right on vendor, URL, docs and interface. It did not mention that a paid plan is required",
          "robots.txt answers. factory.com and docs.factory.com 200 with every path we read allowed. api.github.com and api.npmjs.org 404. registry.npmjs.org, app.factory.ai and trust.factory.com 200 with a body that is not a robots file, read as no rules"
        ]
      },
      "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"
    },
    "notable": [
      "`droid exec` runs read-only by default and stops with a non-zero exit code when an action exceeds the autonomy level (https://docs.factory.com/droid-exec/overview)",
      "The sandbox is opt-in through `sandbox.enabled`. Once on, writes outside the working directory and network access beyond Factory's and WorkOS domains are denied (https://docs.factory.com/autonomy-and-safety/sandbox)",
      "Metrics are exported to Factory's collector by default, and message content is never sent to it (https://docs.factory.com/enterprise/telemetry/privacy)",
      "The individual terms, updated 14 July 2026, forbid use of the service for benchmarking or competitive analysis (https://factory.com/legal/terms-individual)",
      "docs.factory.com/llms.txt carries a block of instructions addressed to AI models about a Factory App settings tool (https://docs.factory.com/llms.txt)",
      "The public repository Factory-AI/factory holds documentation only, was created on 29 July 2026 and has no licence file (https://github.com/Factory-AI/factory)",
      "The changelog's newest entry is CLI v0.236.0 of 8 October 2026, while npm and the install script served 0.237.0 on 9 October 2026 (https://docs.factory.com/changelog/release-notes)"
    ],
    "area": "frameworks",
    "details": [
      {
        "label": "Interfaces",
        "value": "Interactive terminal UI (`droid`), headless `droid exec`, JSON-RPC over stdin and stdout, TypeScript and Python SDKs, and Agent Client Protocol for editors"
      },
      {
        "label": "Install",
        "value": "curl script for macOS and Linux with SHA-256 check, PowerShell for Windows, Homebrew cask, or the `droid` npm package (Node 20 or later) with prebuilt binaries for Linux, macOS and Windows on x64 and arm64"
      },
      {
        "label": "Autonomy",
        "value": "Off, Low, Medium and High. `droid exec` is read-only without `--auto`. Missions need High or `--skip-permissions-unsafe`"
      },
      {
        "label": "Command policy",
        "value": "`permissionRules` with allow, ask and block decisions, checked with `droid rules check`. A block applies even under `--skip-permissions-unsafe`"
      },
      {
        "label": "Sandbox",
        "value": "Off by default. Seatbelt on macOS, bubblewrap with seccomp on Linux and WSL2, and a filtering proxy for network. Modes `per-command` (default) and `whole-process`"
      },
      {
        "label": "MCP client",
        "value": "`droid mcp add` for http, sse and stdio servers, OAuth with dynamic client registration, `disabledTools` per server, approvals bound to the server's command or URL, and an organisation allowlist"
      },
      {
        "label": "Headless",
        "value": "`droid exec` with text, json, stream-json and stream-jsonrpc output, `--session-id`, `--fork`, `--worktree`, `--restrict-tools` and `--disabled-tools`. Exit codes 0, 1 and 2"
      },
      {
        "label": "Models",
        "value": "Factory-managed models chosen with `--model`, or custom models in `~/.factory/settings.json` with your own key and base URL"
      },
      {
        "label": "Telemetry",
        "value": "OpenTelemetry metrics to Factory's collector by default and to your own collector when configured. Message content goes only to your own collector and only when switched on"
      },
      {
        "label": "Updates",
        "value": "Standalone installs update themselves. The npm build has updates off. `droid update --version` selects or rolls back a version"
      }
    ],
    "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,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "The San Francisco AI Factory, Inc.",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "factory.com, registered 1999-03-09 (27 years)",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "no hosted endpoint",
          "points": 0,
          "max": 0,
          "state": "na"
        },
        {
          "check": "Terms of service",
          "value": "read, states 5 of the 7 things a reader expects, and has 1 clause that costs points",
          "points": 6.3,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 8 of the 8 things a reader expects",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Status page",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://factory.com/legal/terms-individual",
          "state": "read",
          "readAt": "2026-10-09",
          "statedDate": "2026-07-14",
          "words": 4692,
          "points": 6.3,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "LAST UPDATE: July 14, 2026",
              "says": "Last updated 2026-07-14"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "This Agreement shall be governed by the laws of the State of California without regard to its conflict of laws provisions.",
              "says": "The law of the State of California"
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "Factory's liability shall be limited to the proper functioning of the Local Software itself, and shall not include, without limitations, the consequences of Commands executed within the Customer Environment, except to the extent caused by the gross negligence or willful misconduct of Factory."
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "Factory may choose to bill through an invoice, in which case, full payment for invoices issued in any given month must be received by Factory thirty (30) days after the mailing date of the invoice, or the Services may be terminated."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": false
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "Customer will not (and will not allow any third party to), directly or indirectly: reverse engineer, decompile, disassemble or otherwise attempt to discover the source code, object code or underlying structure, ideas or algorithms of the Services (or any underlying software, documentation or data related to the Servic…"
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": false
            }
          ],
          "toKnow": [
            {
              "key": "terms.benchmark",
              "label": "Restricts benchmarking or competitive use",
              "found": true,
              "quote": "Customer may not use or display the Service in competition with Factory, to develop competing products or services, for benchmarking or competitive analysis of the Service, or otherwise to our detriment or disadvantage.",
              "costsPoints": true
            },
            {
              "key": "terms.arbitration",
              "label": "Requires arbitration or waives class actions",
              "found": true,
              "quote": "THIS AGREEMENT REQUIRES THE USE OF BINDING ARBITRATION TO RESOLVE DISPUTES RATHER THAN JURY TRIALS OR CLASS ACTIONS, IN ACCORDANCE WITH SECTION 11 (DISPUTE RESOLUTION) BELOW."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "Factory's liability for the local software excludes the consequences of commands run in the customer's environment, except where caused by its gross negligence or wilful misconduct.",
              "quote": "Factory's liability shall be limited to the proper functioning of the Local Software itself, and shall not include, without limitations, the consequences of Commands executed within the Customer Environment, except to the extent caused by the gross negligence or willful misconduct of Factory."
            },
            {
              "date": "2026-10-08",
              "text": "Factory may name the customer as a reference account and display its trademarks and logo in promotional materials.",
              "quote": "Customer agrees that Factory may identify Customer as a reference account and use, reproduce, and display Customer’s trademarks and logo, collectively referred to as Marks, in Factory's promotional materials, including but not limited to the display of Customer’s Marks on Factory's website."
            },
            {
              "date": "2026-10-08",
              "text": "Fees for a renewal term are charged at Factory's standard rates at that time unless the Order states otherwise.",
              "quote": "The fees for any renewal term shall be at Factory’s then standard rates currently in effect, or if applicable, as otherwise stated in the Order"
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://factory.com/privacy-policy",
          "state": "read",
          "readAt": "2026-10-09",
          "statedDate": "2026-08-20",
          "words": 3626,
          "points": 10,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "LAST UPDATE: August 20, 2026",
              "says": "Last updated 2026-08-20"
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "Our privacy policy outlines how we collect, use, and protect your personal information."
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "We will delete your personal data from our archives no later than 10 years from the last time you used Factory or as agreed with you in a separate contract.",
              "says": "Names a period of 10 years"
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "We may share information in specific situations and with specific categories of third parties."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "The business or commercial purpose for collecting, selling and/or sharing personal information;"
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "You can exercise your rights by sending us an email at security@factory.ai."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": true,
              "quote": "Residents of the UK or Europe: If you reside in the UK or Europe, you may contact our Data Protection Officer at security@factory.ai to exercise any of your privacy rights.",
              "says": "security@factory.ai"
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "Where personal data is transferred to a third party in the United States, we take steps to ensure we agree to the standard contractual clauses with them.",
              "says": "Relies on standard contractual clauses"
            }
          ],
          "toKnow": [
            {
              "key": "privacy.sells",
              "label": "Says it sells personal data or shares it for advertising",
              "found": true,
              "quote": "Our use of some of these services may be classified under California law as a \"selling\" or \"sharing\" your personal information (including your business and personal contact information, device data, and online activity data described herein) with the advertising partners that provide the services."
            }
          ]
        }
      ]
    },
    "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"
    }
  }
}
