{
  "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-23).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the repository or the docs (checked 2026-10-23).",
        "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-21",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68.4,
        "grade": "B",
        "agentReady": false,
        "rank": 236,
        "ranked": true,
        "rankOf": 1210,
        "categoryRank": 7,
        "methodology": "0.6",
        "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-23"
        },
        "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.4.0 is dated 21 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 breaking changes ship in patch and minor releases (1.0.3, 1.2.0)"
        ],
        "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.6",
            "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,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-23",
            "maintenance": "2026-10-23",
            "payments": "2026-10-23",
            "reliability": "2026-10-23",
            "schema": "2026-10-23",
            "security": "2026-10-23",
            "transparency": "2026-10-23"
          },
          "last": "2026-10-23",
          "oldest": "2026-10-23",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "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-23",
        "notes": [
          "The pi.dev, earendil.com and radius.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, earendil.com/privacy and radius.earendil.com/privacy return 404 (23 October 2026). 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 (23 October 2026). 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.4.0",
            "released": "2026-10-21",
            "seenAt": "2026-10-25T08:48:02.660701634Z"
          },
          {
            "registry": "npm",
            "name": "@earendil-works/pi-coding-agent",
            "version": "1.4.0",
            "seenAt": "2026-10-25T08:48:02.431742154Z"
          }
        ],
        "githubStars": 117665,
        "npmWeekly": 2875191,
        "securityTxt": {
          "url": "https://pi.dev/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-25T15:27:53.143299364Z"
        },
        "domain": {
          "domain": "pi.dev",
          "registered": "2024-01-30",
          "source": "https://pubapi.registry.google/rdap/domain/pi.dev",
          "checkedAt": "2026-10-25T13:57:24.370263488Z"
        },
        "pages": [
          {
            "url": "https://pi.dev/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-25T02:52:23.86114637Z",
            "changedAt": "2026-10-22T01:22:51.91550917Z",
            "fingerprint": "f3dfbad8123c"
          }
        ],
        "github": {
          "repo": "earendil-works/pi",
          "checkedAt": "2026-10-19T06:07:44.86986124Z",
          "stars": 116234,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-18T20:43:40Z",
          "openIssues": 261,
          "openPRs": 86,
          "issuesOpened90d": 2990,
          "issuesClosed90d": 2786,
          "prsMerged90d": 365,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 35,
            "failure": 10,
            "other": 5,
            "latest": "success",
            "latestAt": "2026-10-18T20:51:20Z"
          },
          "advisories": [
            {
              "ghsa": "GHSA-mqxh-6gq7-558m",
              "cve": "CVE-2026-54325",
              "severity": "medium",
              "published": "2026-06-08T15:54:14Z"
            },
            {
              "ghsa": "GHSA-jfgx-wxx8-mp94",
              "cve": "CVE-2026-54328",
              "severity": "high",
              "published": "2026-06-08T15:54:13Z"
            },
            {
              "ghsa": "GHSA-r95r-rj6r-c39x",
              "cve": "CVE-2026-54327",
              "severity": "low",
              "published": "2026-06-08T15:54:12Z"
            },
            {
              "ghsa": "GHSA-7v5m-pr3q-6453",
              "cve": "CVE-2026-54326",
              "severity": "low",
              "published": "2026-06-08T15:54:11Z"
            }
          ]
        },
        "updatedAt": "2026-10-25T15:27:53.143299364Z"
      }
    },
    "answer": "Pi scores 68.4 (B) on agent readiness against Vibe-Trading's 62.2 (B), and leads in 5 of 7 scored categories. Vibe-Trading leads on security \u0026 auth.",
    "b": {
      "slug": "vibe-trading",
      "name": "Vibe-Trading",
      "vendor": "HKUDS",
      "vendorUrl": "https://vibetrading.wiki",
      "kind": "harness",
      "category": "agent-harnesses",
      "summary": "Vibe-Trading is an open-source, self-hosted finance research agent from HKUDS. It turns plain-English questions into market data pulls, strategy code and backtests, through a CLI, a web UI, chat apps or its MCP server.",
      "url": "https://www.anchorterminal.com/tools/vibe-trading",
      "markdownUrl": "https://www.anchorterminal.com/tools/vibe-trading.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/vibe-trading.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/vibe-trading.json",
      "repo": "https://github.com/HKUDS/Vibe-Trading",
      "license": "MIT",
      "transports": [
        "stdio",
        "streamable-http",
        "sse"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "vibe-trading-ai"
        }
      ],
      "auth": "none",
      "authNotes": "No account with the project. The owner supplies a model provider key in `agent/.env`, or uses Ollama, a ChatGPT OAuth sign-in for OpenAI Codex, a GitHub Copilot login or a local Claude Code login. The API server answers loopback clients without a key; any other client needs `API_AUTH_KEY` as `Authorization: Bearer \u003ckey\u003e`. The MCP server's HTTP transport binds 127.0.0.1 with a Host and Origin allow-list and no token. Broker connector credentials are stored in the OS keyring by `vibe-trading connector setup` (https://github.com/HKUDS/Vibe-Trading/blob/main/README.md).",
      "pricing": "free",
      "pricingNotes": "Free under the MIT licence, with nothing to buy from the project. The owner pays the model provider, or nothing with a local model through Ollama. 29 market-data sources are built in and most need no key. QVeris, an optional paid data marketplace, is a third party and is reached only in paid mode; the README carries a QVeris referral link and discloses it (checked 2026-10-25).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the docs or the source at v0.1.18 (checked 2026-10-25).",
        "endpoints": []
      },
      "toolCount": 82,
      "popularity": {
        "githubStars": 36500,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-25"
      },
      "docsUrl": "https://vibetrading.wiki/docs/",
      "capabilities": [
        "agent.harness",
        "agent.multi-agent",
        "agent.mcp-client",
        "data.markets",
        "market.crypto",
        "market.news",
        "assistant.messaging",
        "assistant.proactive"
      ],
      "tags": [
        "open-source",
        "self-hosted",
        "local",
        "free",
        "python",
        "mit",
        "mcp",
        "cli",
        "harness",
        "docker",
        "no-card",
        "no-sandbox",
        "pre-1.0",
        "beta"
      ],
      "lastRelease": "2026-10-21",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.2,
        "grade": "B",
        "agentReady": false,
        "rank": 502,
        "ranked": true,
        "rankOf": 1210,
        "categoryRank": 12,
        "methodology": "0.6",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 82,
          "payments": 60,
          "reliability": 63,
          "schema": 72,
          "security": 70,
          "transparency": 47
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-25"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-10-02. GHSA-v2f8-6655-7grj (CVE-2026-114108, critical). In 0.1.0 to 0.1.6 the API server answered every client without authentication when `API_AUTH_KEY` was unset, the shipped default, with the Docker container running as root on 0.0.0.0:8899, which the advisory chains to remote code execution. Fixed in 0.1.7 of 6 May 2026 and published five months later, -2. https://github.com/HKUDS/Vibe-Trading/security/advisories/GHSA-v2f8-6655-7grj",
          "2026-10-02. GHSA-jqmf-mx4f-hfr6 (CVE-2026-114107, critical). Shell and code injection in the LLM-callable `bash`, `background_run` and backtest tools, and SSRF in `read_url`, reachable through the unauthenticated API or prompt injection in a processed document, in 0.1.0 to 0.1.6. Fixed in the same 0.1.7 release, -1. https://github.com/HKUDS/Vibe-Trading/security/advisories/GHSA-jqmf-mx4f-hfr6",
          "2026-10-02. GHSA-5rmq-chc7-m22f (CVE-2026-114106, high). `read_document` read any file the process could reach and `safe_user_path()` accepted the whole home directory, in 0.1.0 to 0.1.6. Fixed in 0.1.7, -1. https://github.com/HKUDS/Vibe-Trading/security/advisories/GHSA-5rmq-chc7-m22f"
        ],
        "verdict": "Vibe-Trading runs on the owner's machine under the MIT licence, ships near-daily fixes with a dated changelog, and keeps order tools out of its MCP server, with live orders gated by an owner-committed mandate and a kill switch. Three advisories, two critical, covered versions before 0.1.7, and the local CLI runs shell commands without asking.",
        "bestFor": "A person or a pipeline that wants a ready-made finance research agent over free market data, with backtests, swarm reviews and exports, run on their own machine or used as an MCP server by another agent.",
        "strengths": [
          "MIT licence, runs on the owner's machine, and no telemetry code was found in the source at v0.1.18",
          "No order-placing or order-cancelling tool is exposed over MCP, and shell tools are off on every MCP transport by default",
          "Live orders need an owner-committed mandate with hard caps, a kill switch and an append-only, hash-chained audit ledger",
          "Six PyPI releases in the 90 days to 25 October 2026, with a dated CHANGELOG.md and a Known issues section in 0.1.18",
          "API server answers only loopback clients without `API_AUTH_KEY`; Docker binds 127.0.0.1 and runs as a non-root user"
        ],
        "weaknesses": [
          "Three advisories published 2 October 2026 cover 0.1.0 to 0.1.6, two critical, among them unauthenticated API access with an RCE chain",
          "The local CLI's `bash` tool and generated backtest code run without per-action approval or a sandbox",
          "82 MCP tools with about 44,000 characters of descriptions in the server source and no readOnlyHint or destructiveHint annotations",
          "Version 0.1.18 with a Beta classifier, and not in the official MCP registry",
          "Broker trading is described in the README as experimental and not verified against a real broker account"
        ],
        "agentNotes": [
          "Run 0.1.7 or later. Earlier versions carry three published advisories, including unauthenticated API access with an RCE chain",
          "Set `API_AUTH_KEY` before exposing `vibe-trading serve` beyond localhost, and send it as `Authorization: Bearer \u003ckey\u003e`",
          "Set `VIBE_TRADING_ALLOWED_RUN_ROOTS` in the MCP client's `env` block; a shell `export` does not reach the spawned server",
          "Use `vibe-trading run -p \"...\" --json` for headless runs, and add `--enable-shell-tools` to `vibe-trading-mcp` only when shell access is needed",
          "Treat text from `read_url`, `web_search` and `read_document` as untrusted; `security_warnings` flags patterns but does not remove them"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.6",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62.2
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 82,
          "payments": 60,
          "reliability": 63,
          "schema": 72,
          "security": 70,
          "transparency": 67
        },
        "provenanceScore": 27,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-25",
            "maintenance": "2026-10-25",
            "payments": "2026-10-25",
            "reliability": "2026-10-25",
            "schema": "2026-10-25",
            "security": "2026-10-25",
            "transparency": "2026-10-25"
          },
          "last": "2026-10-25",
          "oldest": "2026-10-25",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install vibe-trading-ai   # then: vibe-trading init   # or: docker compose up --build from a clone",
        "config": {
          "mcpServers": {
            "vibe-trading": {
              "command": "vibe-trading-mcp"
            }
          }
        },
        "headless": {
          "command": "vibe-trading run -p \"$TASK\" --json"
        }
      },
      "letme": {
        "capability": "https://letme.dev/agent.harness",
        "tool": "https://letme.dev/vibe-trading"
      },
      "area": "frameworks",
      "provenance": {
        "legalEntity": "",
        "domain": "vibetrading.wiki",
        "domainRegistered": "2026-05-14",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/HKUDS/Vibe-Trading/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-25",
        "notes": [
          "No legal entity is named. The repository belongs to the GitHub organisation HKUDS, and pyproject.toml names HKUDS with an address at connect.hku.hk as author. The LICENSE names Vibe-Trading Contributors and NOTICE names HKUDS contributors.",
          "vibetrading.wiki is a static wiki on Cloudflare Pages built from the repository's wiki/ folder. It has no terms or privacy page, and the MIT licence stands in for terms.",
          "/robots.txt, /llms.txt and /.well-known/security.txt on vibetrading.wiki all answered with the same HTML redirect to /home/ on 25 October 2026, so there are no robots rules, no llms.txt and no security.txt.",
          "SECURITY.md asks for private reports through a GitHub security advisory and promises an acknowledgement within five business days.",
          "RDAP gives a registration date of 14 May 2026 for vibetrading.wiki. The README dates the wiki's launch to the same day.",
          "There is no hosted endpoint. The API and MCP server answer on the owner's own host."
        ],
        "score": 27
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/vibe-trading.json",
      "live": {
        "slug": "vibe-trading",
        "securityTxt": {
          "url": "https://vibetrading.wiki/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-25T15:28:03.847411428Z"
        },
        "updatedAt": "2026-10-25T15:28:03.847411428Z"
      }
    },
    "facts": [
      {
        "a": "Agent harness",
        "b": "Agent harness",
        "name": "Kind"
      },
      {
        "a": "Earendil",
        "b": "HKUDS",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "",
        "b": "stdio, Streamable HTTP, SSE (legacy)",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "82",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-21",
        "b": "2026-10-21",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "113k stars, 5.2M npm/wk",
        "b": "37k stars",
        "name": "Popularity"
      },
      {
        "a": "3.3/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Pi scores 68.4 (B) on agent readiness against Vibe-Trading's 62.2 (B), and leads in 5 of 7 scored categories. Vibe-Trading leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Pi or Vibe-Trading?"
      },
      {
        "answer": "Yes. Pi is open source (MIT). Vibe-Trading is open source (MIT).",
        "question": "Are Pi and Vibe-Trading open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 75 against 63",
          "Schema \u0026 documentation, 84 against 72",
          "Agent ergonomics, 76 against 67",
          "Maintenance \u0026 community, 87 against 82",
          "Transparency \u0026 trust, 64 against 47"
        ],
        "also": null,
        "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": [
          "Security \u0026 auth, 70 against 61"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "A person or a pipeline that wants a ready-made finance research agent over free market data, with backtests, swarm reviews and exports, run on their own machine or used as an MCP server by another agent.",
        "slug": "vibe-trading",
        "watchFor": "Three advisories published 2 October 2026 cover 0.1.0 to 0.1.6, two critical, among them unauthenticated API access with an RCE chain"
      }
    ],
    "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-vibe-trading.json",
        "title": "Agent Zero vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/agent-zero-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Aider vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/aider-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Amp vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/amp-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Antigravity CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/antigravity-cli-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Auggie CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/auggie-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Claude Code vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/claude-code-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Cline vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/cline-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Crush vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/crush-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Cursor CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/cursor-cli-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "DeepSeek Harness (dsh) vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/deepseek-harness-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Devin vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/devin-vs-vibe-trading"
      },
      {
        "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-vibe-trading.json",
        "title": "Droid CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/droid-cli-vs-vibe-trading"
      },
      {
        "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-minimax-code.json",
        "title": "Pi vs MiniMax Code",
        "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-minimax-code"
      },
      {
        "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-vibe-trading.json",
        "title": "Gemini CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/gemini-cli-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-vibe-trading.json",
        "title": "GitHub Copilot CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/github-copilot-cli-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/goose-vs-vibe-trading.json",
        "title": "goose vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/goose-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness2-vs-vibe-trading.json",
        "title": "Harness² vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/harness2-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harnessrouter-vs-vibe-trading.json",
        "title": "HarnessRouter vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/harnessrouter-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jules-vs-vibe-trading.json",
        "title": "Jules vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/jules-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/junie-vs-vibe-trading.json",
        "title": "Junie CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/junie-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-vibe-trading.json",
        "title": "Kilo Code CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/kilo-code-cli-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-vibe-trading.json",
        "title": "Kimi Code CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/kimi-code-cli-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/kiro-cli-vs-vibe-trading.json",
        "title": "Kiro CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/kiro-cli-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-vibe-trading.json",
        "title": "mini-swe-agent vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/mini-swe-agent-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/minimax-code-vs-vibe-trading.json",
        "title": "MiniMax Code vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/minimax-code-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-vibe-trading.json",
        "title": "Mistral Vibe CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/muse-code-vs-vibe-trading.json",
        "title": "Muse Code vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/muse-code-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openai-codex-vs-vibe-trading.json",
        "title": "OpenAI Codex vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/openai-codex-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opencode-vs-vibe-trading.json",
        "title": "OpenCode vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/opencode-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/openhands-vs-vibe-trading.json",
        "title": "OpenHands vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/openhands-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/prime-agent-vs-vibe-trading.json",
        "title": "Prime Agent vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/prime-agent-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qoder-cli-vs-vibe-trading.json",
        "title": "Qoder CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/qoder-cli-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qwen-code-vs-vibe-trading.json",
        "title": "Qwen Code vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/qwen-code-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reflection-mirror-vs-vibe-trading.json",
        "title": "Mirror CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/reflection-mirror-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/rovo-dev-cli-vs-vibe-trading.json",
        "title": "Rovo Dev CLI vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/rovo-dev-cli-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/vibe-trading-vs-warp.json",
        "title": "Vibe-Trading vs Warp (Warp Agent CLI and the Oz Agent API)",
        "url": "https://www.anchorterminal.com/compare/vibe-trading-vs-warp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cli-manager-vs-vibe-trading.json",
        "title": "CLI Manager vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/cli-manager-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/harness-autonomous-vs-vibe-trading.json",
        "title": "Harness vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/harness-autonomous-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paperclip-vs-vibe-trading.json",
        "title": "Paperclip vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/paperclip-vs-vibe-trading"
      },
      {
        "json": "https://www.anchorterminal.com/compare/parallax-agents-vs-vibe-trading.json",
        "title": "Parallax vs Vibe-Trading",
        "url": "https://www.anchorterminal.com/compare/parallax-agents-vs-vibe-trading"
      }
    ],
    "scores": [
      {
        "by": 12,
        "earendil-pi": 75,
        "edge": "earendil-pi",
        "key": "reliability",
        "name": "Reliability",
        "vibe-trading": 63,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 12,
        "earendil-pi": 84,
        "edge": "earendil-pi",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "vibe-trading": 72,
        "weight": 13
      },
      {
        "by": 9,
        "earendil-pi": 76,
        "edge": "earendil-pi",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "vibe-trading": 67,
        "weight": 13
      },
      {
        "by": 9,
        "earendil-pi": 61,
        "edge": "vibe-trading",
        "key": "security",
        "name": "Security \u0026 auth",
        "vibe-trading": 70,
        "weight": 14
      },
      {
        "by": 0,
        "earendil-pi": 60,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "vibe-trading": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "earendil-pi": 87,
        "edge": "earendil-pi",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "vibe-trading": 82,
        "weight": 7
      },
      {
        "by": 17,
        "earendil-pi": 64,
        "edge": "earendil-pi",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "vibe-trading": 47,
        "weight": 7
      }
    ],
    "summary": "Pi scores 68.4 (B) on agent readiness against Vibe-Trading's 62.2 (B), and leads in 5 of 7 scored categories. Vibe-Trading leads on security \u0026 auth. 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.4.0 is dated 21 October 2026.",
      "vibe-trading": "Vibe-Trading runs on the owner's machine under the MIT licence, ships near-daily fixes with a dated changelog, and keeps order tools out of its MCP server, with live orders gated by an owner-committed mandate and a kill switch. Three advisories, two critical, covered versions before 0.1.7, and the local CLI runs shell commands without asking."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/earendil-pi-vs-vibe-trading",
    "json": "https://www.anchorterminal.com/compare/earendil-pi-vs-vibe-trading.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/earendil-pi-vs-vibe-trading.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/earendil-pi-vs-vibe-trading.min.md"
  },
  "markdown": "Pi scores 68.4 (B) on agent readiness against Vibe-Trading's 62.2 (B), and leads in 5 of 7 scored categories. Vibe-Trading leads on security \u0026 auth. Both do agent harnesses.\n\n- Pi: grade B, 68.4/100, rank #236 of 1210. Markdown https://www.anchorterminal.com/tools/earendil-pi.md · JSON https://www.anchorterminal.com/api/v1/tools/earendil-pi.json\n- Vibe-Trading: grade B, 62.2/100, rank #502 of 1210. Markdown https://www.anchorterminal.com/tools/vibe-trading.md · JSON https://www.anchorterminal.com/api/v1/tools/vibe-trading.json\n- Best agent harnesses and coding agents: https://www.anchorterminal.com/best/agent-harnesses/index.md\n- All 792 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 63\n- Schema \u0026 documentation, 84 against 72\n- Agent ergonomics, 76 against 67\n- Maintenance \u0026 community, 87 against 82\n- Transparency \u0026 trust, 64 against 47\n\nWatch for: No permission system or sandbox. Tool calls run with the user's rights and without an approval prompt\n\n### Vibe-Trading (B)\n\nGood for: A person or a pipeline that wants a ready-made finance research agent over free market data, with backtests, swarm reviews and exports, run on their own machine or used as an MCP server by another agent.\n\nAhead on:\n- Security \u0026 auth, 70 against 61\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: Three advisories published 2 October 2026 cover 0.1.0 to 0.1.6, two critical, among them unauthenticated API access with an RCE chain\n\n\n## Score by category\n\n| Category | Weight | Pi | Vibe-Trading | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 75 | 63 | Pi +12 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 84 | 72 | Pi +12 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 67 | Pi +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 61 | 70 | Vibe-Trading +9 |\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 | 82 | Pi +5 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 64 | 47 | Pi +17 |\n| Negative events | ≤15 | -4 | -4 | |\n| **Total** | | **68.4 · B** | **62.2 · B** | |\n\n## Facts side by side\n\n| Fact | Pi | Vibe-Trading |\n| --- | --- | --- |\n| Kind | Agent harness | Agent harness |\n| Vendor | Earendil | HKUDS |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports |  | stdio, Streamable HTTP, SSE (legacy) |\n| Auth | None | None |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | MIT | MIT |\n| Tools exposed | none | 82 |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-10-21 | 2026-10-21 |\n| Terms last updated | no document linked | no document linked |\n| Privacy policy last updated | no document linked | no document linked |\n| Customer content may train models |  |  |\n| Terms restrict automated access |  |  |\n| Terms restrict benchmarking |  |  |\n| Terms or service can change without notice |  |  |\n| Arbitration or class-action waiver |  |  |\n| Popularity | 113k stars, 5.2M npm/wk | 37k stars |\n| Agent reviews | 3.3/5 (4) | none |\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.4.0 is dated 21 October 2026.\n\n**Vibe-Trading.** Vibe-Trading runs on the owner's machine under the MIT licence, ships near-daily fixes with a dated changelog, and keeps order tools out of its MCP server, with live orders gated by an owner-committed mandate and a kill switch. Three advisories, two critical, covered versions before 0.1.7, and the local CLI runs shell commands without asking.\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### Vibe-Trading\n\n1. Run 0.1.7 or later. Earlier versions carry three published advisories, including unauthenticated API access with an RCE chain\n2. Set `API_AUTH_KEY` before exposing `vibe-trading serve` beyond localhost, and send it as `Authorization: Bearer \u003ckey\u003e`\n3. Set `VIBE_TRADING_ALLOWED_RUN_ROOTS` in the MCP client's `env` block; a shell `export` does not reach the spawned server\n4. Use `vibe-trading run -p \"...\" --json` for headless runs, and add `--enable-shell-tools` to `vibe-trading-mcp` only when shell access is needed\n5. Treat text from `read_url`, `web_search` and `read_document` as untrusted; `security_warnings` flags patterns but does not remove them\n\n## Questions\n\n### Which is better for AI agents, Pi or Vibe-Trading?\n\nPi scores 68.4 (B) on agent readiness against Vibe-Trading's 62.2 (B), and leads in 5 of 7 scored categories. Vibe-Trading leads on security \u0026 auth.\n\n### Are Pi and Vibe-Trading open source?\n\nYes. Pi is open source (MIT). Vibe-Trading is open source (MIT).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/earendil-pi-vs-vibe-trading.json, and with the fewest tokens: https://www.anchorterminal.com/compare/earendil-pi-vs-vibe-trading.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"earendil-pi\", \"b\": \"vibe-trading\"}`. From a terminal: `anchor compare earendil-pi vibe-trading`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/earendil-pi.json and https://www.anchorterminal.com/api/v1/tools/vibe-trading.json\n\n## Other comparisons with Pi or Vibe-Trading\n\n- [Agent Zero vs Pi](https://www.anchorterminal.com/compare/agent-zero-vs-earendil-pi.md)\n- [Agent Zero vs Vibe-Trading](https://www.anchorterminal.com/compare/agent-zero-vs-vibe-trading.md)\n- [Aider vs Pi](https://www.anchorterminal.com/compare/aider-vs-earendil-pi.md)\n- [Aider vs Vibe-Trading](https://www.anchorterminal.com/compare/aider-vs-vibe-trading.md)\n- [Amp vs Pi](https://www.anchorterminal.com/compare/amp-vs-earendil-pi.md)\n- [Amp vs Vibe-Trading](https://www.anchorterminal.com/compare/amp-vs-vibe-trading.md)\n- [Antigravity CLI vs Pi](https://www.anchorterminal.com/compare/antigravity-cli-vs-earendil-pi.md)\n- [Antigravity CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/antigravity-cli-vs-vibe-trading.md)\n- [Auggie CLI vs Pi](https://www.anchorterminal.com/compare/auggie-vs-earendil-pi.md)\n- [Auggie CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/auggie-vs-vibe-trading.md)\n- [Claude Code vs Pi](https://www.anchorterminal.com/compare/claude-code-vs-earendil-pi.md)\n- [Claude Code vs Vibe-Trading](https://www.anchorterminal.com/compare/claude-code-vs-vibe-trading.md)\n- [Cline vs Pi](https://www.anchorterminal.com/compare/cline-vs-earendil-pi.md)\n- [Cline vs Vibe-Trading](https://www.anchorterminal.com/compare/cline-vs-vibe-trading.md)\n- [Crush vs Pi](https://www.anchorterminal.com/compare/crush-vs-earendil-pi.md)\n- [Crush vs Vibe-Trading](https://www.anchorterminal.com/compare/crush-vs-vibe-trading.md)\n- [Cursor CLI vs Pi](https://www.anchorterminal.com/compare/cursor-cli-vs-earendil-pi.md)\n- [Cursor CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/cursor-cli-vs-vibe-trading.md)\n- [DeepSeek Harness (dsh) vs Pi](https://www.anchorterminal.com/compare/deepseek-harness-vs-earendil-pi.md)\n- [DeepSeek Harness (dsh) vs Vibe-Trading](https://www.anchorterminal.com/compare/deepseek-harness-vs-vibe-trading.md)\n- [Devin vs Pi](https://www.anchorterminal.com/compare/devin-vs-earendil-pi.md)\n- [Devin vs Vibe-Trading](https://www.anchorterminal.com/compare/devin-vs-vibe-trading.md)\n- [Droid CLI vs Pi](https://www.anchorterminal.com/compare/droid-cli-vs-earendil-pi.md)\n- [Droid CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/droid-cli-vs-vibe-trading.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 MiniMax Code](https://www.anchorterminal.com/compare/earendil-pi-vs-minimax-code.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 Vibe-Trading](https://www.anchorterminal.com/compare/gemini-cli-vs-vibe-trading.md)\n- [GitHub Copilot CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/github-copilot-cli-vs-vibe-trading.md)\n- [goose vs Vibe-Trading](https://www.anchorterminal.com/compare/goose-vs-vibe-trading.md)\n- [Harness² vs Vibe-Trading](https://www.anchorterminal.com/compare/harness2-vs-vibe-trading.md)\n- [HarnessRouter vs Vibe-Trading](https://www.anchorterminal.com/compare/harnessrouter-vs-vibe-trading.md)\n- [Jules vs Vibe-Trading](https://www.anchorterminal.com/compare/jules-vs-vibe-trading.md)\n- [Junie CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/junie-vs-vibe-trading.md)\n- [Kilo Code CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/kilo-code-cli-vs-vibe-trading.md)\n- [Kimi Code CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/kimi-code-cli-vs-vibe-trading.md)\n- [Kiro CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/kiro-cli-vs-vibe-trading.md)\n- [mini-swe-agent vs Vibe-Trading](https://www.anchorterminal.com/compare/mini-swe-agent-vs-vibe-trading.md)\n- [MiniMax Code vs Vibe-Trading](https://www.anchorterminal.com/compare/minimax-code-vs-vibe-trading.md)\n- [Mistral Vibe CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/mistral-vibe-cli-vs-vibe-trading.md)\n- [Muse Code vs Vibe-Trading](https://www.anchorterminal.com/compare/muse-code-vs-vibe-trading.md)\n- [OpenAI Codex vs Vibe-Trading](https://www.anchorterminal.com/compare/openai-codex-vs-vibe-trading.md)\n- [OpenCode vs Vibe-Trading](https://www.anchorterminal.com/compare/opencode-vs-vibe-trading.md)\n- [OpenHands vs Vibe-Trading](https://www.anchorterminal.com/compare/openhands-vs-vibe-trading.md)\n- [Prime Agent vs Vibe-Trading](https://www.anchorterminal.com/compare/prime-agent-vs-vibe-trading.md)\n- [Qoder CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/qoder-cli-vs-vibe-trading.md)\n- [Qwen Code vs Vibe-Trading](https://www.anchorterminal.com/compare/qwen-code-vs-vibe-trading.md)\n- [Mirror CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/reflection-mirror-vs-vibe-trading.md)\n- [Rovo Dev CLI vs Vibe-Trading](https://www.anchorterminal.com/compare/rovo-dev-cli-vs-vibe-trading.md)\n- [Vibe-Trading vs Warp (Warp Agent CLI and the Oz Agent API)](https://www.anchorterminal.com/compare/vibe-trading-vs-warp.md)\n- [CLI Manager vs Vibe-Trading](https://www.anchorterminal.com/compare/cli-manager-vs-vibe-trading.md)\n- [Harness vs Vibe-Trading](https://www.anchorterminal.com/compare/harness-autonomous-vs-vibe-trading.md)\n- [Paperclip vs Vibe-Trading](https://www.anchorterminal.com/compare/paperclip-vs-vibe-trading.md)\n- [Parallax vs Vibe-Trading](https://www.anchorterminal.com/compare/parallax-agents-vs-vibe-trading.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-25",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.6",
    "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 Vibe-Trading",
        "url": ""
      }
    ],
    "description": "Pi scores 68.4 (B) to Vibe-Trading's 62.2 (B) for agent harnesses. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Pi B 68.4",
      "Vibe-Trading B 62.2",
      "scores"
    ],
    "h1": "Pi vs Vibe-Trading",
    "image": "https://www.anchorterminal.com/assets/og/compare-earendil-pi-vs-vibe-trading.png",
    "path": "/compare/earendil-pi-vs-vibe-trading",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pi vs Vibe-Trading for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-25",
    "url": "https://www.anchorterminal.com/compare/earendil-pi-vs-vibe-trading"
  },
  "tokens": {
    "markdown": 3550,
    "slim": 530
  },
  "version": 1
}
