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 Pi made deliberately. Its own docs say Pi "intentionally does not include built-in MCP, sub-agents, permission popups, plan mode, to-dos, or background bash" and tell you to "build or install those workflows as extensions or packages, or use external tools such as containers and tmux". So the useful question is not which agent is better, but which of those 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 appears 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 |
|---|---|---|
| MCP, sub-agents, approval popups, plan mode, to-dos and background bash as built-ins rather than extensions | 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 wider set of wire protocols for a self-hosted or non-standard endpoint | Oh My Pi — eleven documented api values against Pi's four | Same fork caveats; two of the eleven are judgment APIs, not chat transports |
| 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 says plainly that Pi "does not include a built-in sandbox" and that built-in tools read, write, edit and run shell commands "with the permissions of the pi process". Its project-trust prompt is not the missing permission system either: the same page says trust "controls whether pi loads project-local settings, resources, packages, and extensions" and "is not a sandbox and it does not restrict what the model can ask tools to do". 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 six things in it have six different fates.
| 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 |
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 is --api-key, then auth.json, then an environment variable, then a models.json provider key — so a stale token here 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 six 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.
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 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.40 / $2.00 | $0.110 |
| Gemini 3.8 Flash | $0.525 / $2.625 | $0.144 |
| GPT-5.6 Terra | $0.70 / $4.20 | $0.203 |
| Claude Sonnet 5 | $2.00 / $10.00 | $0.550 |
| Claude Opus 5 | $2.00 / $10.00 | $0.550 |
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.
FAQ
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. Pi's own design-principles section says it intentionally ships no built-in MCP, sub-agents, permission popups, plan mode, to-dos or background bash, and tells you to add them as extensions or packages. 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. Pi's models.json accepts four api values — openai-completions, which its docs call the most compatible, plus openai-responses, anthropic-messages and google-generative-ai. 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.
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. 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.