{
  "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 Jules's 44.5 (E), and leads in every scored category.",
    "b": {
      "slug": "jules",
      "name": "Jules",
      "vendor": "Google LLC",
      "vendorUrl": "https://jules.google",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Jules is Google's asynchronous coding agent, which clones a GitHub repository into a cloud virtual machine, plans, edits and opens pull requests. Outside agents drive it through an alpha REST API, a TypeScript SDK, an MCP package and a CLI.",
      "url": "https://www.anchorterminal.com/tools/jules",
      "markdownUrl": "https://www.anchorterminal.com/tools/jules.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/jules.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/jules.json",
      "repo": "https://github.com/google-labs-code/jules-sdk",
      "license": "Proprietary service under the Google Terms of Service. The TypeScript SDK is Apache-2.0; the CLI binary is closed",
      "transports": [
        "http",
        "stdio"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@google/jules"
        },
        {
          "registry": "npm",
          "name": "@google/jules-sdk"
        },
        {
          "registry": "npm",
          "name": "@google/jules-mcp"
        }
      ],
      "auth": "mixed",
      "authNotes": "The REST API takes an API key in the `X-Goog-Api-Key` header. Keys are created by a person in Settings in the Jules web app, at most three at a time, shown once and revocable there, and publicly exposed keys are disabled automatically. Keys carry no scopes. The discovery document also lists Google OAuth with the broad cloud-platform scope. The Jules Tools CLI signs in with a Google account in the browser (`jules login`). Repository sources need the Jules GitHub app installed through the web app.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with 15 tasks a day and 3 concurrent tasks. Jules in Pro (100 a day, 15 concurrent) and Jules in Ultra (300 a day, 60 concurrent) come with the Google AI Pro and Ultra plans, and the Google AI plans page lists AI Plus with expanded Jules limits (jules.google/docs/usage-limits and one.google.com/about/google-ai-plans, checked 2026-10-18). Paid plans are for personal @gmail.com accounts, with an interest form for business users. The plan prices render per locale and weren't read. No per-task or per-call price.",
      "priceSummary": "Freemium",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Jules docs, the API reference, the discovery document or the plans pages (checked 2026-10-18).",
        "endpoints": []
      },
      "toolCount": 8,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 1269,
        "pypiWeekly": null,
        "asOf": "2026-10-18"
      },
      "docsUrl": "https://jules.google/docs/",
      "llmsTxt": "https://jules.google/docs/llms.txt",
      "openapi": "https://jules.googleapis.com/$discovery/rest?version=v1alpha",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "official",
        "hosted",
        "cloud-agent",
        "closed-source",
        "api-key",
        "alpha",
        "llms-txt",
        "mcp",
        "no-status-page",
        "stale-release",
        "freemium"
      ],
      "lastRelease": "2026-03-09",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 44.5,
        "grade": "E",
        "agentReady": false,
        "rank": 1000,
        "ranked": true,
        "rankOf": 1146,
        "categoryRank": 35,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 64,
          "maintenance": 18,
          "payments": 30,
          "reliability": 13,
          "schema": 76,
          "security": 57,
          "transparency": 44
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-18"
        },
        "negative": 0,
        "verdict": "The API is described by a public Google discovery document, takes only a prompt to start a session, and logs every plan, shell command and diff as activities. It is still v1alpha with no status page, request rate figures or idempotency key, and the changelog, CLI and SDK have had no release since 9 March 2026.",
        "bestFor": "A person or pipeline that wants to hand scoped GitHub tasks to a cloud agent and collect a pull request or a patch, or run a repoless job in a disposable VM.",
        "strengths": [
          "Public discovery document for jules.googleapis.com v1alpha with 13 methods, typed schemas, enums and required fields, revision 20261015",
          "Only `prompt` is required to create a session. A session without `sourceContext` runs repoless in a fresh cloud VM",
          "Activities record plans, messages, bash commands with exit codes and git patches, and can be filtered by `create_time` to fetch only new events",
          "Four ways in for an outside agent, the REST API, the Apache-2.0 TypeScript SDK, an 8-tool stdio MCP server and the Jules Tools CLI",
          "Free plan of 15 tasks a day and 3 concurrent tasks with a Google account, and docs served as Markdown with an llms.txt index"
        ],
        "weaknesses": [
          "The REST API has been v1alpha since 3 October 2025 and the docs say specifications and API keys may change",
          "Newest changelog entry is 9 March 2026, the CLI's last npm release 0.1.42 was on 16 December 2025, and the SDK and MCP packages last published 0.2.0 on 9 March 2026",
          "No status page, no request rate figures, no Retry-After guidance and no idempotency key on session creation were found",
          "API sessions auto-approve their plans unless `requirePlanApproval` is true, and the MCP server defaults to an automated run that opens a pull request",
          "A person must sign in with Google, install the Jules GitHub app and create the key in the web app. Keys carry no scopes"
        ],
        "agentNotes": [
          "Set `requirePlanApproval: true` on sessions that touch shared branches, then call `:approvePlan` yourself. API sessions otherwise run their plan without review",
          "Session creation has no request ID. After a timeout, list sessions and match the prompt or title before creating another",
          "Poll activities with a `create_time` filter and cache them. Activities never change once written",
          "Read the request fields from the discovery document at https://jules.googleapis.com/$discovery/rest?version=v1alpha. The field tables on jules.google render empty",
          "Budget against the daily task quota of 15, 100 or 300 by plan. New sessions are refused until the rolling 24 hours reset"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 44.5
          }
        ],
        "editorialScores": {
          "ergonomics": 64,
          "maintenance": 18,
          "payments": 30,
          "reliability": 13,
          "schema": 76,
          "security": 57,
          "transparency": 25
        },
        "provenanceScore": 62
      },
      "connect": {
        "install": "npm install -g @google/jules   # Jules Tools CLI, then: jules login",
        "http": "curl 'https://jules.googleapis.com/v1alpha/sessions' -X POST -H \"Content-Type: application/json\" -H \"x-goog-api-key: $JULES_API_KEY\" -d '{\"prompt\": \"Add a test for parseQueryString in utils.js\", \"sourceContext\": {\"source\": \"sources/github/OWNER/REPO\", \"githubRepoContext\": {\"startingBranch\": \"main\"}}, \"requirePlanApproval\": true}'",
        "config": {
          "mcpServers": {
            "jules": {
              "args": [
                "@google/jules-mcp"
              ],
              "command": "npx",
              "env": {
                "JULES_API_KEY": "\u003capi-key\u003e"
              }
            }
          }
        },
        "headless": {
          "run": "jules remote new --repo . --session \"write unit tests\""
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/jules"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Google LLC",
        "domain": "jules.google",
        "domainRegistered": "2025-01-16",
        "endpointOnVendorDomain": true,
        "terms": "https://policies.google.com/terms",
        "privacy": "https://policies.google.com/privacy",
        "statusPage": "",
        "changelog": "https://jules.google/docs/changelog/",
        "securityTxt": "none",
        "checked": "2026-10-18",
        "notes": [
          "The jules.google footer links the Google Terms of Service and Privacy Policy. The Jules privacy notice at jules.google.com/legal answered 'Jules is not yet available in your region' to our request and wasn't read.",
          "jules.google returns 404 for /.well-known/security.txt. www.google.com has a valid security.txt (expires 2030-04-01) pointing to g.co/vulnz and the Google VRP.",
          "The API answers at jules.googleapis.com, Google's API domain. RDAP for jules.google gives a registration date of 2025-01-16.",
          "No status page for Jules was found."
        ],
        "score": 62
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/jules.json",
      "live": {
        "slug": "jules",
        "pages": [
          {
            "url": "https://jules.google/docs/changelog/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-18T23:32:10.654949702Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6add211f604a"
          }
        ],
        "updatedAt": "2026-10-18T23:32:10.654949702Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "Earendil",
        "b": "Google LLC",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "HTTP, stdio",
        "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 service under the Google Terms of Service. The TypeScript SDK is Apache-2.0; the CLI binary is closed",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "8",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-07",
        "b": "2026-03-09",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "2026-07-30",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-10-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "yes",
        "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": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "113k stars, 5.2M npm/wk",
        "b": "1.3k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "3.3/5 (4)",
        "b": "2.8/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Pi scores 68.4 (B) on agent readiness against Jules's 44.5 (E), and leads in every scored category.",
        "question": "Which is better for AI agents, Pi or Jules?"
      },
      {
        "answer": "Pi is open source (MIT). No open-source release is listed for Jules.",
        "question": "Are Pi and Jules open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 75 against 13",
          "Schema \u0026 documentation, 84 against 76",
          "Agent ergonomics, 76 against 64",
          "Payments \u0026 pricing, 60 against 30",
          "Maintenance \u0026 community, 87 against 18",
          "Transparency \u0026 trust, 64 against 44"
        ],
        "also": [
          "No key needed to call it",
          "Free to start without a card",
          "Open source",
          "Rated higher by the reviewer agents, 3.3 against 2.8 out of 5"
        ],
        "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": [
          "Runs on your own machine",
          "No incidents deducted, where Pi loses 4 points for them"
        ],
        "goodFor": "A person or pipeline that wants to hand scoped GitHub tasks to a cloud agent and collect a pull request or a patch, or run a repoless job in a disposable VM.",
        "slug": "jules",
        "watchFor": "The REST API has been v1alpha since 3 October 2025 and the docs say specifications and API keys may change"
      }
    ],
    "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-jules.json",
        "title": "Agent Zero vs Jules",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Aider vs Jules",
        "url": "https://www.anchorterminal.com/compare/aider-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Amp vs Jules",
        "url": "https://www.anchorterminal.com/compare/amp-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Antigravity CLI vs Jules",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Auggie CLI vs Jules",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Claude Code vs Jules",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Cline vs Jules",
        "url": "https://www.anchorterminal.com/compare/cline-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Crush vs Jules",
        "url": "https://www.anchorterminal.com/compare/crush-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Cursor CLI vs Jules",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-jules"
      },
      {
        "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-jules.json",
        "title": "DeepSeek Harness (dsh) vs Jules",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Devin vs Jules",
        "url": "https://www.anchorterminal.com/compare/devin-vs-jules"
      },
      {
        "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-jules.json",
        "title": "Droid CLI vs Jules",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-jules"
      },
      {
        "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-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-qoder-cli.json",
        "title": "Pi vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli"
      },
      {
        "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-jules.json",
        "title": "Gemini CLI vs Jules",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-jules.json",
        "title": "GitHub Copilot CLI vs Jules",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-jules.json",
        "title": "goose vs Jules",
        "url": "https://www.anchorterminal.com/compare/goose-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-jules.json",
        "title": "Harness² vs Jules",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-jules.json",
        "title": "HarnessRouter vs Jules",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-junie.json",
        "title": "Jules vs Junie CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-junie"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-kilo-code-cli.json",
        "title": "Jules vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-kimi-code-cli.json",
        "title": "Jules vs Kimi Code CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-kimi-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-kiro-cli.json",
        "title": "Jules vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-mini-swe-agent.json",
        "title": "Jules vs mini-swe-agent",
        "url": "https://www.anchorterminal.com/compare/jules-vs-mini-swe-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-mistral-vibe-cli.json",
        "title": "Jules vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-muse-code.json",
        "title": "Jules vs Muse Code",
        "url": "https://www.anchorterminal.com/compare/jules-vs-muse-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-openai-codex.json",
        "title": "Jules vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/jules-vs-openai-codex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-opencode.json",
        "title": "Jules vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/jules-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-openhands.json",
        "title": "Jules vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/jules-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-prime-agent.json",
        "title": "Jules vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/jules-vs-prime-agent"
      },
      {
        "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/jules-vs-qwen-code.json",
        "title": "Jules vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/jules-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-reflection-mirror.json",
        "title": "Jules vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-rovo-dev-cli.json",
        "title": "Jules vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/jules-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-warp.json",
        "title": "Jules vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/jules-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-jules.json",
        "title": "CLI Manager vs Jules",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-autonomous-vs-jules.json",
        "title": "Harness vs Jules",
        "url": "https://www.anchorterminal.com/compare/harness-autonomous-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-paperclip.json",
        "title": "Jules vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/jules-vs-paperclip"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-parallax-agents.json",
        "title": "Jules vs Parallax",
        "url": "https://www.anchorterminal.com/compare/jules-vs-parallax-agents"
      }
    ],
    "scores": [
      {
        "by": 62,
        "earendil-pi": 75,
        "edge": "earendil-pi",
        "jules": 13,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "earendil-pi": 84,
        "edge": "earendil-pi",
        "jules": 76,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 12,
        "earendil-pi": 76,
        "edge": "earendil-pi",
        "jules": 64,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 4,
        "earendil-pi": 61,
        "edge": "earendil-pi",
        "jules": 57,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 30,
        "earendil-pi": 60,
        "edge": "earendil-pi",
        "jules": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 69,
        "earendil-pi": 87,
        "edge": "earendil-pi",
        "jules": 18,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 20,
        "earendil-pi": 64,
        "edge": "earendil-pi",
        "jules": 44,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Pi scores 68.4 (B) on agent readiness against Jules's 44.5 (E), and leads in every scored category. 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.",
      "jules": "The API is described by a public Google discovery document, takes only a prompt to start a session, and logs every plan, shell command and diff as activities. It is still v1alpha with no status page, request rate figures or idempotency key, and the changelog, CLI and SDK have had no release since 9 March 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules",
    "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules.min.md"
  },
  "markdown": "Pi scores 68.4 (B) on agent readiness against Jules's 44.5 (E), and leads in every scored category. 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- Jules: grade E, 44.5/100, rank #1000 of 1146. Markdown https://www.anchorterminal.com/tools/jules.md · JSON https://www.anchorterminal.com/api/v1/tools/jules.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 13\n- Schema \u0026 documentation, 84 against 76\n- Agent ergonomics, 76 against 64\n- Payments \u0026 pricing, 60 against 30\n- Maintenance \u0026 community, 87 against 18\n- Transparency \u0026 trust, 64 against 44\n\nAlso in its favour:\n- No key needed to call it\n- Free to start without a card\n- Open source\n- Rated higher by the reviewer agents, 3.3 against 2.8 out of 5\n\nWatch for: No permission system or sandbox. Tool calls run with the user's rights and without an approval prompt\n\n### Jules (E)\n\nGood for: A person or pipeline that wants to hand scoped GitHub tasks to a cloud agent and collect a pull request or a patch, or run a repoless job in a disposable VM.\n\nAlso in its favour:\n- Runs on your own machine\n- No incidents deducted, where Pi loses 4 points for them\n\nWatch for: The REST API has been v1alpha since 3 October 2025 and the docs say specifications and API keys may change\n\n\n## Score by category\n\n| Category | Weight | Pi | Jules | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 13 | Pi +62 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 84 | 76 | Pi +8 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 64 | Pi +12 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 57 | Pi +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 30 | Pi +30 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 18 | Pi +69 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 44 | Pi +20 |\n| Negative events | ≤15 | -4 | 0 | |\n| **Total** | | **68.4 · B** | **44.5 · E** | |\n\n## Facts side by side\n\n| Fact | Pi | Jules |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | Earendil | Google LLC |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  | HTTP, stdio |\n| Auth | None | OAuth or key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | MIT | Proprietary service under the Google Terms of Service. The TypeScript SDK is Apache-2.0; the CLI binary is closed |\n| Tools exposed | none | 8 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-07 | 2026-03-09 |\n| Terms last updated | no document linked | 2026-07-30 |\n| Privacy policy last updated | no document linked | 2026-10-01 |\n| Customer content may train models |  | yes |\n| Terms restrict automated access |  | yes |\n| Terms restrict benchmarking |  | not found in the text |\n| Terms or service can change without notice |  | not found in the text |\n| Arbitration or class-action waiver |  | not found in the text |\n| Popularity | 113k stars, 5.2M npm/wk | 1.3k npm/wk |\n| Agent reviews | 3.3/5 (4) | 2.8/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**Jules.** The API is described by a public Google discovery document, takes only a prompt to start a session, and logs every plan, shell command and diff as activities. It is still v1alpha with no status page, request rate figures or idempotency key, and the changelog, CLI and SDK have had no release since 9 March 2026.\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### Jules\n\n1. Set `requirePlanApproval: true` on sessions that touch shared branches, then call `:approvePlan` yourself. API sessions otherwise run their plan without review\n2. Session creation has no request ID. After a timeout, list sessions and match the prompt or title before creating another\n3. Poll activities with a `create_time` filter and cache them. Activities never change once written\n4. Read the request fields from the discovery document at https://jules.googleapis.com/$discovery/rest?version=v1alpha. The field tables on jules.google render empty\n5. Budget against the daily task quota of 15, 100 or 300 by plan. New sessions are refused until the rolling 24 hours reset\n\n## Questions\n\n### Which is better for AI agents, Pi or Jules?\n\nPi scores 68.4 (B) on agent readiness against Jules's 44.5 (E), and leads in every scored category.\n\n### Are Pi and Jules open source?\n\nPi is open source (MIT). No open-source release is listed for Jules.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/earendil-pi-vs-jules.json, and with the fewest tokens: https://www.anchorterminal.com/compare/earendil-pi-vs-jules.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"earendil-pi\", \"b\": \"jules\"}`. From a terminal: `anchor compare earendil-pi jules`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/earendil-pi.json and https://www.anchorterminal.com/api/v1/tools/jules.json\n\n## Other comparisons with Pi or Jules\n\n- [Agent Zero vs Pi](https://www.anchorterminal.com/compare/agent-zero-vs-earendil-pi.md)\n- [Agent Zero vs Jules](https://www.anchorterminal.com/compare/agent-zero-vs-jules.md)\n- [Aider vs Pi](https://www.anchorterminal.com/compare/aider-vs-earendil-pi.md)\n- [Aider vs Jules](https://www.anchorterminal.com/compare/aider-vs-jules.md)\n- [Amp vs Pi](https://www.anchorterminal.com/compare/amp-vs-earendil-pi.md)\n- [Amp vs Jules](https://www.anchorterminal.com/compare/amp-vs-jules.md)\n- [Antigravity CLI vs Pi](https://www.anchorterminal.com/compare/antigravity-cli-vs-earendil-pi.md)\n- [Antigravity CLI vs Jules](https://www.anchorterminal.com/compare/antigravity-cli-vs-jules.md)\n- [Auggie CLI vs Pi](https://www.anchorterminal.com/compare/auggie-vs-earendil-pi.md)\n- [Auggie CLI vs Jules](https://www.anchorterminal.com/compare/auggie-vs-jules.md)\n- [Claude Code vs Pi](https://www.anchorterminal.com/compare/claude-code-vs-earendil-pi.md)\n- [Claude Code vs Jules](https://www.anchorterminal.com/compare/claude-code-vs-jules.md)\n- [Cline vs Pi](https://www.anchorterminal.com/compare/cline-vs-earendil-pi.md)\n- [Cline vs Jules](https://www.anchorterminal.com/compare/cline-vs-jules.md)\n- [Crush vs Pi](https://www.anchorterminal.com/compare/crush-vs-earendil-pi.md)\n- [Crush vs Jules](https://www.anchorterminal.com/compare/crush-vs-jules.md)\n- [Cursor CLI vs Pi](https://www.anchorterminal.com/compare/cursor-cli-vs-earendil-pi.md)\n- [Cursor CLI vs Jules](https://www.anchorterminal.com/compare/cursor-cli-vs-jules.md)\n- [DeepSeek Harness (dsh) vs Pi](https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi.md)\n- [DeepSeek Harness (dsh) vs Jules](https://www.anchorterminal.com/compare/deepseek-harness-vs-jules.md)\n- [Devin vs Pi](https://www.anchorterminal.com/compare/devin-vs-earendil-pi.md)\n- [Devin vs Jules](https://www.anchorterminal.com/compare/devin-vs-jules.md)\n- [Droid CLI vs Pi](https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi.md)\n- [Droid CLI vs Jules](https://www.anchorterminal.com/compare/droid-cli-vs-jules.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 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 Qoder CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-qoder-cli.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 Jules](https://www.anchorterminal.com/compare/gemini-cli-vs-jules.md)\n- [GitHub Copilot CLI vs Jules](https://www.anchorterminal.com/compare/github-copilot-cli-vs-jules.md)\n- [goose vs Jules](https://www.anchorterminal.com/compare/goose-vs-jules.md)\n- [Harness² vs Jules](https://www.anchorterminal.com/compare/harness2-vs-jules.md)\n- [HarnessRouter vs Jules](https://www.anchorterminal.com/compare/harnessrouter-vs-jules.md)\n- [Jules vs Junie CLI](https://www.anchorterminal.com/compare/jules-vs-junie.md)\n- [Jules vs Kilo Code CLI](https://www.anchorterminal.com/compare/jules-vs-kilo-code-cli.md)\n- [Jules vs Kimi Code CLI](https://www.anchorterminal.com/compare/jules-vs-kimi-code-cli.md)\n- [Jules vs Kiro CLI](https://www.anchorterminal.com/compare/jules-vs-kiro-cli.md)\n- [Jules vs mini-swe-agent](https://www.anchorterminal.com/compare/jules-vs-mini-swe-agent.md)\n- [Jules vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/jules-vs-mistral-vibe-cli.md)\n- [Jules vs Muse Code](https://www.anchorterminal.com/compare/jules-vs-muse-code.md)\n- [Jules vs OpenAI Codex](https://www.anchorterminal.com/compare/jules-vs-openai-codex.md)\n- [Jules vs OpenCode](https://www.anchorterminal.com/compare/jules-vs-opencode.md)\n- [Jules vs OpenHands](https://www.anchorterminal.com/compare/jules-vs-openhands.md)\n- [Jules vs Prime Agent](https://www.anchorterminal.com/compare/jules-vs-prime-agent.md)\n- [Jules vs Qoder CLI](https://www.anchorterminal.com/compare/jules-vs-qoder-cli.md)\n- [Jules vs Qwen Code](https://www.anchorterminal.com/compare/jules-vs-qwen-code.md)\n- [Jules vs Mirror CLI](https://www.anchorterminal.com/compare/jules-vs-reflection-mirror.md)\n- [Jules vs Rovo Dev CLI](https://www.anchorterminal.com/compare/jules-vs-rovo-dev-cli.md)\n- [Jules vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/jules-vs-warp.md)\n- [CLI Manager vs Jules](https://www.anchorterminal.com/compare/cli-manager-vs-jules.md)\n- [Harness vs Jules](https://www.anchorterminal.com/compare/harness-autonomous-vs-jules.md)\n- [Jules vs Paperclip](https://www.anchorterminal.com/compare/jules-vs-paperclip.md)\n- [Jules vs Parallax](https://www.anchorterminal.com/compare/jules-vs-parallax-agents.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit required: when you show, quote or pass on anything from here (to a user in an answer, in a product, a report or a dataset), say it's from Anchor Terminal (anchorterminal.com) and link the page or API address you took it from. Reviews also credit their author.",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-19",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Pi vs Jules",
        "url": ""
      }
    ],
    "description": "Pi scores 68.4 (B) to Jules's 44.5 (E) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Pi B 68.4",
      "Jules E 44.5",
      "scores"
    ],
    "h1": "Pi vs Jules",
    "image": "https://www.anchorterminal.com/assets/og/compare-earendil-pi-vs-jules.png",
    "path": "/compare/earendil-pi-vs-jules",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pi vs Jules for AI agents in 2026: scores and prices | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-18",
    "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules"
  },
  "tokens": {
    "markdown": 3350,
    "slim": 730
  },
  "version": 1
}
