There is no urgent reason to leave Oh My Pi, and the honest list of alternatives is short: a client that prompts before it runs commands, or a managed surface you do not run yourself. Oh My Pi is active and free — the GitHub API reports can1357/oh-my-pi as not archived, MIT-licensed, around 32,300 stars, and last pushed on the day it was checked, and omp.sh serves a machine-readable Offer of $0 (both checked September 21, 2026). So this is a routing page, not a rescue piece.
Two pairings are already covered and are not repeated here. For the upstream project it forked from, see Oh My Pi vs Pi. For the other terminal agent most people shortlist against it, see Oh My Pi vs OpenCode. Everything below is about the clients those two pages do not mention.
Two of the four usual reasons to switch do not apply
Alternatives round-ups normally sort coding agents into local-first, open-API, autonomous and IDE-native buckets. Against Oh My Pi, two of those buckets are empty, and saying so is more useful than filling them.
Local-first is not an exit reason. omp's README has a "Run it yourself" section reading "OpenAI-compatible /v1/models. Local instances skip the key.", and it lists Ollama, Ollama Cloud, LM Studio, llama.cpp, vLLM and LiteLLM. Read the tags rather than the list: the README marks Ollama, LM Studio, llama.cpp and vLLM local — its own legend defines that as "runs against a local server with the key optional" — while LiteLLM and Ollama Cloud carry no such tag, and docs/models.md has LiteLLM discovery using LITELLM_API_KEY or stored auth when the proxy requires a key. Its discovery.type field accepts ollama, llama.cpp, lm-studio, openai-models-list, proxy and litellm (same file, read September 21, 2026). Leaving omp to run a local model is leaving for something it already does.
An open, ungated API surface is not an exit reason either. omp is MIT, sells nothing, and its documented models.yml accepts eleven api values — openai-completions, openai-responses, openai-codex-responses, azure-openai-responses, anthropic-messages, bedrock-converse-stream, google-generative-ai, google-gemini-cli, google-vertex, typesafe and openrouter-decisions — of which the docs note that the last two are judgment APIs rather than chat transports (docs/models.md, read September 21, 2026). Its README headline counts "60+ providers". Nothing in that path is gated behind a plan, because there is no plan.
The reasons that do survive
| Why you would leave | Does Oh My Pi already cover it? | Where to look instead |
|---|---|---|
| You want the agent to stop and ask before running a command | Not by default. yolo is the documented default mode and auto-approves read, write and exec, prompting for nothing | Change tools.approvalMode to always-ask or write first. Only if that is not enough, move to a client whose default prompts |
| You want a managed or autonomous surface you do not run yourself | No. omp is a terminal CLI on your own machine | OpenHands, which has its own hosted product. No OpenHands price or licence was verified for this page |
| You want your editor's inline surface rather than a terminal | No. omp is a terminal client | Cline, Continue or Zed |
| You want local models | Yes — six self-run backends listed, four of them tagged local, where the key is optional | Stay. See the Ollama-compatible API doc if you are mixing local and hosted |
| You want an open client with no account or plan | Yes — MIT, $0 in its own JSON-LD, no checkout page in its sitemap, nine chat wire protocols plus two judgment APIs | Stay |
The approval-mode row is the one that matters. Per omp's own approval-mode table, read September 21, 2026, always-ask auto-approves read and prompts for write and exec; write auto-approves read and write and prompts for exec; yolo, the default, prompts for nothing. That is a documented default, not a defect — and changing a setting is cheaper than changing clients. One caution worth naming: Roo Code is archived (archived=true, last push 2026-05-15, GitHub API, September 21, 2026), and no successor was named in the opening of its README, so it is not a migration target whatever an older round-up says. The archive reason was not established here.
Migrating away costs more than migrating in
This is the asymmetry nobody prices before they start. omp's README says that "On first run omp inherits whatever is already on disk: rules, skills, and MCP servers from .claude, .cursor, .windsurf, .gemini, .codex, .cline, .github/copilot, and .vscode" — with no migration script. Arriving is free. Nothing in omp's documented surface writes those formats back out, so leaving means re-authoring provider config, model entries and rules by hand at the destination.
Transcripts are a second, separate cost. omp keeps sessions as JSONL under ~/.omp/agent/sessions/<encoded-cwd>/, and the export commands on its session-operations page produce HTML (/export) and clipboard text plus a temporary JSON sidecar (/dump) — neither of them another agent's session format. omp's docs warn that the sidecar "persists after the command and can contain raw context or secrets; protect or remove it accordingly". Whether any other agent or third-party converter can read that JSONL was not checked for this page, so plan on carrying context by hand rather than by import.
Rollback is easy, which is the good news. Because the import only reads your other agents' directories, trying an alternative leaves ~/.omp/ untouched: keep ~/.omp/agent/models.yml and config.yml in place and omp still runs exactly as before. Do the reverse check before you delete anything — confirm the destination completes one real task on your repository first.
One naming trap while you are moving files around: searching for omp.json returns Oh My Posh, an unrelated cross-platform shell prompt renderer whose themes are literally named *.omp.json. Oh My Pi's configuration is ~/.omp/agent/models.yml, and no file ending in .omp.json belongs to it.
What each alternative asks of your own API key
None of these clients meters your tokens itself; the bill arrives from whoever issued the key. Crush, Codex CLI, goose and OpenHands are all downloadable at no charge — Claude Code's own terms were not checked for this page. What differs is the shape of the configuration and, in two cases, whether your endpoint speaks the protocol the client expects at all.
| Client | Licence | How a custom endpoint is declared | The gate to watch |
|---|---|---|---|
| Crush | FSL-1.1-MIT, not an OSI licence | provider add --type openai-compat --base-url --api-key in a crushrc, then model add per model | Context window and four price fields are typed by hand per model. A crushrc is Bash and runs in a full shell, and Crush's README says any $(...) in crush.json runs at load time |
| Claude Code | Not verified here | ANTHROPIC_BASE_URL plus a gateway credential | Anthropic's compatibility guide requires the Anthropic Messages, Bedrock InvokeModel or Agent Platform rawPredict format — a Chat-Completions endpoint is none of them. Anthropic also states a gateway credential replaces a claude.ai subscription for that session and the subscription's limits stop applying, while setting the base URL alone does not. See the base-URL doc |
| Codex CLI | Apache-2.0 | ~/.codex/config.toml, model_providers.<id>.base_url and env_key | Hardest gate for a Chat-Completions endpoint. Per the provider source, wire_api accepts only responses; chat was removed and now errors by name. A Chat-Completions-only endpoint cannot drive it |
| goose | Apache-2.0 | OPENAI_API_KEY, OPENAI_HOST, OPENAI_BASE_PATH | The project moved to aaif-goose/goose and the docs to goose-docs.ai; the root of block.github.io/goose now serves only a "goose has moved" redirect stub, and paths beneath it 404 |
| OpenHands | Not verified here | LLM_BASE_URL, LLM_API_KEY, LLM_MODEL — set in the UI settings, or as environment variables or config.toml entries | Model strings follow LiteLLM's provider list, so an unlisted model needs the LiteLLM provider-prefixed id, such as openai/<id> (OpenHands LLM docs) |
Licences and repository facts read from the GitHub API and each project's own files on September 21, 2026; Anthropic's wording from its LLM gateway page, which also says Anthropic "doesn't endorse, maintain, or audit third-party gateway products". The goose variables were re-read from goose's current provider page the same day, which documents OPENAI_HOST as a "Custom endpoint URL (defaults to api.openai.com)" and OPENAI_BASE_PATH as the "Request path appended to the host (defaults to v1/chat/completions)".
# goose reaches an OpenAI-compatible endpoint through the built-in
# OpenAI provider. OPENAI_HOST is the host root; OPENAI_BASE_PATH is the
# request path appended to it, and defaults to v1/chat/completions.
export OPENAI_API_KEY="your-key"
export OPENAI_HOST="https://api.kunavo.com"
export OPENAI_BASE_PATH="v1/chat/completions"Kunavo publishes setup guides for each of these clients — Crush, Claude Code, Codex CLI, goose, OpenHands — and a published configuration reference is not a compatibility test. None of these clients has been runtime-tested against Kunavo's endpoint, including Oh My Pi itself.
The client changes; the token bill does not
Because all of these clients bill nothing of their own, the model you select moves your cost far more than the client you run it in. The figures below are illustrative token arithmetic, not measured task costs and not a bill ceiling. Assume one session that sends 200,000 uncached input tokens and receives 15,000 output tokens, at live Kunavo catalog rates per million tokens.
| Model | Input / output per 1M | Estimated cost for that 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 4.6 | $1.20 / $6.00 | $0.330 |
| Claude Opus 5 | $2.00 / $10.00 | $0.550 |
Under these assumptions the same session ranges from $0.110 on Claude Haiku 4.5 to $0.550 on Claude Opus 5 — a spread no client choice on this page comes close to. Note that cheapest listed rate and lowest cost to finish the task are different claims: a cheaper model that needs three attempts can cost more than one that needs a single pass, so measure on your own repository. 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. Cache charges and external tools sit outside this example, and the minimum top-up is $10 in prepaid credit, which funds a balance rather than buying a plan. See billing details.
One scope note before you plan an IDE move: Kunavo serves no embedding model, so a client that indexes your repository locally needs that step arranged elsewhere. Kunavo's catalog is chat-completion and media models.
Try one bounded task before you commit
Pick the single alternative your exit reason actually points at, configure it with the shape in the table above, and run one task you have already run in omp. Keep ~/.omp/ intact while you do it. If the destination is Codex CLI, verify the protocol gate first — a Chat-Completions-only endpoint will not work there regardless of the rest of your config. If you are staying with omp and only wanted tighter execution control, the change is one setting. Either way, start from the Oh My Pi integration guide, and create a Kunavo account when you are ready to fund a key. For a wider survey of clients, see the AI agent API directory.
FAQ
What are the best alternatives to Oh My Pi?
It depends on why you are leaving, and two common reasons are not reasons at all. If you want local models, stay: omp's README lists Ollama, Ollama Cloud, LM Studio, llama.cpp, vLLM and LiteLLM under "Run it yourself", docs/models.md documents implicit runtime discovery for Ollama, llama.cpp, LM Studio and LiteLLM, and the README says "Local instances skip the key" — the local tag there covers Ollama, LM Studio, llama.cpp and vLLM, not LiteLLM, whose discovery still expects a key when the proxy requires one. If you want an open, ungated client, stay: omp is MIT, omp.sh publishes a machine-readable price of $0, and its 36-URL sitemap contains no pricing, checkout, sign-up, login or account page. Two reasons do survive. If you want an agent that stops and asks before running a command, omp's documented default approval mode is yolo, which auto-approves read, write and exec and prompts for nothing — change that setting first, and only then consider Cline, Continue or Zed for an editor-native surface, or OpenHands for a managed one. If you are choosing between omp and Pi or OpenCode specifically, those two comparisons already exist on this site.
Is Oh My Pi still maintained?
Yes, on every dated signal available on 2026-09-21. The GitHub API reports can1357/oh-my-pi as archived=false, fork=false, MIT-licensed, created 2025-12-31, with roughly 32,300 stars and a last push on 2026-09-21 itself. Releases were landing daily at that read: v18.2.6 on 2026-09-18, then v18.2.7 and v18.2.8 both on 2026-09-21, with the npm package @oh-my-pi/pi-coding-agent carrying the matching versions. Those counts and tags move constantly, so treat them as a snapshot of that day rather than a current figure. Note also that omp's README calls it a fork of Pi while the two number their releases on unrelated scales — omp at 18.x, Pi at 0.x — so neither number is a maturity signal against the other. Why they diverge was not established here.
Can I move my Oh My Pi configuration to another coding agent?
Not automatically. The import runs one way. Oh My Pi's README states that on first run it inherits rules, skills and MCP servers already on disk from .claude, .cursor, .windsurf, .gemini, .codex, .cline, .github/copilot and .vscode, with no migration script. Nothing in omp's documented surface writes those formats back out, so arriving at omp is free and leaving means re-authoring provider config, model entries and any omp-specific rules by hand at the destination. Sessions are a separate problem: omp stores them as JSONL under ~/.omp/agent/sessions, and the export commands documented in its session-operations page produce HTML (/export) and clipboard text plus a temporary JSON sidecar (/dump) — neither of which is another agent's session format. Whether a third-party converter exists for that JSONL was not checked here.
Which coding agents cannot use an OpenAI Chat Completions gateway?
Two of the ones here: Codex CLI and Claude Code, on source and documentation read 2026-09-21. Codex CLI is the blunter case. In openai/codex at codex-rs/model-provider-info/src/lib.rs the WireApi enum contains exactly one variant, Responses, described as the Responses API at /v1/responses, and a named constant rejects the old setting with the message that wire_api = "chat" is no longer supported and telling you to set wire_api = "responses" instead. An endpoint that serves only /v1/chat/completions therefore cannot back Codex CLI at all, whatever base_url you put in ~/.codex/config.toml. Codex's project-scoped config also cannot override the machine-local provider or auth: its advanced-config reference lists model_provider and model_providers among the keys a project-local .codex/config.toml is ignored for. Claude Code is the quieter case and the one easiest to state too broadly: Anthropic's gateway compatibility guide says a gateway must expose the Anthropic Messages, Amazon Bedrock InvokeModel or Agent Platform rawPredict format, and a Chat-Completions endpoint is none of those — so ANTHROPIC_BASE_URL wants an Anthropic-shaped endpoint, not a Chat-Completions one. Of the remaining clients in the table above, Crush, goose and OpenHands each document an OpenAI-compatible Chat-Completions path. The editor extensions are outside what was checked here.
Is Crush open source?
Not under an OSI-approved licence today. Reading charmbracelet/crush's LICENSE.md on 2026-09-21 gives the title "Functional Source License, Version 1.1, MIT Future License", the abbreviation FSL-1.1-MIT, and the copyright line "Copyright 2025-2026 Charmbracelet, Inc." GitHub's own API reports the licence only as NOASSERTION. That is the sharpest licensing difference from Oh My Pi, Pi and OpenCode, all three of which are MIT. Crush is free to download; the distinction worth publishing is the licence, not a fee. A separate, differently-owned project also called OpenCode, opencode-ai/opencode, is archived with a last push of 2025-09-18 and its work continued as Crush — never use that archived repository's docs or config format for either project.
Did goose move? Is it still a Block project?
It moved. The GitHub API resolves block/goose to aaif-goose/goose, Apache-2.0, with a homepage of goose-docs.ai, read 2026-09-21. The project's own announcement post dated April 7, 2026 says Block donated goose to the Agentic AI Foundation at the Linux Foundation, alongside Anthropic's MCP and OpenAI's AGENTS.md, and that goose "is still open source, still actively developed, and still the same agent you know." The old documentation host is half-gone rather than fully gone: block.github.io/goose still answers at its root, but only with a "goose has moved" page that redirects to goose-docs.ai, while the documentation paths under it — /goose/docs/ and below — return 404. Either way, a bookmark or copied command pointing at the old host is stale.
Does Oh My Pi cost anything, and do its alternatives?
The omp client is free: omp.sh serves a SoftwareApplication JSON-LD block with an Offer of price "0" in USD and a licence URL for MIT, checked 2026-09-21, and its 36-URL sitemap the same day carried no pricing, checkout, sign-up, login or account page. Crush, goose and Codex CLI are likewise free to download. What you actually pay for in every case is model tokens, billed by whoever issued the API key, so switching clients does not by itself change the bill. One alternative does sell its own model plan: Charm Hyper, which Crush's README calls "the official Crush provider", published on 2026-09-21 a free tier of 100 Hypercredits per month, a $20-per-month subscription with 250 Hypercredits refreshing daily, and prepaid bundles at $5 for 100, $10 for 200 and $20 for 400 credits that never expire, stating that one Hypercredit "is currently 5¢". Those are Charm's published rates for Charm's service, not Kunavo's, and Crush does not require them — it also takes your own key through a custom OpenAI-compatible provider.
Should I switch from Oh My Pi to Pi or to OpenCode?
Those two questions have their own pages on this site and are not re-answered here, because the answer turns on details this page does not carry. Pi is the upstream project Oh My Pi forked from; its repository moved from badlogic/pi-mono to earendil-works/pi, it is active and MIT with roughly 108,000 stars on 2026-09-21, and it reads a different config file — ~/.pi/agent/models.json rather than omp's ~/.omp/agent/models.yml — so configuration written for one does not load in the other. OpenCode here means the live anomalyco/opencode, which sst/opencode redirects to, not the archived Go CLI of the same name.
Checked on September 21, 2026 by fetching, for this page: Oh My Pi's README, docs/models.md, docs/approval-mode.md and its session-operations page at main; Codex's WireApi enum; Crush's LICENSE.md and README; Anthropic's gateway compatibility guide; goose's current provider documentation and its move announcement; and hyper.charm.land's published pricing. Repository counts, dates, licences and release numbers come from GitHub and npm API reads dated the same day. No client on this page was runtime-tested against Kunavo's endpoint. Kunavo token rates are read from the live catalog, and every dollar figure here is illustrative token arithmetic.