You do not have to leave the Pi coding agent for lifecycle reasons: on September 21, 2026 the GitHub API reported earendil-works/pi as MIT-licensed and not archived, with release v0.87.0 published the same day. The real reasons people move are design choices. Until a September 22, 2026 docs refresh, Pi's own docs said it "intentionally does not include built-in MCP, sub-agents, permission popups, plan mode, to-dos, or background bash" and told you to "build or install those workflows as extensions or packages, or use external tools such as containers and tmux". The refresh removed that sentence, and v0.99.0 on September 29, 2026 shipped one of the six — MCP is now a built-in extension that loads by default. At v0.99.2 the other five are still not built in. So the useful question is not which agent is better, but which of those five you wanted built in — and what the move costs you out of ~/.pi/agent.
One disambiguation, because the search results mix at least five things. This page is about the terminal coding agent at pi.dev, repo earendil-works/pi, npm @earendil-works/pi-coding-agent. It is not Pi by Inflection AI at pi.ai, a different product entirely; not the Pi Network coin; not Raspberry Pi; and not the constant. The old shittycodingagent.ai domain now redirects to pi.dev, and badlogic/pi-mono resolves to the current repo, so old links land in the right place without telling you they moved.
Match the reason you are leaving to a destination
Each row below is a reason that has appeared in Pi's own documentation as a deliberate omission or boundary, paired with a project that documents the thing instead. Nothing here was runtime tested.
| What you wanted from Pi | Where it points | What you take on instead |
|---|---|---|
| Sub-agents, approval popups, plan mode, to-dos and background bash as built-ins rather than extensions — MCP has been built into Pi since v0.99.0 | Oh My Pi, a fork of Pi | A different maintainer and version line, YAML config at ~/.omp/agent/models.yml, and its own approval model to learn |
| A documented set of wire protocols beyond the four Pi listed for a self-hosted or non-standard endpoint | Oh My Pi — eleven documented api values; Pi documented four until September 22, 2026 and lists none now, though its source (v0.99.2) dispatches ten | Same fork caveats; two of the eleven are judgment APIs, not chat transports, and Pi's six undocumented values were not tested here |
| A hosted place to run the agent instead of your own shell | OpenHands | The free SaaS Individual tier caps "Max Daily Conversations" at 10; the MIT build you run yourself is listed Unlimited |
| The agent inside the editor you already use | Cline | An editor extension's workflow rather than a terminal one; its ClinePass subscription is documented as "completely optional", and the same page says you can use any other provider alongside it |
| A first-party gateway that its own vendor does not call early alpha, as Earendil does for Radius | OpenCode (Zen) or Crush (Hyper) | A second account. OpenCode calls Zen "completely optional"; Charm calls Hyper "the official Crush provider" and does not use that word. Both clients document taking your own key for other providers |
| Foundation rather than single-company stewardship | goose, Apache-2.0, now under the Linux Foundation's Agentic AI Foundation | Two different routes to the same endpoint to choose between: the built-in OpenAI provider pointed at a custom base URL with OPENAI_HOST, or a custom provider entry, which its docs describe for services "that aren't already supported" |
| One vendor's own agent, end to end | Claude Code, or Codex CLI | Codex CLI is strictly narrower than Pi on custom endpoints — see the FAQ. The GitHub API reports no SPDX license for the Claude Code repository |
Two boundaries worth naming before you pick. Pi's security page, as rewritten in its September 22, 2026 docs refresh, says plainly that Pi "can read, change, and execute files with the permissions of the account that started it, and it does not ask for approval before every tool call", and it lists the "lack of a built-in sandbox" among behaviours generally outside its security boundary. Its project-trust prompt is not the missing permission system either: the same page says trust "controls whether Pi loads most settings and resources supplied by a working folder" and "does not limit what tool calls can access or affect". If isolation is your exit reason, an approval-mode client or a container is the answer, not a different terminal agent by default.
Check the status before you commit to a name
Alternatives lists for Pi carry projects in three different states, and one field on GitHub actively misleads. Read release and commit dates, not pushed_at.
| Project | License | Latest release | Status on September 21, 2026 |
|---|---|---|---|
Pi (earendil-works/pi) | MIT | v0.87.0, September 21, 2026 | Active; shipped three releases in three days |
Oh My Pi (can1357/oh-my-pi) | MIT | v18.2.8, September 21, 2026 | Active fork; separate product, not a spelling of Pi |
OpenCode (anomalyco/opencode) | MIT | v1.18.31, September 14, 2026 | Active. sst/opencode redirects here; opencode-ai/opencode is archived and is a different project |
Crush (charmbracelet/crush) | FSL-1.1-MIT — GitHub's own field reports only NOASSERTION | v0.96.1, September 21, 2026 | Active. The Functional Source License is not an OSI-approved open-source licence; read LICENSE.md before assuming one |
goose (aaif-goose/goose) | Apache-2.0 | v1.51.0, September 17, 2026 | Active; block/goose redirects here, docs moved to goose-docs.ai |
OpenHands (OpenHands/OpenHands) | MIT | v1.20.0, September 17, 2026 | Active; All-Hands-AI/OpenHands redirects here |
Cline (cline/cline) | Apache-2.0 | v4.1.19, September 17, 2026 (the desktop build releases on its own tag line) | Active: repository not archived, pushed September 21, 2026 |
Codex CLI (openai/codex) | Apache-2.0 | rust-v0.155.1, September 18, 2026 | Active; its documentation has moved twice, so several plausible doc URLs 404 |
| Aider | Apache-2.0 | v0.86.0, August 9, 2025 | Dormant, not dead: unarchived, but no commit since May 22, 2026 |
| Continue | Apache-2.0 | v2.0.0-vscode, June 19, 2026 (latest stable) | No longer shipping. continue.dev states it "has joined Cursor" and that the open-source codebase "remains freely available"; last code commit June 19, 2026. A migration source, not a destination |
Repository facts read from the GitHub API and each project's own site on September 21, 2026. Star counts and push timestamps drift daily and are deliberately left out. Continue is the row to read twice: its pushed_at field shows a recent date because of documentation-only commits, which is how it keeps appearing on current recommendation lists. Kunavo's own Continue alternatives and Aider alternatives pages cover those two projects in their own right.
What actually leaves ~/.pi/agent
This is the part the comparison tables skip, and it is where the real switching cost sits. Pi keeps everything in one directory, and the seven things in it do not share a fate.
| What Pi stores | What it holds | What happens when you move |
|---|---|---|
AGENTS.md / CLAUDE.md | Global rules at ~/.pi/agent/AGENTS.md, plus ancestor directories and the current directory; AGENTS.override.md replaces them for that directory | Travels. OpenCode documents AGENTS.md at the project root and ~/.config/opencode/AGENTS.md, falling back to ~/.claude/CLAUDE.md when no OpenCode-specific file exists. Oh My Pi documents AGENTS.md discovery as part of its workspace walk |
models.json | Custom provider blocks: baseUrl, api, apiKey, headers, models, modelOverrides | Re-typed, except into Oh My Pi. Its docs say that if both YAML files are missing and models.json exists "at the same location", it is migrated to models.yml — that location is ~/.omp/agent/, so you copy the file there yourself. The directories Oh My Pi documents inheriting from on first run are .claude, .cursor, .windsurf, .gemini, .codex, .cline, .github/copilot and .vscode; ~/.pi is not among them |
mcp.json | MCP server definitions, added in v0.99.0 (September 29, 2026): user-level at ~/.pi/agent/mcp.json, per project at .pi/mcp.json, with OAuth tokens kept apart in ~/.pi/agent/mcp-auth.json | Mostly travels. Pi's MCP page says "The format matches other MCP clients", and its own conversion table maps OpenCode's local and remote entries field by field — the mapping to reverse on the way out. Pi-only fields such as exposure do not carry, and the OAuth tokens do not travel: sign in again in the destination |
auth.json | API keys and OAuth tokens for Pi's /login providers, auto-refreshed | Does not travel. Each client mints its own. Worth knowing on the way out too: Pi's documented resolution order, as its September 22, 2026 docs refresh states it, is a runtime --api-key, then auth.json, then a models.json apiKey, then the provider's environment variables — so a stale token here still silently outranks the key you just configured |
sessions/ | One JSONL file per session, organised by working directory, as a tree where every entry has an id and parentId | Does not travel. Pi documents two exports — /export to HTML and /share to a private GitHub gist — plus a /bug report that can bundle the current branch as session.jsonl. No importer for this format was found in the clients checked here — an absence of evidence, not a documented block |
trust.json | Per-directory project-trust decisions, keyed by canonical path, with defaultProjectTrust defaulting to ask | No analogue to carry. It gates config loading, not tool calls, so there is nothing here to reproduce as a permission policy in the destination |
| Extensions, skills, prompt templates, packages | TypeScript modules and workflow assets, in project .pi/ directories or ~/.pi/agent/ globally, running with the same permissions as Pi itself | No documented migration path found. This is the largest unquantified cost of leaving, precisely because Pi's answer to its five remaining missing built-ins is to build them here. Inventory what you actually rely on before you price the move |
Read from Pi's usage, security, models, sessions and providers pages, OpenCode's rules page and Oh My Pi's models documentation, all on September 21, 2026; the auth.json row's resolution order was re-read from Pi's refreshed models page on October 1, 2026, and the mcp.json row was read from its MCP page the same day.
Doing the move without burning the way back
# 1. Change nothing in Pi. Everything below leaves ~/.pi/agent intact.
# 2. Rules travel as-is. Pi already reads the repo's AGENTS.md;
# so do the destinations that document AGENTS.md support.
cp ~/.pi/agent/AGENTS.md ~/.config/opencode/AGENTS.md # global rules, OpenCode
# 3. Of the destinations checked here, only Oh My Pi documents a converter,
# and it only fires from its OWN directory — not from ~/.pi/.
mkdir -p ~/.omp/agent
cp ~/.pi/agent/models.json ~/.omp/agent/models.json # omp writes models.yml
# 4. Do NOT copy auth.json. Mint credentials in the destination instead.
# 5. Roll back at any time: pi still reads ~/.pi/agent, sessions included.
piTwo details make the difference between a clean switch and an afternoon of 404s. First, keep the destination on a separate worktree or branch until one complete edit, test and review cycle passes there — Pi keeps reading ~/.pi/agent the whole time, sessions included, so rollback is just running pi again. Second, re-enter your cost and limit metadata in the destination rather than assuming it carries over. Pi's source (v0.99.2) defaults a self-added model's cost block to all zeros, along with a 128,000-token contextWindow and 16,384 maxTokens — so the Pi cost readout you are migrating away from may have been showing $0 the whole time. Whether your destination has the same blind spot is worth checking before you treat its number as a budget. Pi pricing carries the full custom-provider block and its gotchas; this page deliberately does not duplicate it.
If you are weighing a specific pairing rather than a category, Oh My Pi vs Pi covers the fork in detail, Pi vs OpenCode and Pi vs Claude Code cover those two head to head, and OpenCode alternatives runs the same exercise from the other side.
Changing client does not change the token bill
None of these clients charges you for the client itself, and each one can run against whichever model route you configure — that is what the api, baseUrl and key fields in the tables above are for. Several vendors also sell a first-party alternative to your own key (Radius, Zen, Hyper, ClinePass, the OpenHands provider), and Claude Code and Codex CLI additionally sign in against their vendor's own subscription plans, so the figures below describe the bring-your-own-route case only. Either way the exit reason has to be a capability rather than a price: switching agents does not by itself change what the model costs.
The figures below are illustrative token arithmetic, not measured task costs and not a ceiling on a bill. Assume one session that sends 200,000 uncached input tokens and receives 15,000 output tokens, with no cache reads, no cache writes, no image input and no tool charges. Rates render from the live Kunavo catalog per million tokens.
| Model | Input / output per 1M | Estimate for one assumed session |
|---|---|---|
| Claude Haiku 4.5 | $0.70 / $3.50 | $0.192 |
| GPT-5.6 Terra | $0.70 / $4.20 | $0.203 |
| Claude Sonnet 5 | $1.40 / $7.00 | $0.385 |
| Claude Opus 5 | $3.50 / $17.50 | $0.963 |
Scale by your own sessions per day before treating any of it as a budget, and keep the two claims separate: the cheapest listed rate and the cheapest way to finish the task are different things, because a smaller model that needs three attempts can cost more than a stronger one that lands the change once. Kunavo's catalog amount is a billing floor rather than a cap — when the upstream reports its charge, the bill is the greater of catalog cost and upstream cost times the applicable markup, as billing explains. The minimum top-up is $10 in prepaid credit, which is a funding minimum, not a task fee or a subscription.
One capability gap to plan around if you are comparing agents with built-in codebase indexing: Kunavo does not serve embeddings. It serves no embedding model, and no text-to-speech or speech-to-text model either, so an indexing step that needs an embedding endpoint has to go to a separate provider.
Kunavo publishes a configuration reference for Pi and for several destinations on this page. A published setup guide is not a compatibility test: none of these clients has been runtime-tested against Kunavo's endpoint, and every protocol claim above was read from each project's documentation rather than run. Start at the Pi integration guide or the Oh My Pi one if the fork is your destination, keep a working route available while you test, and create a Kunavo account when you are ready to price one bounded task against the model you shortlisted.
Frequently asked questions
What is the best Pi coding agent alternative?
There is no single winner, because the honest question is which thing Pi leaves out that you need. Until a September 22, 2026 docs refresh, Pi's own design-principles section said it intentionally ships no built-in MCP, sub-agents, permission popups, plan mode, to-dos or background bash, and told you to add them as extensions or packages. The refresh removed that sentence, and v0.99.0 on September 29, 2026 shipped MCP as a built-in extension; the other five are still not built in at v0.99.2. If you would rather those were built in, Oh My Pi is the closest destination because it is a fork of Pi that documents exactly those features. If you want a hosted place to run an agent, OpenHands Cloud has a free Individual tier. If you want the agent inside your editor, Cline. If you want a first-party gateway whose own vendor does not describe it as early alpha — radius.earendil.com says "Radius is currently in early alpha" — OpenCode ships Zen, which its docs call "completely optional", and Crush ships Hyper, which Charm calls "the official Crush provider" while documenting a dozen other providers you can paste your own key into. All statuses checked September 21, 2026.
Is the Pi coding agent still maintained?
Yes, actively. On September 21, 2026 the GitHub API reported earendil-works/pi as MIT-licensed, not archived, pushed that same day, with release v0.87.0 published on September 21, 2026. Pi is therefore not a project you need to leave for lifecycle reasons. That matters for this comparison, because two of the names that appear on alternatives lists for it are in a different state: Continue was acquired by Cursor and its last code commit is June 19, 2026, and Aider has had no commit since May 22, 2026 and no release since v0.86.0 on August 9, 2025.
Is Oh My Pi just another name for Pi?
No. Oh My Pi is a separate product built as a fork of Pi, with a different maintainer, a different version line and a different config format. Its README states it is a fork of Pi by @mariozechner, its LICENSE names Mario Zechner, Can Bölük and Stencil Labs, Inc., and it shipped v18.2.8 on September 21, 2026 against Pi's v0.87.0. Pi reads ~/.pi/agent/models.json as JSON; Oh My Pi reads ~/.omp/agent/models.yml as YAML. Never mix their config examples or version numbers. A third trap: the npm package @mariozechner/pi is not an older Pi release at all — the registry describes it as a CLI for managing vLLM deployments on GPU pods. The npm package for Pi is @earendil-works/pi-coding-agent; pi.dev also offers a curl and a PowerShell installer.
Can I move my Pi configuration to another coding agent?
Partly, and the split is sharper than most migration advice admits. Project rules travel: Pi loads AGENTS.md or CLAUDE.md from ~/.pi/agent, from ancestor directories and from the current directory, and OpenCode documents AGENTS.md at the project root plus ~/.config/opencode/AGENTS.md with Claude Code's conventions as fallbacks. Provider config is re-typed in every destination checked here except Oh My Pi, which converts a models.json into models.yml — but only when that file already sits at ~/.omp/agent/, so you must copy it there yourself. Credentials do not travel; each client mints its own. Session history does not travel: Pi stores sessions as a JSONL tree under ~/.pi/agent/sessions/ and documents two exports, /export to HTML and /share to a private GitHub gist, plus a /bug report that can bundle the current branch as session.jsonl. No importer for that format was found in the clients checked here, which is an absence of evidence rather than a documented block.
Which alternative accepts the widest range of custom API endpoints?
Of the clients checked, Oh My Pi documents the widest set. Until Pi's docs refresh of September 22, 2026, its models page listed four api values for models.json — openai-completions, labelled the most compatible, plus openai-responses, anthropic-messages and google-generative-ai; the refreshed page lists none, showing openai-completions in one example and describing the case only as an OpenAI-, Anthropic- or Google-compatible endpoint. Pi's source at v0.99.2 goes further than its docs ever did: it types the field as a free string and dispatches it to whichever of ten built-in implementations matches — the four plus mistral-conversations, azure-openai-responses, openai-codex-responses, bedrock-converse-stream, google-vertex and pi-messages — so the gap to Oh My Pi is in what is documented more than in what Pi will dispatch; none of Pi's extra six was tested here. Oh My Pi's models.yml accepts a strict superset of eleven, adding openai-codex-responses, azure-openai-responses, bedrock-converse-stream, google-gemini-cli and google-vertex, though two of the eleven, typesafe and openrouter-decisions, are judgment APIs rather than chat transports. Codex CLI is the narrow end: its config reference states that responses is the only supported wire_api value, and that the built-in provider ids openai, ollama and lmstudio are reserved and cannot be overridden. Read from each project's own documentation on September 21, 2026, with Pi's docs and source re-read on October 1, 2026.
Should I switch from Pi to Continue?
No. Continue has stopped shipping as a standalone product: continue.dev states that Continue has joined Cursor and was acquired by Cursor, and that its open-source codebase remains freely available. On GitHub its latest stable release is v2.0.0-vscode dated June 19, 2026, and its last code commit is the same day, with only documentation commits after it. Its GitHub pushed_at field still shows a recent date, which is why stale listicles keep recommending it — read the release and commit dates instead. Treat Continue as a migration source, not a destination.
What was checked here, and how. Pi's and Oh My Pi's repository status and latest releases were read from the GitHub API on September 21, 2026, and Pi's usage, security and models documentation, Oh My Pi's models documentation and OpenCode's rules page were read the same day. After Pi's September 22, 2026 docs refresh, its credential order and api list were re-checked on its models page on October 1, 2026, and the custom-model defaults, which the refreshed docs no longer state, in its source at v0.99.2. The same day, after Pi v0.99.0 shipped built-in MCP, the omitted-feature list was re-checked against its usage, MCP, settings and CLI pages and the source at v0.99.2, the sandbox and project-trust quotes against its rewritten security page, and the api values its source dispatches. The remaining rows — OpenCode, Crush, goose, OpenHands, Cline, Codex CLI, Aider and Continue — were read the same day from the GitHub API and from each project's own linked page: OpenHands' pricing table, Cline's ClinePass page, OpenCode's Zen page, Crush's README and LICENSE.md, goose's provider docs, Codex CLI's config reference and continue.dev. Nothing here was reconciled against a live account on any of those services. Kunavo rates render from the live catalog and every dollar figure here is illustrative token arithmetic. No client on this page has been runtime-tested against Kunavo.