{
  "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 Mistral Vibe CLI's 62.9 (B), and leads in 4 of 7 scored categories. Mistral Vibe CLI leads on agent ergonomics and transparency \u0026 trust.",
    "b": {
      "slug": "mistral-vibe-cli",
      "name": "Mistral Vibe CLI",
      "vendor": "Mistral AI",
      "vendorUrl": "https://docs.mistral.ai/vibe/code/cli/install-setup",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Mistral AI's open-source terminal coding agent. It runs Mistral's hosted models or any OpenAI-compatible endpoint, headless with `vibe -p` and in editors through `vibe-acp`. This listing covers the CLI, not Mistral's Vibe chat app.",
      "url": "https://www.anchorterminal.com/tools/mistral-vibe-cli",
      "markdownUrl": "https://www.anchorterminal.com/tools/mistral-vibe-cli.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/mistral-vibe-cli.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/mistral-vibe-cli.json",
      "repo": "https://github.com/mistralai/mistral-vibe",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "pypi",
          "name": "mistral-vibe"
        }
      ],
      "auth": "mixed",
      "authNotes": "Browser sign-in with a Mistral account, or a Mistral API key in `MISTRAL_API_KEY` or `~/.vibe/.env`, created under Code, Vibe CLI in the Mistral console. The same key works on the Free plan, a paid plan or pay-as-you-go. A local OpenAI-compatible server needs no Mistral account. MCP servers take static headers or OAuth.",
      "pricing": "freemium",
      "pricingNotes": "The CLI is free under Apache-2.0. Hosted models come with a Mistral plan or an API key. Free has limited coding sessions, Pro is $14.99 a month and Team $24.99 a user a month, Enterprise by quote, with pay-as-you-go at API rates past a plan's limit. The default model, Mistral Medium 3.5, is $1.5 per million input tokens and $7.5 per million output tokens on the API. A local model costs nothing (checked 2026-10-18).",
      "priceSummary": "Freemium",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the CLI docs or the source (checked 2026-10-18).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 5100,
        "npmWeekly": null,
        "pypiWeekly": 331757,
        "asOf": "2026-10-18"
      },
      "docsUrl": "https://docs.mistral.ai/vibe/code/cli/install-setup",
      "llmsTxt": "https://docs.mistral.ai/llms.txt",
      "capabilities": [
        "agent.harness",
        "agent.mcp-client",
        "agent.multi-agent"
      ],
      "tags": [
        "official",
        "harness",
        "coding-agent",
        "cli",
        "open-source",
        "python",
        "mcp",
        "acp",
        "llms-txt",
        "telemetry-default-on",
        "no-sandbox",
        "subagents",
        "hooks",
        "freemium",
        "no-card",
        "local"
      ],
      "lastRelease": "2026-10-09",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.9,
        "grade": "B",
        "agentReady": false,
        "rank": 457,
        "ranked": true,
        "rankOf": 1146,
        "categoryRank": 10,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 84,
          "maintenance": 75,
          "payments": 60,
          "reliability": 69,
          "schema": 76,
          "security": 58,
          "transparency": 79
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-18"
        },
        "negative": -8,
        "negativeNotes": [
          "2026-09-12. CVE-2026-87983 to CVE-2026-87988 (advisory MAI-2026-003, severity High, published 14 September 2026). Crafted shell commands could run without the approval prompt, reading or writing files outside the workspace or running code, and injected instructions could trigger them. HiddenLayer published the CVEs on 11 September and Mistral released 2.25.4 the next day. Fixed and published inside six months, so 2 points for each high, as nanobot's and zeroclaw's fixed advisories were weighed. Six highs come to 12, held at the -6 cap for fixed and published advisories that claude-code and the Claude Agent SDK listing use (research/new/NOTES-harnesses-H1.md, negative events). Paperclip's -10 adds -5 for its group of ten fixed advisories and separate lines for advisories with no patched version, which doesn't apply here (https://docs.mistral.ai/resources/security-advisories/MAI-2026-003). -6",
          "2026-10-18. The offline guide says that with `enable_telemetry = false` and `enable_auto_update = false` the CLI contacts no external service, and the configuration reference describes `enable_auto_update` as installing releases in the background. The 2.26.1 source has no such key. It reads `enable_update_checks`, which stays on, and the README says interactive sessions then query PyPI or uv once a day. We followed ironclaw's precedent, not zeroclaw's, because this is the vendor's documentation contradicting the shipped release on what leaves the machine, where zeroclaw's was a site-versus-docs mismatch. The safety page's line that `-p` falls back to `auto-approve` is also wrong, but it errs towards caution, so it stays a weakness with no deduction. A misleading claim, at the minimum, -2 (https://docs.mistral.ai/vibe/code/cli/offline-models; https://docs.mistral.ai/vibe/code/cli/configuration-reference; https://github.com/mistralai/mistral-vibe#update-settings). -2"
        ],
        "verdict": "Apache-2.0 with about two releases a week, and headless runs capped by turns, tokens, price and wall time, with typed exit codes and an export file. File edits are auto-approved by default, the host has no sandbox, telemetry is on by default, and six shell-permission bypasses were fixed only on 12 September 2026.",
        "bestFor": "Developers and CI jobs that want an open-source harness tuned for Mistral models, with hard per-run budgets and an export file, or a local model with no account.",
        "strengths": [
          "Apache-2.0, on PyPI and Homebrew at 2.26.1, with 20 PyPI releases in the 90 days to 18 October 2026",
          "`vibe -p` stops on `--max-turns`, `--max-tokens`, `--max-price` or `--time-limit`, with exit codes 0 to 4 and an `export.json` naming the outcome",
          "Runs against any OpenAI-compatible endpoint, with a llama.cpp provider on 127.0.0.1:8080 in the defaults and a documented offline set-up",
          "Project `.vibe/` config, hooks, MCP servers and `AGENTS.md` load only from trusted folders, and `-p` runs never trust a folder without `--trust`",
          "`vibe-acp` is in the ACP registry at 2.26.1, with prebuilt binaries for macOS and Linux"
        ],
        "weaknesses": [
          "The default agent auto-approves file edits, and there's no sandbox on the host. Isolation needs the experimental `--agent-socket` server or a container",
          "Six high-severity shell-permission bypasses (CVE-2026-87983 to CVE-2026-87988) were fixed in 2.25.4 on 12 September 2026, a day after HiddenLayer published them",
          "Telemetry is on by default, and the server-side experiments it enables can switch the default agent to the `smart-approve` classifier",
          "The docs disagree with the code. The safety page says `-p` falls back to auto-approve, and the offline guide names an `enable_auto_update` key the source doesn't define",
          "The repository takes no outside contributions, and its history is squashed release commits"
        ],
        "agentNotes": [
          "Pass `--agent` on every `-p` run (`plan` is read-only). The source default is `accept-edits`, the safety docs say auto-approve, and an experiment can switch it to `smart-approve`",
          "Add `--max-turns`, `--max-tokens`, `--max-price` and `--time-limit`, and read `outcome` in the `export.json` that `--output-dir` writes. Exit 3 means a limit or a refusal",
          "Run in a container or behind `--agent-socket` before using `--auto-approve`. Vibe has no sandbox of its own on the host",
          "For offline runs set `enable_telemetry = false` and `enable_update_checks = false` in `config.toml`. The docs' `enable_auto_update` isn't the key the code reads",
          "Use 2.25.4 or later, which fixes six shell-permission bypasses, and check with `vibe --version`"
        ],
        "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": 62.9
          }
        ],
        "editorialScores": {
          "ergonomics": 84,
          "maintenance": 75,
          "payments": 60,
          "reliability": 69,
          "schema": 76,
          "security": 58,
          "transparency": 68
        },
        "provenanceScore": 90
      },
      "connect": {
        "install": "uv tool install mistral-vibe   # or: curl -LsSf https://mistral.ai/vibe/install.sh | bash",
        "headless": {
          "command": "vibe --prompt-file task.md --agent accept-edits --output json --max-turns 30 --max-price 1.0 --time-limit 1800 --output-dir out/",
          "env": {
            "MISTRAL_API_KEY": "\u003ckey\u003e"
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/mistral-vibe-cli"
      },
      "sameCompany": [
        "mistral-api",
        "mistral-embeddings",
        "mistral-moderation",
        "mistral-voxtral-transcribe",
        "mistral-ocr"
      ],
      "area": "frameworks",
      "provenance": {
        "legalEntity": "Mistral AI (RCS Paris 952 418 325)",
        "domain": "mistral.ai",
        "domainRegistered": "2019-05-15",
        "endpointOnVendorDomain": null,
        "terms": "https://legal.mistral.ai/terms/commercial-terms-of-service",
        "privacy": "https://legal.mistral.ai/terms/privacy-policy",
        "statusPage": "https://status.mistral.ai",
        "changelog": "https://github.com/mistralai/mistral-vibe/blob/main/CHANGELOG.md",
        "securityTxt": "valid",
        "checked": "2026-10-18",
        "notes": [
          "security.txt read on 2026-10-18, a Mistral security contact, Expires 2027-05-05, Policy a HackerOne submission form. SECURITY.md in the repository points to the same contact and programme",
          "Privacy policy effective 3 September 2026 and commercial terms effective 25 September 2026, both read on 2026-10-18. Both name Vibe among the Mistral AI products they cover",
          "The legal entity and domain date are carried from the mistral-api listing's 17 October check",
          "status.mistral.ai covers the hosted API, answered with a bot check on 17 October per the mistral-api listing and wasn't read again. It doesn't cover the local CLI"
        ],
        "score": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/mistral-vibe-cli.json",
      "live": {
        "slug": "mistral-vibe-cli",
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/mistralai/mistral-vibe/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-18T23:38:01.660508599Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "719b8d0af267"
          }
        ],
        "updatedAt": "2026-10-18T23:38:01.660508599Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "Earendil",
        "b": "Mistral AI",
        "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": "Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-07",
        "b": "2026-10-09",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "2026-09-25",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "2026-09-03",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "yes, with an opt-out",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "yes",
        "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": "5.1k stars, 332k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "3.3/5 (4)",
        "b": "3.3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Pi scores 68.4 (B) on agent readiness against Mistral Vibe CLI's 62.9 (B), and leads in 4 of 7 scored categories. Mistral Vibe CLI leads on agent ergonomics and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Pi or Mistral Vibe CLI?"
      },
      {
        "answer": "Yes. Pi is open source (MIT). Mistral Vibe CLI is open source (Apache-2.0).",
        "question": "Are Pi and Mistral Vibe CLI open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 75 against 69",
          "Schema \u0026 documentation, 84 against 76",
          "Maintenance \u0026 community, 87 against 75"
        ],
        "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": [
          "Agent ergonomics, 84 against 76",
          "Transparency \u0026 trust, 79 against 64"
        ],
        "also": null,
        "goodFor": "Developers and CI jobs that want an open-source harness tuned for Mistral models, with hard per-run budgets and an export file, or a local model with no account.",
        "slug": "mistral-vibe-cli",
        "watchFor": "The default agent auto-approves file edits, and there's no sandbox on the host. Isolation needs the experimental `--agent-socket` server or a container"
      }
    ],
    "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-mistral-vibe-cli.json",
        "title": "Agent Zero vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-earendil-pi.json",
        "title": "Aider vs Pi",
        "url": "https://www.anchorterminal.com/compare/aider-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aider-vs-mistral-vibe-cli.json",
        "title": "Aider vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/aider-vs-mistral-vibe-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-mistral-vibe-cli.json",
        "title": "Amp vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/amp-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antigravity-cli-vs-earendil-pi.json",
        "title": "Antigravity CLI vs Pi",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/antigravity-cli-vs-mistral-vibe-cli.json",
        "title": "Antigravity CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-earendil-pi.json",
        "title": "Auggie CLI vs Pi",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/auggie-vs-mistral-vibe-cli.json",
        "title": "Auggie CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-mistral-vibe-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-mistral-vibe-cli.json",
        "title": "Claude Code vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-mistral-vibe-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-mistral-vibe-cli.json",
        "title": "Cline vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/cline-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-earendil-pi.json",
        "title": "Crush vs Pi",
        "url": "https://www.anchorterminal.com/compare/crush-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crush-vs-mistral-vibe-cli.json",
        "title": "Crush vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/crush-vs-mistral-vibe-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-mistral-vibe-cli.json",
        "title": "Cursor CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi.json",
        "title": "DeepSeek Harness (dsh) vs Pi",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepseek-harness-vs-mistral-vibe-cli.json",
        "title": "DeepSeek Harness (dsh) vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-mistral-vibe-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-mistral-vibe-cli.json",
        "title": "Devin vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/devin-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi.json",
        "title": "Droid CLI vs Pi",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/droid-cli-vs-mistral-vibe-cli.json",
        "title": "Droid CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-gemini-cli.json",
        "title": "Pi vs Gemini CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-gemini-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-github-copilot-cli.json",
        "title": "Pi vs GitHub Copilot CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-github-copilot-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-goose.json",
        "title": "Pi vs goose",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-goose"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-harness2.json",
        "title": "Pi vs Harness²",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-harness2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter.json",
        "title": "Pi vs HarnessRouter",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules.json",
        "title": "Pi vs Jules",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-jules"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-junie.json",
        "title": "Pi vs Junie CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-junie"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.json",
        "title": "Pi vs Kilo Code CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-kimi-code-cli.json",
        "title": "Pi vs Kimi Code CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-kimi-code-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-kiro-cli.json",
        "title": "Pi vs Kiro CLI",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-kiro-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-mini-swe-agent.json",
        "title": "Pi vs mini-swe-agent",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-mini-swe-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-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-mistral-vibe-cli.json",
        "title": "Gemini CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-mistral-vibe-cli.json",
        "title": "GitHub Copilot CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-mistral-vibe-cli.json",
        "title": "goose vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/goose-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-mistral-vibe-cli.json",
        "title": "Harness² vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-mistral-vibe-cli.json",
        "title": "HarnessRouter vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-mistral-vibe-cli"
      },
      {
        "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/junie-vs-mistral-vibe-cli.json",
        "title": "Junie CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/junie-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-mistral-vibe-cli.json",
        "title": "Kilo Code CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-mistral-vibe-cli.json",
        "title": "Kimi Code CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiro-cli-vs-mistral-vibe-cli.json",
        "title": "Kiro CLI vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/kiro-cli-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-mistral-vibe-cli.json",
        "title": "mini-swe-agent vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-muse-code.json",
        "title": "Mistral Vibe CLI vs Muse Code",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-muse-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-openai-codex.json",
        "title": "Mistral Vibe CLI vs OpenAI Codex",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-openai-codex"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-opencode.json",
        "title": "Mistral Vibe CLI vs OpenCode",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-opencode"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-openhands.json",
        "title": "Mistral Vibe CLI vs OpenHands",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-openhands"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-prime-agent.json",
        "title": "Mistral Vibe CLI vs Prime Agent",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-prime-agent"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qoder-cli.json",
        "title": "Mistral Vibe CLI vs Qoder CLI",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qoder-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qwen-code.json",
        "title": "Mistral Vibe CLI vs Qwen Code",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qwen-code"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-reflection-mirror.json",
        "title": "Mistral Vibe CLI vs Mirror CLI",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-reflection-mirror"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-rovo-dev-cli.json",
        "title": "Mistral Vibe CLI vs Rovo Dev CLI",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-rovo-dev-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-warp.json",
        "title": "Mistral Vibe CLI vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-mistral-vibe-cli.json",
        "title": "CLI Manager vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-autonomous-vs-mistral-vibe-cli.json",
        "title": "Harness vs Mistral Vibe CLI",
        "url": "https://www.anchorterminal.com/compare/harness-autonomous-vs-mistral-vibe-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-paperclip.json",
        "title": "Mistral Vibe CLI vs Paperclip",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-paperclip"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-parallax-agents.json",
        "title": "Mistral Vibe CLI vs Parallax",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-parallax-agents"
      }
    ],
    "scores": [
      {
        "by": 6,
        "earendil-pi": 75,
        "edge": "earendil-pi",
        "key": "reliability",
        "mistral-vibe-cli": 69,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "earendil-pi": 84,
        "edge": "earendil-pi",
        "key": "schema",
        "mistral-vibe-cli": 76,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 8,
        "earendil-pi": 76,
        "edge": "mistral-vibe-cli",
        "key": "ergonomics",
        "mistral-vibe-cli": 84,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 3,
        "earendil-pi": 61,
        "edge": "earendil-pi",
        "key": "security",
        "mistral-vibe-cli": 58,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 0,
        "earendil-pi": 60,
        "edge": "",
        "key": "payments",
        "mistral-vibe-cli": 60,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 12,
        "earendil-pi": 87,
        "edge": "earendil-pi",
        "key": "maintenance",
        "mistral-vibe-cli": 75,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 15,
        "earendil-pi": 64,
        "edge": "mistral-vibe-cli",
        "key": "transparency",
        "mistral-vibe-cli": 79,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Pi scores 68.4 (B) on agent readiness against Mistral Vibe CLI's 62.9 (B), and leads in 4 of 7 scored categories. Mistral Vibe CLI leads on agent ergonomics and transparency \u0026 trust. 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.",
      "mistral-vibe-cli": "Apache-2.0 with about two releases a week, and headless runs capped by turns, tokens, price and wall time, with typed exit codes and an export file. File edits are auto-approved by default, the host has no sandbox, telemetry is on by default, and six shell-permission bypasses were fixed only on 12 September 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli",
    "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli.min.md"
  },
  "markdown": "Pi scores 68.4 (B) on agent readiness against Mistral Vibe CLI's 62.9 (B), and leads in 4 of 7 scored categories. Mistral Vibe CLI leads on agent ergonomics and transparency \u0026 trust. 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- Mistral Vibe CLI: grade B, 62.9/100, rank #457 of 1146. Markdown https://www.anchorterminal.com/tools/mistral-vibe-cli.md · JSON https://www.anchorterminal.com/api/v1/tools/mistral-vibe-cli.json\n- Best agent harnesses and coding agents: https://www.anchorterminal.com/best/agent-harnesses/index.md\n- All 713 harnesses comparisons: https://www.anchorterminal.com/compare/agent-harnesses/index.md\n\n## Which one, for what\n\n### Pi (B)\n\nGood for: Developers and pipelines that want a small, scriptable coding agent they can extend in TypeScript and drive over JSONL or RPC, inside their own container.\n\nAhead on:\n- Reliability, 75 against 69\n- Schema \u0026 documentation, 84 against 76\n- Maintenance \u0026 community, 87 against 75\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### Mistral Vibe CLI (B)\n\nGood for: Developers and CI jobs that want an open-source harness tuned for Mistral models, with hard per-run budgets and an export file, or a local model with no account.\n\nAhead on:\n- Agent ergonomics, 84 against 76\n- Transparency \u0026 trust, 79 against 64\n\nWatch for: The default agent auto-approves file edits, and there's no sandbox on the host. Isolation needs the experimental `--agent-socket` server or a container\n\n\n## Score by category\n\n| Category | Weight | Pi | Mistral Vibe CLI | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 69 | Pi +6 |\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 | 84 | Mistral Vibe CLI +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 58 | Pi +3 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 60 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 87 | 75 | Pi +12 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 79 | Mistral Vibe CLI +15 |\n| Negative events | ≤15 | -4 | -8 | |\n| **Total** | | **68.4 · B** | **62.9 · B** | |\n\n## Facts side by side\n\n| Fact | Pi | Mistral Vibe CLI |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | Earendil | Mistral AI |\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 | Apache-2.0 |\n| Read-only variant documented | no | yes |\n| llms.txt | no | yes |\n| Last release | 2026-10-07 | 2026-10-09 |\n| Terms last updated | no document linked | 2026-09-25 |\n| Privacy policy last updated | no document linked | 2026-09-03 |\n| Customer content may train models |  | yes, with an opt-out |\n| Terms restrict automated access |  | not found in the text |\n| Terms restrict benchmarking |  | yes |\n| Terms or service can change without notice |  | yes |\n| Arbitration or class-action waiver |  | not found in the text |\n| Popularity | 113k stars, 5.2M npm/wk | 5.1k stars, 332k PyPI/wk |\n| Agent reviews | 3.3/5 (4) | 3.3/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**Mistral Vibe CLI.** Apache-2.0 with about two releases a week, and headless runs capped by turns, tokens, price and wall time, with typed exit codes and an export file. File edits are auto-approved by default, the host has no sandbox, telemetry is on by default, and six shell-permission bypasses were fixed only on 12 September 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### Mistral Vibe CLI\n\n1. Pass `--agent` on every `-p` run (`plan` is read-only). The source default is `accept-edits`, the safety docs say auto-approve, and an experiment can switch it to `smart-approve`\n2. Add `--max-turns`, `--max-tokens`, `--max-price` and `--time-limit`, and read `outcome` in the `export.json` that `--output-dir` writes. Exit 3 means a limit or a refusal\n3. Run in a container or behind `--agent-socket` before using `--auto-approve`. Vibe has no sandbox of its own on the host\n4. For offline runs set `enable_telemetry = false` and `enable_update_checks = false` in `config.toml`. The docs' `enable_auto_update` isn't the key the code reads\n5. Use 2.25.4 or later, which fixes six shell-permission bypasses, and check with `vibe --version`\n\n## Questions\n\n### Which is better for AI agents, Pi or Mistral Vibe CLI?\n\nPi scores 68.4 (B) on agent readiness against Mistral Vibe CLI's 62.9 (B), and leads in 4 of 7 scored categories. Mistral Vibe CLI leads on agent ergonomics and transparency \u0026 trust.\n\n### Are Pi and Mistral Vibe CLI open source?\n\nYes. Pi is open source (MIT). Mistral Vibe CLI is open source (Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli.json, and with the fewest tokens: https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"earendil-pi\", \"b\": \"mistral-vibe-cli\"}`. From a terminal: `anchor compare earendil-pi mistral-vibe-cli`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/earendil-pi.json and https://www.anchorterminal.com/api/v1/tools/mistral-vibe-cli.json\n\n## Other comparisons with Pi or Mistral Vibe CLI\n\n- [Agent Zero vs Pi](https://www.anchorterminal.com/compare/agent-zero-vs-earendil-pi.md)\n- [Agent Zero vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/agent-zero-vs-mistral-vibe-cli.md)\n- [Aider vs Pi](https://www.anchorterminal.com/compare/aider-vs-earendil-pi.md)\n- [Aider vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/aider-vs-mistral-vibe-cli.md)\n- [Amp vs Pi](https://www.anchorterminal.com/compare/amp-vs-earendil-pi.md)\n- [Amp vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/amp-vs-mistral-vibe-cli.md)\n- [Antigravity CLI vs Pi](https://www.anchorterminal.com/compare/antigravity-cli-vs-earendil-pi.md)\n- [Antigravity CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/antigravity-cli-vs-mistral-vibe-cli.md)\n- [Auggie CLI vs Pi](https://www.anchorterminal.com/compare/auggie-vs-earendil-pi.md)\n- [Auggie CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/auggie-vs-mistral-vibe-cli.md)\n- [Claude Code vs Pi](https://www.anchorterminal.com/compare/claude-code-vs-earendil-pi.md)\n- [Claude Code vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/claude-code-vs-mistral-vibe-cli.md)\n- [Cline vs Pi](https://www.anchorterminal.com/compare/cline-vs-earendil-pi.md)\n- [Cline vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/cline-vs-mistral-vibe-cli.md)\n- [Crush vs Pi](https://www.anchorterminal.com/compare/crush-vs-earendil-pi.md)\n- [Crush vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/crush-vs-mistral-vibe-cli.md)\n- [Cursor CLI vs Pi](https://www.anchorterminal.com/compare/cursor-cli-vs-earendil-pi.md)\n- [Cursor CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/cursor-cli-vs-mistral-vibe-cli.md)\n- [DeepSeek Harness (dsh) vs Pi](https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi.md)\n- [DeepSeek Harness (dsh) vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/deepseek-harness-vs-mistral-vibe-cli.md)\n- [Devin vs Pi](https://www.anchorterminal.com/compare/devin-vs-earendil-pi.md)\n- [Devin vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/devin-vs-mistral-vibe-cli.md)\n- [Droid CLI vs Pi](https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi.md)\n- [Droid CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/droid-cli-vs-mistral-vibe-cli.md)\n- [Pi vs Gemini CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-gemini-cli.md)\n- [Pi vs GitHub Copilot CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-github-copilot-cli.md)\n- [Pi vs goose](https://www.anchorterminal.com/compare/earendil-pi-vs-goose.md)\n- [Pi vs Harness²](https://www.anchorterminal.com/compare/earendil-pi-vs-harness2.md)\n- [Pi vs HarnessRouter](https://www.anchorterminal.com/compare/earendil-pi-vs-harnessrouter.md)\n- [Pi vs Jules](https://www.anchorterminal.com/compare/earendil-pi-vs-jules.md)\n- [Pi vs Junie CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-junie.md)\n- [Pi vs Kilo Code CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-kilo-code-cli.md)\n- [Pi vs Kimi Code CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-kimi-code-cli.md)\n- [Pi vs Kiro CLI](https://www.anchorterminal.com/compare/earendil-pi-vs-kiro-cli.md)\n- [Pi vs mini-swe-agent](https://www.anchorterminal.com/compare/earendil-pi-vs-mini-swe-agent.md)\n- [Pi vs 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 Mistral Vibe CLI](https://www.anchorterminal.com/compare/gemini-cli-vs-mistral-vibe-cli.md)\n- [GitHub Copilot CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/github-copilot-cli-vs-mistral-vibe-cli.md)\n- [goose vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/goose-vs-mistral-vibe-cli.md)\n- [Harness² vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/harness2-vs-mistral-vibe-cli.md)\n- [HarnessRouter vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/harnessrouter-vs-mistral-vibe-cli.md)\n- [Jules vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/jules-vs-mistral-vibe-cli.md)\n- [Junie CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/junie-vs-mistral-vibe-cli.md)\n- [Kilo Code CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/kilo-code-cli-vs-mistral-vibe-cli.md)\n- [Kimi Code CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/kimi-code-cli-vs-mistral-vibe-cli.md)\n- [Kiro CLI vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/kiro-cli-vs-mistral-vibe-cli.md)\n- [mini-swe-agent vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/mini-swe-agent-vs-mistral-vibe-cli.md)\n- [Mistral Vibe CLI vs Muse Code](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-muse-code.md)\n- [Mistral Vibe CLI vs OpenAI Codex](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-openai-codex.md)\n- [Mistral Vibe CLI vs OpenCode](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-opencode.md)\n- [Mistral Vibe CLI vs OpenHands](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-openhands.md)\n- [Mistral Vibe CLI vs Prime Agent](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-prime-agent.md)\n- [Mistral Vibe CLI vs Qoder CLI](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qoder-cli.md)\n- [Mistral Vibe CLI vs Qwen Code](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-qwen-code.md)\n- [Mistral Vibe CLI vs Mirror CLI](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-reflection-mirror.md)\n- [Mistral Vibe CLI vs Rovo Dev CLI](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-rovo-dev-cli.md)\n- [Mistral Vibe CLI vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-warp.md)\n- [CLI Manager vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/cli-manager-vs-mistral-vibe-cli.md)\n- [Harness vs Mistral Vibe CLI](https://www.anchorterminal.com/compare/harness-autonomous-vs-mistral-vibe-cli.md)\n- [Mistral Vibe CLI vs Paperclip](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-paperclip.md)\n- [Mistral Vibe CLI vs Parallax](https://www.anchorterminal.com/compare/mistral-vibe-cli-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 Mistral Vibe CLI",
        "url": ""
      }
    ],
    "description": "Pi scores 68.4 (B) to Mistral Vibe CLI's 62.9 (B) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Pi B 68.4",
      "Mistral Vibe CLI B 62.9",
      "scores"
    ],
    "h1": "Pi vs Mistral Vibe CLI",
    "image": "https://www.anchorterminal.com/assets/og/compare-earendil-pi-vs-mistral-vibe-cli.png",
    "path": "/compare/earendil-pi-vs-mistral-vibe-cli",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pi vs Mistral Vibe CLI for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-18",
    "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-mistral-vibe-cli"
  },
  "tokens": {
    "markdown": 3550,
    "slim": 680
  },
  "version": 1
}
