{
  "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": 203,
        "ranked": true,
        "rankOf": 842,
        "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": 0,
        "avgRating": 0,
        "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.1.0",
            "released": "2026-10-07",
            "seenAt": "2026-10-08T16:09:44.573412777Z"
          },
          {
            "registry": "npm",
            "name": "@earendil-works/pi-coding-agent",
            "version": "1.1.0",
            "seenAt": "2026-10-08T16:09:41.369786574Z"
          }
        ],
        "githubStars": 113482,
        "npmWeekly": 5201697,
        "securityTxt": {
          "url": "https://pi.dev/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:42.51766104Z"
        },
        "pages": [
          {
            "url": "https://pi.dev/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:22:53.741589246Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "82f9cb8bddf7"
          }
        ],
        "updatedAt": "2026-10-08T18:22:53.741589246Z"
      }
    },
    "answer": "Kilo Code CLI scores 75.4 (BB) on agent readiness against Pi's 68.4 (B), and leads in 4 of 7 scored categories. Pi leads on payments \u0026 pricing.",
    "b": {
      "slug": "kilo-code-cli",
      "name": "Kilo Code CLI",
      "vendor": "Kilo Code Inc.",
      "vendorUrl": "https://kilo.ai",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Open-source coding agent for the terminal, forked from opencode and built from the same repository as Kilo's VS Code and JetBrains extensions. It runs with your own provider key, a local model or the Kilo Gateway.",
      "url": "https://www.anchorterminal.com/tools/kilo-code-cli",
      "markdownUrl": "https://www.anchorterminal.com/tools/kilo-code-cli.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/kilo-code-cli.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/kilo-code-cli.json",
      "repo": "https://github.com/Kilo-Org/kilocode",
      "license": "MIT",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@kilocode/cli"
        },
        {
          "registry": "npm",
          "name": "@kilocode/sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Your own provider key in `~/.config/kilo/kilo.jsonc` or the environment, a local model, or a Kilo account through `kilo auth login` for the Kilo Gateway and its free models. `kilo serve` runs unauthenticated unless `KILO_SERVER_PASSWORD` is set.",
      "pricing": "freemium",
      "pricingNotes": "The CLI is free and MIT-licensed, and needs no Kilo account with your own key or a local model. Kilo Gateway credits are billed at provider rates with a 5 per cent fee on credit purchases. Kilo Pass starts at $19 a month, Teams is $15 a user a month and Enterprise is quoted. The pricing page says the free tier needs no card.",
      "priceSummary": "$19 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the pricing page or the README (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 27539,
        "npmWeekly": 32804,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://kilo.ai/docs/code-with-ai/platforms/cli",
      "llmsTxt": "https://kilo.ai/docs/llms.txt",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "harness",
        "coding-agent",
        "cli",
        "open-source",
        "typescript",
        "mcp",
        "llms-txt",
        "telemetry-default-on",
        "freemium",
        "no-card",
        "local"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 75.4,
        "grade": "BB",
        "agentReady": true,
        "rank": 47,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 72,
          "maintenance": 87,
          "payments": 50,
          "reliability": 85,
          "schema": 90,
          "security": 66,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Shell commands ask before running by default, and an optional operating-system sandbox blocks writes outside the workspace and outbound network. Telemetry to PostHog is on by default and the sandbox is off, so an unattended `kilo run --auto` approves everything not denied unless both are configured first.",
        "bestFor": "Developers who want an open-source terminal agent with per-tool permission rules, an optional sandbox and a choice of provider, and the same engine in VS Code and JetBrains.",
        "strengths": [
          "Permission rules of `allow`, `ask` or `deny` per tool with glob patterns, and shell commands asking by default outside a built-in allow list",
          "A sandbox on macOS and Linux that limits writes, blocks network by default and refuses to run when it can't be enforced",
          "Project config can't weaken the sandbox or read environment variables through `{env:VAR}`",
          "Your own provider key or a local model works with no Kilo account",
          "37 stable releases since 10 July 2026, with the last 40 workflow runs on main passing on 8 October 2026"
        ],
        "weaknesses": [
          "Telemetry to PostHog is on by default, and the privacy policy and PRIVACY.md don't mention it",
          "The sandbox is off by default and unavailable on Windows",
          "`kilo run` lists no flag for a turn, time or cost limit",
          "The terms grant a perpetual licence to use uploaded Customer Data to improve Kilo's services",
          "SECURITY.md still says the CLI has no sandbox, and the changelog has no dates or breaking-change headings"
        ],
        "agentNotes": [
          "Set `sandbox.enabled` to true in the global `kilo.jsonc` before `kilo run --auto`. `--auto` approves every permission request not explicitly denied",
          "Set `experimental.openTelemetry` to false, or `KILO_TELEMETRY_LEVEL` to a value other than `all`, to stop telemetry",
          "Add needed hosts to `sandbox.allowed_hosts` in global config. MCP tool calls are unavailable while network restriction is on",
          "Without `--auto` a non-interactive run rejects every permission prompt and exits 1",
          "Put provider keys in global config or the environment. `{env:VAR}` in a project `kilo.json` is ignored"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 75.4
          }
        ],
        "editorialScores": {
          "ergonomics": 72,
          "maintenance": 87,
          "payments": 50,
          "reliability": 85,
          "schema": 90,
          "security": 66,
          "transparency": 61
        },
        "provenanceScore": 90
      },
      "connect": {
        "install": "npm install -g @kilocode/cli   # or: brew install Kilo-Org/tap/kilo",
        "headless": {
          "command": "kilo run --auto --format json \"$TASK\""
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/kilo-code-cli"
      },
      "area": "frameworks",
      "unitPrices": [
        {
          "item": "Kilo Pass, entry tier",
          "unit": "month",
          "usd": 19,
          "note": "monthly model credits with bonus credits, optional"
        },
        {
          "item": "Teams plan",
          "unit": "seat-month",
          "usd": 15,
          "note": "model use billed separately at provider rates"
        }
      ],
      "provenance": {
        "legalEntity": "Kilo Code Inc. (the terms are a contract with Anaconda, Inc. on behalf of itself and its affiliates, including Kilo Code Inc.)",
        "domain": "kilo.ai",
        "domainRegistered": "2017-12-16",
        "endpointOnVendorDomain": null,
        "terms": "https://kilo.ai/terms",
        "privacy": "https://kilo.ai/privacy",
        "statusPage": "https://status.kilo.ai",
        "changelog": "https://github.com/Kilo-Org/kilocode/blob/main/packages/opencode/CHANGELOG.md",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms (last updated 30 September 2026) name the CLI among the services they cover and are made with Anaconda, Inc. The privacy policy (29 May 2026) names Kilo Code Inc. as data controller.",
          "kilo.ai/.well-known/security.txt lists security@kilo.ai and the policy at kilo.ai/security, names the CLI in scope and expires on 2026-12-31.",
          "trust.kilo.ai redirects to trust.anaconda.com, which has a Kilo Code section.",
          "status.kilo.ai is a Statuspage site for the website, gateway and cloud platform. The CLI runs on the owner's machine.",
          "PRIVACY.md in the repository is a separate short policy for the CLI dated March 2025."
        ],
        "score": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/kilo-code-cli.json",
      "live": {
        "slug": "kilo-code-cli",
        "vendorStatus": {
          "page": "https://status.kilo.ai",
          "indicator": "maintenance",
          "summary": "Service Under Maintenance",
          "checkedAt": "2026-10-09T10:11:02.644369897Z"
        },
        "updatedAt": "2026-10-09T10:11:02.644369897Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "Earendil",
        "b": "Kilo Code Inc.",
        "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": "MIT",
        "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-07",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "2026-09-30",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-05-29",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "113k stars, 5.2M npm/wk",
        "b": "28k stars, 33k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Kilo Code CLI scores 75.4 (BB) on agent readiness against Pi's 68.4 (B), and leads in 4 of 7 scored categories. Pi leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Pi or Kilo Code CLI?"
      },
      {
        "answer": "Yes. Pi is open source (MIT). Kilo Code CLI is open source (MIT).",
        "question": "Are Pi and Kilo Code CLI open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Payments \u0026 pricing, 60 against 50"
        ],
        "also": [
          "No key needed to call it"
        ],
        "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": [
          "Reliability, 85 against 75",
          "Schema \u0026 documentation, 90 against 84",
          "Security \u0026 auth, 66 against 61",
          "Transparency \u0026 trust, 76 against 64"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "No incidents deducted, where Pi loses 4 points for them"
        ],
        "goodFor": "Developers who want an open-source terminal agent with per-tool permission rules, an optional sandbox and a choice of provider, and the same engine in VS Code and JetBrains.",
        "slug": "kilo-code-cli",
        "watchFor": "Telemetry to PostHog is on by default, and the privacy policy and PRIVACY.md don't mention it"
      }
    ],
    "job": {
      "capability": "agent.harness",
      "name": "Agent harness"
    },
    "others": [
      {
        "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-kilo-code-cli.json",
        "title": "Aider vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/aider-vs-kilo-code-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-kilo-code-cli.json",
        "title": "Amp vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/amp-vs-kilo-code-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-kilo-code-cli.json",
        "title": "Claude Code vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-kilo-code-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-kilo-code-cli.json",
        "title": "Cline vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/cline-vs-kilo-code-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-kilo-code-cli.json",
        "title": "Cursor CLI vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-kilo-code-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-kilo-code-cli.json",
        "title": "Devin vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/devin-vs-kilo-code-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-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-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/gemini-cli-vs-kilo-code-cli.json",
        "title": "Gemini CLI vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-kilo-code-cli.json",
        "title": "GitHub Copilot CLI vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-kilo-code-cli.json",
        "title": "goose vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/goose-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-kiro-cli.json",
        "title": "Kilo Code CLI vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-openai-codex.json",
        "title": "Kilo Code CLI vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-openai-codex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-opencode.json",
        "title": "Kilo Code CLI vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-openhands.json",
        "title": "Kilo Code CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-prime-agent.json",
        "title": "Kilo Code CLI vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-qwen-code.json",
        "title": "Kilo Code CLI vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-paperclip.json",
        "title": "Kilo Code CLI vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-paperclip"
      }
    ],
    "scores": [
      {
        "by": 10,
        "earendil-pi": 75,
        "edge": "kilo-code-cli",
        "key": "reliability",
        "kilo-code-cli": 85,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 6,
        "earendil-pi": 84,
        "edge": "kilo-code-cli",
        "key": "schema",
        "kilo-code-cli": 90,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 4,
        "earendil-pi": 76,
        "edge": "earendil-pi",
        "key": "ergonomics",
        "kilo-code-cli": 72,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 5,
        "earendil-pi": 61,
        "edge": "kilo-code-cli",
        "key": "security",
        "kilo-code-cli": 66,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 10,
        "earendil-pi": 60,
        "edge": "earendil-pi",
        "key": "payments",
        "kilo-code-cli": 50,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 0,
        "earendil-pi": 87,
        "edge": "",
        "key": "maintenance",
        "kilo-code-cli": 87,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 12,
        "earendil-pi": 64,
        "edge": "kilo-code-cli",
        "key": "transparency",
        "kilo-code-cli": 76,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Kilo Code CLI scores 75.4 (BB) on agent readiness against Pi's 68.4 (B), and leads in 4 of 7 scored categories. Pi leads on payments \u0026 pricing. Both do agent harness.",
    "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.",
      "kilo-code-cli": "Shell commands ask before running by default, and an optional operating-system sandbox blocks writes outside the workspace and outbound network. Telemetry to PostHog is on by default and the sandbox is off, so an unattended `kilo run --auto` approves everything not denied unless both are configured first."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli",
    "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.md",
    "slim": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.min.md"
  },
  "markdown": "Kilo Code CLI scores 75.4 (BB) on agent readiness against Pi's 68.4 (B), and leads in 4 of 7 scored categories. Pi leads on payments \u0026 pricing. Both do agent harness.\n\n- Pi: grade B, 68.4/100, rank #203 of 842. Markdown https://www.anchorterminal.com/tools/earendil-pi.md · JSON https://www.anchorterminal.com/api/v1/tools/earendil-pi.json\n- Kilo Code CLI: grade BB, 75.4/100, rank #47 of 842. Markdown https://www.anchorterminal.com/tools/kilo-code-cli.md · JSON https://www.anchorterminal.com/api/v1/tools/kilo-code-cli.json\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- Payments \u0026 pricing, 60 against 50\n\nAlso in its favour:\n- No key needed to call it\n\nWatch for: No permission system or sandbox. Tool calls run with the user's rights and without an approval prompt\n\n### Kilo Code CLI (BB)\n\nGood for: Developers who want an open-source terminal agent with per-tool permission rules, an optional sandbox and a choice of provider, and the same engine in VS Code and JetBrains.\n\nAhead on:\n- Reliability, 85 against 75\n- Schema \u0026 documentation, 90 against 84\n- Security \u0026 auth, 66 against 61\n- Transparency \u0026 trust, 76 against 64\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- No incidents deducted, where Pi loses 4 points for them\n\nWatch for: Telemetry to PostHog is on by default, and the privacy policy and PRIVACY.md don't mention it\n\n\n## Score by category\n\n| Category | Weight | Pi | Kilo Code CLI | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 85 | Kilo Code CLI +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 84 | 90 | Kilo Code CLI +6 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 72 | Pi +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 66 | Kilo Code CLI +5 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 50 | Pi +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 87 | even |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 76 | Kilo Code CLI +12 |\n| Negative events | ≤15 | -4 | 0 | |\n| **Total** | | **68.4 · B** | **75.4 · BB** | |\n\n## Facts side by side\n\n| Fact | Pi | Kilo Code CLI |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | Earendil | Kilo Code Inc. |\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 | MIT |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-07 | 2026-10-07 |\n| Terms last updated | no document linked | 2026-09-30 |\n| Privacy policy last updated | no document linked | 2026-05-29 |\n| Customer content may train models |  | not found in the text |\n| Terms restrict automated access |  | yes |\n| Terms restrict benchmarking |  | not found in the text |\n| Terms or service can change without notice |  | yes |\n| Arbitration or class-action waiver |  | yes |\n| Popularity | 113k stars, 5.2M npm/wk | 28k stars, 33k npm/wk |\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**Kilo Code CLI.** Shell commands ask before running by default, and an optional operating-system sandbox blocks writes outside the workspace and outbound network. Telemetry to PostHog is on by default and the sandbox is off, so an unattended `kilo run --auto` approves everything not denied unless both are configured first.\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### Kilo Code CLI\n\n1. Set `sandbox.enabled` to true in the global `kilo.jsonc` before `kilo run --auto`. `--auto` approves every permission request not explicitly denied\n2. Set `experimental.openTelemetry` to false, or `KILO_TELEMETRY_LEVEL` to a value other than `all`, to stop telemetry\n3. Add needed hosts to `sandbox.allowed_hosts` in global config. MCP tool calls are unavailable while network restriction is on\n4. Without `--auto` a non-interactive run rejects every permission prompt and exits 1\n5. Put provider keys in global config or the environment. `{env:VAR}` in a project `kilo.json` is ignored\n\n## Questions\n\n### Which is better for AI agents, Pi or Kilo Code CLI?\n\nKilo Code CLI scores 75.4 (BB) on agent readiness against Pi's 68.4 (B), and leads in 4 of 7 scored categories. Pi leads on payments \u0026 pricing.\n\n### Are Pi and Kilo Code CLI open source?\n\nYes. Pi is open source (MIT). Kilo Code CLI is open source (MIT).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.json, and with the fewest tokens: https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"earendil-pi\", \"b\": \"kilo-code-cli\"}`. From a terminal: `anchor compare earendil-pi kilo-code-cli`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/earendil-pi.json and https://www.anchorterminal.com/api/v1/tools/kilo-code-cli.json\n\n## Other comparisons with Pi or Kilo Code CLI\n\n- [Aider vs Pi](https://www.anchorterminal.com/compare/aider-vs-earendil-pi.md)\n- [Aider vs Kilo Code CLI](https://www.anchorterminal.com/compare/aider-vs-kilo-code-cli.md)\n- [Amp vs Pi](https://www.anchorterminal.com/compare/amp-vs-earendil-pi.md)\n- [Amp vs Kilo Code CLI](https://www.anchorterminal.com/compare/amp-vs-kilo-code-cli.md)\n- [Claude Code vs Pi](https://www.anchorterminal.com/compare/claude-code-vs-earendil-pi.md)\n- [Claude Code vs Kilo Code CLI](https://www.anchorterminal.com/compare/claude-code-vs-kilo-code-cli.md)\n- [Cline vs Pi](https://www.anchorterminal.com/compare/cline-vs-earendil-pi.md)\n- [Cline vs Kilo Code CLI](https://www.anchorterminal.com/compare/cline-vs-kilo-code-cli.md)\n- [Cursor CLI vs Pi](https://www.anchorterminal.com/compare/cursor-cli-vs-earendil-pi.md)\n- [Cursor CLI vs Kilo Code CLI](https://www.anchorterminal.com/compare/cursor-cli-vs-kilo-code-cli.md)\n- [Devin vs Pi](https://www.anchorterminal.com/compare/devin-vs-earendil-pi.md)\n- [Devin vs Kilo Code CLI](https://www.anchorterminal.com/compare/devin-vs-kilo-code-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 Kiro CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-kiro-cli.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- [Gemini CLI vs Kilo Code CLI](https://www.anchorterminal.com/compare/gemini-cli-vs-kilo-code-cli.md)\n- [GitHub Copilot CLI vs Kilo Code CLI](https://www.anchorterminal.com/compare/github-copilot-cli-vs-kilo-code-cli.md)\n- [goose vs Kilo Code CLI](https://www.anchorterminal.com/compare/goose-vs-kilo-code-cli.md)\n- [Kilo Code CLI vs Kiro CLI](https://www.anchorterminal.com/compare/kilo-code-cli-vs-kiro-cli.md)\n- [Kilo Code CLI vs OpenAI Codex](https://www.anchorterminal.com/compare/kilo-code-cli-vs-openai-codex.md)\n- [Kilo Code CLI vs OpenCode](https://www.anchorterminal.com/compare/kilo-code-cli-vs-opencode.md)\n- [Kilo Code CLI vs OpenHands](https://www.anchorterminal.com/compare/kilo-code-cli-vs-openhands.md)\n- [Kilo Code CLI vs Prime Agent](https://www.anchorterminal.com/compare/kilo-code-cli-vs-prime-agent.md)\n- [Kilo Code CLI vs Qwen Code](https://www.anchorterminal.com/compare/kilo-code-cli-vs-qwen-code.md)\n- [Kilo Code CLI vs Paperclip](https://www.anchorterminal.com/compare/kilo-code-cli-vs-paperclip.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Pi vs Kilo Code CLI",
        "url": ""
      }
    ],
    "description": "Kilo Code CLI scores 75.4 (BB) on agent readiness against Pi's 68.4 (B), and leads in 4 of 7 scored categories. Pi leads on payments \u0026 pricing. Both do agent harness. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Pi B 68.4",
      "Kilo Code CLI BB 75.4",
      "scores"
    ],
    "h1": "Pi vs Kilo Code CLI",
    "image": "https://www.anchorterminal.com/assets/og/compare-earendil-pi-vs-kilo-code-cli.png",
    "path": "/compare/earendil-pi-vs-kilo-code-cli",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pi vs Kilo Code CLI for AI agents, B 68.4 vs BB 75.4 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli"
  },
  "tokens": {
    "markdown": 2400,
    "slim": 630
  },
  "version": 1
}
