{
  "data": {
    "a": {
      "slug": "earendil-pi",
      "name": "Pi",
      "vendor": "Earendil",
      "vendorUrl": "https://pi.dev",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Pi is an open-source terminal coding agent from Earendil, run on the owner's machine with any of 15 or more model providers. It has interactive, print, JSON and RPC modes, a TypeScript SDK and a built-in MCP client.",
      "url": "https://www.anchorterminal.com/tools/earendil-pi",
      "markdownUrl": "https://www.anchorterminal.com/tools/earendil-pi.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/earendil-pi.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/earendil-pi.json",
      "repo": "https://github.com/earendil-works/pi",
      "license": "MIT",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@earendil-works/pi-coding-agent"
        }
      ],
      "auth": "none",
      "authNotes": "No Pi account needed. Model providers are connected with `/login` (a subscription or an API key, stored in `~/.pi/agent/auth.json`) or with environment variables such as `ANTHROPIC_API_KEY`. MCP servers take headers, bearer tokens from the environment or OAuth, with tokens kept in `~/.pi/agent/mcp-auth.json`. Radius, the optional hosted gateway, needs its own sign-in or `RADIUS_API_KEY`.",
      "pricing": "free",
      "pricingNotes": "Free and MIT, with no paid edition of the harness. The owner pays the model provider. Radius, Earendil's optional hosted gateway, is an early alpha sold by prepaid credits, and no public price list was found (checked 2026-10-08).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the repository or the docs (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 113417,
        "npmWeekly": 5201697,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://pi.dev/docs/latest",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client"
      ],
      "tags": [
        "open-source",
        "local",
        "free",
        "no-card",
        "typescript",
        "mcp",
        "json-output",
        "rpc",
        "no-sandbox"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68.4,
        "grade": "B",
        "agentReady": false,
        "rank": 233,
        "ranked": true,
        "rankOf": 1146,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 87,
          "payments": 60,
          "reliability": 75,
          "schema": 84,
          "security": 61,
          "transparency": 64
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-06-08. GHSA-jfgx-wxx8-mp94 (CVE-2026-54328, high). Temporary extension installs used predictable paths under the system temp directory, so another local user on a shared Linux host could plant extension code that Pi then loaded. Fixed in 0.78.1. Fixed, published and four months old, -2. https://github.com/earendil-works/pi/security/advisories/GHSA-jfgx-wxx8-mp94",
          "2026-06-08. GHSA-mqxh-6gq7-558m (CVE-2026-54325, medium). Before 0.79.0 Pi loaded a repository's `.pi` settings and extensions without asking, so starting it in a cloned repository could run that repository's code. Fixed in 0.79.0 with project trust. Fixed and published, -2. https://github.com/earendil-works/pi/security/advisories/GHSA-mqxh-6gq7-558m",
          "2026-06-08. GHSA-7v5m-pr3q-6453 (CVE-2026-54326, low, XSS in HTML session exports) and GHSA-r95r-rj6r-c39x (CVE-2026-54327, low, a race in `auth.json` permissions). Both fixed in 0.78.1. Recorded without a deduction. https://github.com/earendil-works/pi/security/advisories"
        ],
        "verdict": "Four default tools, a JSONL event stream, an RPC mode and MCP tools kept out of the model's declarations by default keep context small and scripting simple. Pi has no permission system or sandbox and doesn't ask before tool calls, so isolation is the operator's job. Version 1.0.0 is dated 1 October 2026.",
        "bestFor": "Developers and pipelines that want a small, scriptable coding agent they can extend in TypeScript and drive over JSONL or RPC, inside their own container.",
        "strengths": [
          "Four default tools (read, bash, edit, write), with MCP tools reachable through codemode scripts and not declared to the model by default",
          "`--mode json` streams JSONL events and `--mode rpc` takes JSONL commands, both documented record by record, with a Python client example",
          "Built-in MCP client for stdio and streamable HTTP servers with OAuth, per-tool exposure settings and a conformance job in CI",
          "Project trust stops a repository's `.pi` settings, extensions and MCP servers loading until approved, and non-interactive modes skip them by default",
          "npm releases carry SLSA provenance from GitHub Actions trusted publishing, and the installer pins transitive dependencies"
        ],
        "weaknesses": [
          "No permission system or sandbox. Tool calls run with the user's rights and without an approval prompt",
          "An anonymous install and update ping to pi.dev and a latest-version request are on by default",
          "Four advisories published on 8 June 2026, one rated high and one medium, all fixed by 0.79.0",
          "No privacy policy for pi.dev or the CLI found, and pi.dev has no security.txt",
          "Eight of the last 15 CI runs on main failed on 7 and 8 October 2026, and a breaking provider rename shipped in patch release 1.0.3"
        ],
        "agentNotes": [
          "Run Pi inside a container or VM for unattended work. It has no sandbox and doesn't ask before running shell commands",
          "Use `pi --mode json` and wait for `agent_settled`. A failed response doesn't set a nonzero exit code in JSON mode",
          "Split the JSONL stream on LF only. Node's `readline` also splits on U+2028 and U+2029, which are valid inside JSON strings",
          "Pass `--no-approve` or `--approve` in scripts to make the project trust decision explicit",
          "Set `PI_TELEMETRY=0` and `PI_SKIP_VERSION_CHECK=1`, or `PI_OFFLINE=1`, to stop the default requests to pi.dev"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68.4
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 87,
          "payments": 60,
          "reliability": 75,
          "schema": 84,
          "security": 61,
          "transparency": 64
        },
        "provenanceScore": 63
      },
      "connect": {
        "install": "curl -fsSL https://pi.dev/install.sh | sh   # or: npm install -g --ignore-scripts @earendil-works/pi-coding-agent",
        "headless": {
          "command": "pi --mode json --no-session --no-approve \"$TASK\"",
          "env": {
            "PI_SKIP_VERSION_CHECK": "1",
            "PI_TELEMETRY": "0"
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/earendil-pi"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Earendil Inc.",
        "domain": "pi.dev",
        "domainRegistered": "2024-01-30",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://pi.dev/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The pi.dev and earendil.com footers read Earendil Inc. The Radius alpha terms of 1 September 2026 name Earendil Works Co., and the README calls the company Earendil Works.",
          "We found no terms or privacy page for pi.dev or the CLI. pi.dev/terms, pi.dev/privacy and earendil.com/privacy return 404. Terms exist only for Radius, at radius.earendil.com/terms.",
          "pi.dev/.well-known/security.txt and earendil.com/.well-known/security.txt return 404. SECURITY.md gives security@earendil.com and GitHub private reporting.",
          "RDAP for pi.dev gives a registration date of 2024-01-30 with Cloudflare as registrar. The README says the domain was donated by exe.dev.",
          "The repository moved from badlogic/pi-mono to earendil-works/pi, and the npm package from @mariozechner/pi-coding-agent to @earendil-works/pi-coding-agent at 0.74.0, per the advisories."
        ],
        "score": 63
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/earendil-pi.json",
      "live": {
        "slug": "earendil-pi",
        "versions": [
          {
            "registry": "github",
            "name": "earendil-works/pi",
            "version": "v1.3.0",
            "released": "2026-10-15",
            "seenAt": "2026-10-18T02:44:53.997039564Z"
          },
          {
            "registry": "npm",
            "name": "@earendil-works/pi-coding-agent",
            "version": "1.3.0",
            "seenAt": "2026-10-18T02:44:53.784724198Z"
          }
        ],
        "githubStars": 115982,
        "npmWeekly": 2612036,
        "securityTxt": {
          "url": "https://pi.dev/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-18T15:53:35.560404115Z"
        },
        "domain": {
          "domain": "pi.dev",
          "registered": "2024-01-30",
          "source": "https://pubapi.registry.google/rdap/domain/pi.dev",
          "checkedAt": "2026-10-18T13:28:47.513502795Z"
        },
        "pages": [
          {
            "url": "https://pi.dev/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-18T23:35:04.783143423Z",
            "changedAt": "2026-10-16T22:28:32.441702707Z",
            "fingerprint": "2c7a827b9676"
          }
        ],
        "updatedAt": "2026-10-18T23:35:04.783143423Z"
      }
    },
    "answer": "Pi scores 68.4 (B) on agent readiness against Qoder CLI's 59.3 (C), and leads in 5 of 7 scored categories.",
    "b": {
      "slug": "qoder-cli",
      "name": "Qoder CLI",
      "vendor": "Qoder (BRIGHT ZENITH PRIVATE LIMITED)",
      "vendorUrl": "https://qoder.com/cli",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Qoder's terminal coding agent. It reads and edits files, runs commands and calls MCP servers under permission rules, with a `-p` headless mode, an Agent Client Protocol server and a TypeScript and Python Agent SDK. Needs a Qoder account.",
      "url": "https://www.anchorterminal.com/tools/qoder-cli",
      "markdownUrl": "https://www.anchorterminal.com/tools/qoder-cli.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/qoder-cli.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/qoder-cli.json",
      "license": "Proprietary, under the Qoder Terms of Service (BRIGHT ZENITH PRIVATE LIMITED, last updated 29 April 2026). No source is published, and the Agent SDK's LICENSE file points to the same terms",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@qoder-ai/qodercli"
        },
        {
          "registry": "npm",
          "name": "@qoder-ai/qoder-agent-sdk"
        },
        {
          "registry": "pypi",
          "name": "qoder-agent-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "`/login` or `qoder login` through a browser on a Qoder account, with background token refresh, or a Personal Access Token in `QODER_PERSONAL_ACCESS_TOKEN` for CI, ACP clients and the SDK. A PAT is created at qoder.com/account/integrations with chosen permissions and an expiry, and can be revoked. Organisations can use service accounts with scoped tokens.",
      "pricing": "freemium",
      "pricingNotes": "Free gives basic models for a limited number of messages and a 14-day Pro trial with 300 credits. Pro is $20 a month (2,000 credits), Pro+ $60 (6,000) and Ultra $200 (20,000). Credit Packs cost $20 for 1,500 credits and expire after a month. Teams is $40 a seat a month with 3,000 credits, Enterprise $20 a seat with credits bought separately (checked 2026-10-18).",
      "priceSummary": "$20 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the CLI or SDK docs, the pricing docs or the CLI release notes (checked 2026-10-18).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 4996,
        "pypiWeekly": null,
        "asOf": "2026-10-18"
      },
      "docsUrl": "https://docs.qoder.com/cli/overview",
      "llmsTxt": "https://docs.qoder.com/llms.txt",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "official",
        "harness",
        "coding-agent",
        "cli",
        "closed-source",
        "mcp",
        "acp",
        "llms-txt",
        "telemetry-default-on",
        "free-tier"
      ],
      "lastRelease": "2026-10-16",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.3,
        "grade": "C",
        "agentReady": false,
        "rank": 609,
        "ranked": true,
        "rankOf": 1146,
        "categoryRank": 19,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 80,
          "maintenance": 72,
          "payments": 35,
          "reliability": 51,
          "schema": 81,
          "security": 55,
          "transparency": 64
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-18"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-09-19. CLI 1.1.57 fixed \"a security issue where internal Git calls could execute repository configuration commands\", so opening an untrusted repository could run commands from its Git configuration. Fixed within the month and disclosed only as a release-note line, with no advisory, affected versions or CVE found. Inside six months, -2 (https://docs.qoder.com/release-notes/qoder-cli.md)",
          "2026-07-16. CLI 1.0.47 fixed the PreToolUse hook not taking effect in headless and SDK modes. The permissions page describes that hook as an interception that holds even in YOLO mode, so headless and SDK runs before the fix skipped organisation hooks. Fixed and noted in the release notes. Judgement call, -1 (https://docs.qoder.com/release-notes/qoder-cli.md)"
        ],
        "verdict": "A closed-source terminal agent with a documented headless mode, an ACP server, typed TypeScript and Python SDKs and near-daily releases. Permission rules and modes are detailed, but no local sandbox is documented, usage statistics are on by default, and security fixes appear only as one-line release notes with no advisories or disclosure policy.",
        "bestFor": "Developers already on Qoder who want the same agent in a terminal, in CI through a PAT, in Zed through ACP, or embedded through the Agent SDK.",
        "strengths": [
          "Headless `-p` with text, json and stream-json output, `--max-turns`, and ask turned into deny",
          "Agent SDK for TypeScript and Python that drives the CLI with approval callbacks, hooks and session control",
          "Documented exit codes and Result error subtypes for scripts and SDK hosts",
          "Personal Access Tokens with chosen permissions and expiry, and scoped service accounts for organisations",
          "74 dated releases in the 90 days to 16 October 2026"
        ],
        "weaknesses": [
          "No local sandbox is documented, and `auto` mode approves read-only tools on any path",
          "Usage and AI code statistics are on by default, and content use for improvement depends on the plan",
          "Closed source with no public CI, issue tracker or security advisories, and the audit log leaves out CLI execution",
          "No security.txt, disclosure policy or status page found",
          "Agent SDK release notes stop at 1.0.41 on 15 September while npm has 1.0.53"
        ],
        "agentNotes": [
          "Set `QODER_PERSONAL_ACCESS_TOKEN` in CI. The browser sign-in can't complete in a headless run",
          "Pass `--permission-mode` with `--allowed-tools` in headless runs. Every ask is denied, and `--yolo` removes all checks",
          "Set `--max-turns` on unattended runs, and branch on exit codes 41 (authentication) and 53 (turn limit)",
          "Set `privacy.usageStatisticsEnabled` and `aiCodeStatistics.enabled` to false in ~/.qoder/settings.json if usage data must stay local",
          "Don't pass `--model lite`. The Lite tier was removed on 18 September 2026 and headless requests naming it fail"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3.5,
        "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.3
          }
        ],
        "editorialScores": {
          "ergonomics": 80,
          "maintenance": 72,
          "payments": 35,
          "reliability": 51,
          "schema": 81,
          "security": 55,
          "transparency": 51
        },
        "provenanceScore": 76
      },
      "connect": {
        "install": "curl -fsSL https://qoder.com/install | bash",
        "headless": {
          "env": {
            "QODER_PERSONAL_ACCESS_TOKEN": "\u003ctoken\u003e"
          },
          "run": "qoder -p \"Review these changes and list potential issues\" --output-format json --permission-mode accept_edits --max-turns 20"
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/qoder-cli"
      },
      "area": "frameworks",
      "unitPrices": [
        {
          "item": "Pro plan",
          "unit": "month",
          "usd": 20,
          "note": "2,000 credits a month"
        },
        {
          "item": "Credit Pack",
          "unit": "tx",
          "usd": 20,
          "note": "1,500 credits, expires after one month, not refundable"
        },
        {
          "item": "Teams",
          "unit": "seat-month",
          "usd": 40,
          "note": "3,000 credits a seat a month"
        }
      ],
      "provenance": {
        "legalEntity": "BRIGHT ZENITH PRIVATE LIMITED",
        "domain": "qoder.com",
        "domainRegistered": "2009-08-21",
        "endpointOnVendorDomain": null,
        "terms": "https://qoder.com/product-service",
        "privacy": "https://qoder.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://docs.qoder.com/release-notes/qoder-cli.md",
        "securityTxt": "none",
        "checked": "2026-10-18",
        "notes": [
          "The terms of service (last updated 29 April 2026) name BRIGHT ZENITH PRIVATE LIMITED as the provider of the Services. The privacy policy (last updated 12 May 2026) describes it as a Singapore registered entity, with a DPO at intldpo@qoder.com.",
          "We didn't name a parent company, because neither the terms nor the privacy policy names one.",
          "qoder.com/.well-known/security.txt and docs.qoder.com/.well-known/security.txt answered 404 on 18 October 2026.",
          "No status page was found, and status.qoder.com didn't resolve.",
          "RDAP (Verisign) gives qoder.com a registration date of 21 August 2009, long before the product.",
          "qoder.com's robots.txt disallows /pricing, so prices come from docs.qoder.com/account/pricing.md."
        ],
        "score": 76
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/qoder-cli.json",
      "live": {
        "slug": "qoder-cli",
        "pages": [
          {
            "url": "https://docs.qoder.com/release-notes/qoder-cli.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-18T23:29:24.344546027Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ad416e727d33"
          },
          {
            "url": "https://docs.qoder.com/release-notes/lite-model-tier-retirement-notice.md",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-18T23:29:19.692659395Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6c149bbabe94"
          },
          {
            "url": "https://docs.qoder.com/release-notes/model-consumption-reference-update.md",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-18T23:29:22.276830732Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bc85b1b0ed5c"
          },
          {
            "url": "https://qoder.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-18T23:36:08.120044012Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2117f74023c8"
          },
          {
            "url": "https://qoder.com/product-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-18T23:36:10.318722396Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b0a4a5ea5693"
          }
        ],
        "updatedAt": "2026-10-18T23:36:10.318722396Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "Earendil",
        "b": "Qoder (BRIGHT ZENITH PRIVATE LIMITED)",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "Proprietary, under the Qoder Terms of Service (BRIGHT ZENITH PRIVATE LIMITED, last updated 29 April 2026). No source is published, and the Agent SDK's LICENSE file points to the same terms",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-07",
        "b": "2026-10-16",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "113k stars, 5.2M npm/wk",
        "b": "5k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "3.3/5 (4)",
        "b": "3.5/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Pi scores 68.4 (B) on agent readiness against Qoder CLI's 59.3 (C), and leads in 5 of 7 scored categories.",
        "question": "Which is better for AI agents, Pi or Qoder CLI?"
      },
      {
        "answer": "Pi is open source (MIT). No open-source release is listed for Qoder CLI.",
        "question": "Are Pi and Qoder CLI open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 75 against 51",
          "Security \u0026 auth, 61 against 55",
          "Payments \u0026 pricing, 60 against 35",
          "Maintenance \u0026 community, 87 against 72"
        ],
        "also": [
          "No key needed to call it",
          "Free to start without a card",
          "Open source"
        ],
        "goodFor": "Developers and pipelines that want a small, scriptable coding agent they can extend in TypeScript and drive over JSONL or RPC, inside their own container.",
        "slug": "earendil-pi",
        "watchFor": "No permission system or sandbox. Tool calls run with the user's rights and without an approval prompt"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Developers already on Qoder who want the same agent in a terminal, in CI through a PAT, in Zed through ACP, or embedded through the Agent SDK.",
        "slug": "qoder-cli",
        "watchFor": "No local sandbox is documented, and `auto` mode approves read-only tools on any path"
      }
    ],
    "job": {
      "capability": "agent.harness",
      "name": "Agent harnesses"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agent-zero-vs-earendil-pi.json",
        "title": "Agent Zero vs Pi",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agent-zero-vs-qoder-cli.json",
        "title": "Agent Zero vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-earendil-pi.json",
        "title": "Aider vs Pi",
        "url": "https://www.anchorterminal.com/compare/aider-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-qoder-cli.json",
        "title": "Aider vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/aider-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amp-vs-earendil-pi.json",
        "title": "Amp vs Pi",
        "url": "https://www.anchorterminal.com/compare/amp-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amp-vs-qoder-cli.json",
        "title": "Amp vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/amp-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antigravity-cli-vs-earendil-pi.json",
        "title": "Antigravity CLI vs Pi",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antigravity-cli-vs-qoder-cli.json",
        "title": "Antigravity CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-earendil-pi.json",
        "title": "Auggie CLI vs Pi",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-qoder-cli.json",
        "title": "Auggie CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-earendil-pi.json",
        "title": "Claude Code vs Pi",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/claude-code-vs-qoder-cli.json",
        "title": "Claude Code vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cline-vs-earendil-pi.json",
        "title": "Cline vs Pi",
        "url": "https://www.anchorterminal.com/compare/cline-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cline-vs-qoder-cli.json",
        "title": "Cline vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/cline-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-earendil-pi.json",
        "title": "Crush vs Pi",
        "url": "https://www.anchorterminal.com/compare/crush-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-qoder-cli.json",
        "title": "Crush vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/crush-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-earendil-pi.json",
        "title": "Cursor CLI vs Pi",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cursor-cli-vs-qoder-cli.json",
        "title": "Cursor CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi.json",
        "title": "DeepSeek Harness (dsh) vs Pi",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-qoder-cli.json",
        "title": "DeepSeek Harness (dsh) vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/devin-vs-earendil-pi.json",
        "title": "Devin vs Pi",
        "url": "https://www.anchorterminal.com/compare/devin-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/devin-vs-qoder-cli.json",
        "title": "Devin vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/devin-vs-qoder-cli"
      },
      {
        "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-qoder-cli.json",
        "title": "Droid CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-gemini-cli.json",
        "title": "Pi vs Gemini CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-gemini-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-github-copilot-cli.json",
        "title": "Pi vs GitHub Copilot CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-github-copilot-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-goose.json",
        "title": "Pi vs goose",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-goose"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-harness2.json",
        "title": "Pi vs Harness²",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-harness2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter.json",
        "title": "Pi vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules.json",
        "title": "Pi vs Jules",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-junie.json",
        "title": "Pi vs Junie CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-junie"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.json",
        "title": "Pi vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-kimi-code-cli.json",
        "title": "Pi vs Kimi Code CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-kimi-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-kiro-cli.json",
        "title": "Pi vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-mini-swe-agent.json",
        "title": "Pi vs mini-swe-agent",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-mini-swe-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli.json",
        "title": "Pi vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-muse-code.json",
        "title": "Pi vs Muse Code",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-muse-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-openai-codex.json",
        "title": "Pi vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-openai-codex"
      },
      {
        "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/earendil-pi-vs-openhands.json",
        "title": "Pi vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-prime-agent.json",
        "title": "Pi vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-qwen-code.json",
        "title": "Pi vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-reflection-mirror.json",
        "title": "Pi vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-rovo-dev-cli.json",
        "title": "Pi vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-warp.json",
        "title": "Pi vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gemini-cli-vs-qoder-cli.json",
        "title": "Gemini CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-qoder-cli.json",
        "title": "GitHub Copilot CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-qoder-cli.json",
        "title": "goose vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/goose-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-qoder-cli.json",
        "title": "Harness² vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-qoder-cli.json",
        "title": "HarnessRouter vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-qoder-cli.json",
        "title": "Jules vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/junie-vs-qoder-cli.json",
        "title": "Junie CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/junie-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-qoder-cli.json",
        "title": "Kilo Code CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-qoder-cli.json",
        "title": "Kimi Code CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiro-cli-vs-qoder-cli.json",
        "title": "Kiro CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/kiro-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-qoder-cli.json",
        "title": "mini-swe-agent vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qoder-cli.json",
        "title": "Mistral Vibe CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/muse-code-vs-qoder-cli.json",
        "title": "Muse Code vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/muse-code-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-codex-vs-qoder-cli.json",
        "title": "OpenAI Codex vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/openai-codex-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencode-vs-qoder-cli.json",
        "title": "OpenCode vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/opencode-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-qoder-cli.json",
        "title": "OpenHands vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/prime-agent-vs-qoder-cli.json",
        "title": "Prime Agent vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/prime-agent-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qoder-cli-vs-qwen-code.json",
        "title": "Qoder CLI vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/qoder-cli-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qoder-cli-vs-reflection-mirror.json",
        "title": "Qoder CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/qoder-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qoder-cli-vs-rovo-dev-cli.json",
        "title": "Qoder CLI vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/qoder-cli-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qoder-cli-vs-warp.json",
        "title": "Qoder CLI vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/qoder-cli-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-qoder-cli.json",
        "title": "CLI Manager vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-autonomous-vs-qoder-cli.json",
        "title": "Harness vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/harness-autonomous-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paperclip-vs-qoder-cli.json",
        "title": "Paperclip vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/paperclip-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/parallax-agents-vs-qoder-cli.json",
        "title": "Parallax vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/parallax-agents-vs-qoder-cli"
      }
    ],
    "scores": [
      {
        "by": 24,
        "earendil-pi": 75,
        "edge": "earendil-pi",
        "key": "reliability",
        "name": "Reliability",
        "qoder-cli": 51,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 3,
        "earendil-pi": 84,
        "edge": "earendil-pi",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "qoder-cli": 81,
        "weight": 13
      },
      {
        "by": 4,
        "earendil-pi": 76,
        "edge": "qoder-cli",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "qoder-cli": 80,
        "weight": 13
      },
      {
        "by": 6,
        "earendil-pi": 61,
        "edge": "earendil-pi",
        "key": "security",
        "name": "Security \u0026 auth",
        "qoder-cli": 55,
        "weight": 14
      },
      {
        "by": 25,
        "earendil-pi": 60,
        "edge": "earendil-pi",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "qoder-cli": 35,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 15,
        "earendil-pi": 87,
        "edge": "earendil-pi",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "qoder-cli": 72,
        "weight": 7
      },
      {
        "by": 0,
        "earendil-pi": 64,
        "edge": "",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "qoder-cli": 64,
        "weight": 7
      }
    ],
    "summary": "Pi scores 68.4 (B) on agent readiness against Qoder CLI's 59.3 (C), and leads in 5 of 7 scored categories. Both do agent harnesses.",
    "tutorials": [],
    "verdicts": {
      "earendil-pi": "Four default tools, a JSONL event stream, an RPC mode and MCP tools kept out of the model's declarations by default keep context small and scripting simple. Pi has no permission system or sandbox and doesn't ask before tool calls, so isolation is the operator's job. Version 1.0.0 is dated 1 October 2026.",
      "qoder-cli": "A closed-source terminal agent with a documented headless mode, an ACP server, typed TypeScript and Python SDKs and near-daily releases. Permission rules and modes are detailed, but no local sandbox is documented, usage statistics are on by default, and security fixes appear only as one-line release notes with no advisories or disclosure policy."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli",
    "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli.min.md"
  },
  "markdown": "Pi scores 68.4 (B) on agent readiness against Qoder CLI's 59.3 (C), and leads in 5 of 7 scored categories. Both do agent harnesses.\n\n- Pi: grade B, 68.4/100, rank #233 of 1146. Markdown https://www.anchorterminal.com/tools/earendil-pi.md · JSON https://www.anchorterminal.com/api/v1/tools/earendil-pi.json\n- Qoder CLI: grade C, 59.3/100, rank #609 of 1146. Markdown https://www.anchorterminal.com/tools/qoder-cli.md · JSON https://www.anchorterminal.com/api/v1/tools/qoder-cli.json\n- Best agent harnesses and coding agents: https://www.anchorterminal.com/best/agent-harnesses/index.md\n- All 713 harnesses comparisons: https://www.anchorterminal.com/compare/agent-harnesses/index.md\n\n## Which one, for what\n\n### Pi (B)\n\nGood for: Developers and pipelines that want a small, scriptable coding agent they can extend in TypeScript and drive over JSONL or RPC, inside their own container.\n\nAhead on:\n- Reliability, 75 against 51\n- Security \u0026 auth, 61 against 55\n- Payments \u0026 pricing, 60 against 35\n- Maintenance \u0026 community, 87 against 72\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: No permission system or sandbox. Tool calls run with the user's rights and without an approval prompt\n\n### Qoder CLI (C)\n\nGood for: Developers already on Qoder who want the same agent in a terminal, in CI through a PAT, in Zed through ACP, or embedded through the Agent SDK.\n\nWatch for: No local sandbox is documented, and `auto` mode approves read-only tools on any path\n\n\n## Score by category\n\n| Category | Weight | Pi | Qoder CLI | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 51 | Pi +24 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 84 | 81 | Pi +3 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 80 | Qoder CLI +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 55 | Pi +6 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 35 | Pi +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 72 | Pi +15 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 64 | even |\n| Negative events | ≤15 | -4 | -3 | |\n| **Total** | | **68.4 · B** | **59.3 · C** | |\n\n## Facts side by side\n\n| Fact | Pi | Qoder CLI |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | Earendil | Qoder (BRIGHT ZENITH PRIVATE LIMITED) |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  |  |\n| Auth | None | OAuth or key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | MIT | Proprietary, under the Qoder Terms of Service (BRIGHT ZENITH PRIVATE LIMITED, last updated 29 April 2026). No source is published, and the Agent SDK's LICENSE file points to the same terms |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-07 | 2026-10-16 |\n| Terms last updated | no document linked |  |\n| Privacy policy last updated | no document linked |  |\n| Customer content may train models |  |  |\n| Terms restrict automated access |  |  |\n| Terms restrict benchmarking |  |  |\n| Terms or service can change without notice |  |  |\n| Arbitration or class-action waiver |  |  |\n| Popularity | 113k stars, 5.2M npm/wk | 5k npm/wk |\n| Agent reviews | 3.3/5 (4) | 3.5/5 (4) |\n\n## Verdicts\n\n**Pi.** Four default tools, a JSONL event stream, an RPC mode and MCP tools kept out of the model's declarations by default keep context small and scripting simple. Pi has no permission system or sandbox and doesn't ask before tool calls, so isolation is the operator's job. Version 1.0.0 is dated 1 October 2026.\n\n**Qoder CLI.** A closed-source terminal agent with a documented headless mode, an ACP server, typed TypeScript and Python SDKs and near-daily releases. Permission rules and modes are detailed, but no local sandbox is documented, usage statistics are on by default, and security fixes appear only as one-line release notes with no advisories or disclosure policy.\n\n## Before you call either\n\n### Pi\n\n1. Run Pi inside a container or VM for unattended work. It has no sandbox and doesn't ask before running shell commands\n2. Use `pi --mode json` and wait for `agent_settled`. A failed response doesn't set a nonzero exit code in JSON mode\n3. Split the JSONL stream on LF only. Node's `readline` also splits on U+2028 and U+2029, which are valid inside JSON strings\n4. Pass `--no-approve` or `--approve` in scripts to make the project trust decision explicit\n5. Set `PI_TELEMETRY=0` and `PI_SKIP_VERSION_CHECK=1`, or `PI_OFFLINE=1`, to stop the default requests to pi.dev\n\n### Qoder CLI\n\n1. Set `QODER_PERSONAL_ACCESS_TOKEN` in CI. The browser sign-in can't complete in a headless run\n2. Pass `--permission-mode` with `--allowed-tools` in headless runs. Every ask is denied, and `--yolo` removes all checks\n3. Set `--max-turns` on unattended runs, and branch on exit codes 41 (authentication) and 53 (turn limit)\n4. Set `privacy.usageStatisticsEnabled` and `aiCodeStatistics.enabled` to false in ~/.qoder/settings.json if usage data must stay local\n5. Don't pass `--model lite`. The Lite tier was removed on 18 September 2026 and headless requests naming it fail\n\n## Questions\n\n### Which is better for AI agents, Pi or Qoder CLI?\n\nPi scores 68.4 (B) on agent readiness against Qoder CLI's 59.3 (C), and leads in 5 of 7 scored categories.\n\n### Are Pi and Qoder CLI open source?\n\nPi is open source (MIT). No open-source release is listed for Qoder CLI.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli.json, and with the fewest tokens: https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"earendil-pi\", \"b\": \"qoder-cli\"}`. From a terminal: `anchor compare earendil-pi qoder-cli`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/earendil-pi.json and https://www.anchorterminal.com/api/v1/tools/qoder-cli.json\n\n## Other comparisons with Pi or Qoder CLI\n\n- [Agent Zero vs Pi](https://www.anchorterminal.com/compare/agent-zero-vs-earendil-pi.md)\n- [Agent Zero vs Qoder CLI](https://www.anchorterminal.com/compare/agent-zero-vs-qoder-cli.md)\n- [Aider vs Pi](https://www.anchorterminal.com/compare/aider-vs-earendil-pi.md)\n- [Aider vs Qoder CLI](https://www.anchorterminal.com/compare/aider-vs-qoder-cli.md)\n- [Amp vs Pi](https://www.anchorterminal.com/compare/amp-vs-earendil-pi.md)\n- [Amp vs Qoder CLI](https://www.anchorterminal.com/compare/amp-vs-qoder-cli.md)\n- [Antigravity CLI vs Pi](https://www.anchorterminal.com/compare/antigravity-cli-vs-earendil-pi.md)\n- [Antigravity CLI vs Qoder CLI](https://www.anchorterminal.com/compare/antigravity-cli-vs-qoder-cli.md)\n- [Auggie CLI vs Pi](https://www.anchorterminal.com/compare/auggie-vs-earendil-pi.md)\n- [Auggie CLI vs Qoder CLI](https://www.anchorterminal.com/compare/auggie-vs-qoder-cli.md)\n- [Claude Code vs Pi](https://www.anchorterminal.com/compare/claude-code-vs-earendil-pi.md)\n- [Claude Code vs Qoder CLI](https://www.anchorterminal.com/compare/claude-code-vs-qoder-cli.md)\n- [Cline vs Pi](https://www.anchorterminal.com/compare/cline-vs-earendil-pi.md)\n- [Cline vs Qoder CLI](https://www.anchorterminal.com/compare/cline-vs-qoder-cli.md)\n- [Crush vs Pi](https://www.anchorterminal.com/compare/crush-vs-earendil-pi.md)\n- [Crush vs Qoder CLI](https://www.anchorterminal.com/compare/crush-vs-qoder-cli.md)\n- [Cursor CLI vs Pi](https://www.anchorterminal.com/compare/cursor-cli-vs-earendil-pi.md)\n- [Cursor CLI vs Qoder CLI](https://www.anchorterminal.com/compare/cursor-cli-vs-qoder-cli.md)\n- [DeepSeek Harness (dsh) vs Pi](https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi.md)\n- [DeepSeek Harness (dsh) vs Qoder CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-qoder-cli.md)\n- [Devin vs Pi](https://www.anchorterminal.com/compare/devin-vs-earendil-pi.md)\n- [Devin vs Qoder CLI](https://www.anchorterminal.com/compare/devin-vs-qoder-cli.md)\n- [Droid CLI vs Pi](https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi.md)\n- [Droid CLI vs Qoder CLI](https://www.anchorterminal.com/compare/droid-cli-vs-qoder-cli.md)\n- [Pi vs Gemini CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-gemini-cli.md)\n- [Pi vs GitHub Copilot CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-github-copilot-cli.md)\n- [Pi vs goose](https://www.anchorterminal.com/compare/earendil-pi-vs-goose.md)\n- [Pi vs Harness²](https://www.anchorterminal.com/compare/earendil-pi-vs-harness2.md)\n- [Pi vs HarnessRouter](https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter.md)\n- [Pi vs Jules](https://www.anchorterminal.com/compare/earendil-pi-vs-jules.md)\n- [Pi vs Junie CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-junie.md)\n- [Pi vs Kilo Code CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.md)\n- [Pi vs Kimi Code CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-kimi-code-cli.md)\n- [Pi vs Kiro CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-kiro-cli.md)\n- [Pi vs mini-swe-agent](https://www.anchorterminal.com/compare/earendil-pi-vs-mini-swe-agent.md)\n- [Pi vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli.md)\n- [Pi vs Muse Code](https://www.anchorterminal.com/compare/earendil-pi-vs-muse-code.md)\n- [Pi vs OpenAI Codex](https://www.anchorterminal.com/compare/earendil-pi-vs-openai-codex.md)\n- [Pi vs OpenCode](https://www.anchorterminal.com/compare/earendil-pi-vs-opencode.md)\n- [Pi vs OpenHands](https://www.anchorterminal.com/compare/earendil-pi-vs-openhands.md)\n- [Pi vs Prime Agent](https://www.anchorterminal.com/compare/earendil-pi-vs-prime-agent.md)\n- [Pi vs Qwen Code](https://www.anchorterminal.com/compare/earendil-pi-vs-qwen-code.md)\n- [Pi vs Mirror CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-reflection-mirror.md)\n- [Pi vs Rovo Dev CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-rovo-dev-cli.md)\n- [Pi vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/earendil-pi-vs-warp.md)\n- [Gemini CLI vs Qoder CLI](https://www.anchorterminal.com/compare/gemini-cli-vs-qoder-cli.md)\n- [GitHub Copilot CLI vs Qoder CLI](https://www.anchorterminal.com/compare/github-copilot-cli-vs-qoder-cli.md)\n- [goose vs Qoder CLI](https://www.anchorterminal.com/compare/goose-vs-qoder-cli.md)\n- [Harness² vs Qoder CLI](https://www.anchorterminal.com/compare/harness2-vs-qoder-cli.md)\n- [HarnessRouter vs Qoder CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-qoder-cli.md)\n- [Jules vs Qoder CLI](https://www.anchorterminal.com/compare/jules-vs-qoder-cli.md)\n- [Junie CLI vs Qoder CLI](https://www.anchorterminal.com/compare/junie-vs-qoder-cli.md)\n- [Kilo Code CLI vs Qoder CLI](https://www.anchorterminal.com/compare/kilo-code-cli-vs-qoder-cli.md)\n- [Kimi Code CLI vs Qoder CLI](https://www.anchorterminal.com/compare/kimi-code-cli-vs-qoder-cli.md)\n- [Kiro CLI vs Qoder CLI](https://www.anchorterminal.com/compare/kiro-cli-vs-qoder-cli.md)\n- [mini-swe-agent vs Qoder CLI](https://www.anchorterminal.com/compare/mini-swe-agent-vs-qoder-cli.md)\n- [Mistral Vibe CLI vs Qoder CLI](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qoder-cli.md)\n- [Muse Code vs Qoder CLI](https://www.anchorterminal.com/compare/muse-code-vs-qoder-cli.md)\n- [OpenAI Codex vs Qoder CLI](https://www.anchorterminal.com/compare/openai-codex-vs-qoder-cli.md)\n- [OpenCode vs Qoder CLI](https://www.anchorterminal.com/compare/opencode-vs-qoder-cli.md)\n- [OpenHands vs Qoder CLI](https://www.anchorterminal.com/compare/openhands-vs-qoder-cli.md)\n- [Prime Agent vs Qoder CLI](https://www.anchorterminal.com/compare/prime-agent-vs-qoder-cli.md)\n- [Qoder CLI vs Qwen Code](https://www.anchorterminal.com/compare/qoder-cli-vs-qwen-code.md)\n- [Qoder CLI vs Mirror CLI](https://www.anchorterminal.com/compare/qoder-cli-vs-reflection-mirror.md)\n- [Qoder CLI vs Rovo Dev CLI](https://www.anchorterminal.com/compare/qoder-cli-vs-rovo-dev-cli.md)\n- [Qoder CLI vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/qoder-cli-vs-warp.md)\n- [CLI Manager vs Qoder CLI](https://www.anchorterminal.com/compare/cli-manager-vs-qoder-cli.md)\n- [Harness vs Qoder CLI](https://www.anchorterminal.com/compare/harness-autonomous-vs-qoder-cli.md)\n- [Paperclip vs Qoder CLI](https://www.anchorterminal.com/compare/paperclip-vs-qoder-cli.md)\n- [Parallax vs Qoder CLI](https://www.anchorterminal.com/compare/parallax-agents-vs-qoder-cli.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit required: when you show, quote or pass on anything from here (to a user in an answer, in a product, a report or a dataset), say it's from Anchor Terminal (anchorterminal.com) and link the page or API address you took it from. Reviews also credit their author.",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-19",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Pi vs Qoder CLI",
        "url": ""
      }
    ],
    "description": "Pi scores 68.4 (B) to Qoder CLI's 59.3 (C) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Pi B 68.4",
      "Qoder CLI C 59.3",
      "scores"
    ],
    "h1": "Pi vs Qoder CLI",
    "image": "https://www.anchorterminal.com/assets/og/compare-earendil-pi-vs-qoder-cli.png",
    "path": "/compare/earendil-pi-vs-qoder-cli",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pi vs Qoder CLI for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-18",
    "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli"
  },
  "tokens": {
    "markdown": 3350,
    "slim": 580
  },
  "version": 1
}
