mrkeyoor.com_
Fri 18 Sept 11:53 UTC
AI Toolsevaluationupdated 26 Aug 2026

oh-my-pi review

Oh My Pi, invoked as `omp`, is a terminal coding agent that can edit code, run shells, use language servers and debuggers, browse the web, coordinate subagents, and remember a project. It is a heavily extended fork of Pi for developers who want one configurable agent interface across many model providers.

+914stars / 7d
Verdict

Our Oh My Pi checkout pulled 412 packages and 1,517 MB, then its native build failed after 225 seconds and all 12 test files errored, so source contributors should use the pinned Nix environment before judging the code. As an installed CLI, omp is compelling for developers who genuinely want model routing, native code tools, browser control, subagents, and memory under one roof. Choose Pi, OpenCode, or Codex if that breadth sounds like permission and configuration debt rather than help.

We ran it

Lab card: what happened when we ran oh-my-piScreenshot of oh-my-pi (omp.sh)
Install✓ · 54s412 packages · 1517 MB
Build✗ · 225s
Tests✗ · 6s0 passed · 12 failed of 12 (bun test)
Repo6477 files~1,688,279 lines of source · 163 MB · 3 CI workflows · Dockerfile

Answers from our run

Does oh-my-pi build from source?

Dependencies installed in 54 seconds (412 packages), and the build failed. We cloned commit 9892714 into a clean Debian container with 3 CPUs and no project-specific setup.

Do oh-my-pi's tests pass?

Not all of them: 0 of 12 passed and 12 failed when we ran the project's own test command (bun test). Some failures need services or credentials a bare container does not have.

Who should not use oh-my-pi?

Developers who want a narrow prompt-and-patch tool: the README exposes shells, debuggers, browsers, desktop control, memory, collaboration, MCP, and provider routing in one product.

What are the alternatives to oh-my-pi?

Pi, OpenCode, Codex. Our Oh My Pi checkout pulled 412 packages and 1,517 MB, then its native build failed after 225 seconds and all 12 test files errored, so source contributors should use the pinned Nix environment before judging the code.

Setup2/5Many binary installs, but source needs Bun, Rust, and native tooling
Docs4/5Detailed feature, provider, SDK, and source guidance
Community5/527,494 stars and continuous same-day issue and code activity
Maturity3/5Version 18 is capable, fast-moving, and still fixing core TUI behavior

Who it’s for

Terminal users who want model choice, code editing, shell work, debugging, and session management in one agent.
Developers switching among API providers, coding subscriptions, and local OpenAI-compatible models.
Teams that want typed subagent results, review workflows, and an optional shared browser session.
Extension authors who prefer TypeScript modules and an embeddable Node SDK.
Zed users who want the same agent through Agent Client Protocol.

Who it’s NOT for

Developers who want a narrow prompt-and-patch tool: the README exposes shells, debuggers, browsers, desktop control, memory, collaboration, MCP, and provider routing in one product.
Security-sensitive users unwilling to audit tool permissions: browser can adopt existing Chrome tabs, computer can control the host desktop, and the README says destructive ACP tools rely on permission prompts.
Alpine users expecting the prebuilt binary to be self-contained: the install note requires libstdc++ and libgcc first.
Contributors needing a clean source build in a generic Bun image: our native addon generation failed, then every one of the 12 test files reported an error.
Teams that avoid rapid breaking changes: release 18.0.5 renamed public helpers in both the AI and terminal packages, and same-version reports cover transcript duplication and resume rendering.

Setup reality

Our Bun install succeeded in 54 seconds, adding 412 packages and using 1,517 MB. The build ran for 225 seconds, then failed when pi-coding-agent called the native package generator. Tests failed after 6 seconds: 0 passed and 12 failed across 12 files.

The packaged CLI offers an install script, Homebrew, Bun, Nix, PowerShell, and mise. You still need a model: sign in to a supported coding plan, store an API key, or configure a local OpenAI-compatible endpoint. Browser relay, web search, image, speech, MCP servers, and desktop tools add their own permissions or credentials.

Source development is less forgiving. The README says a fresh clone needs workspace dependencies plus a Rust N-API addon, with bun setup building the native package. Its Nix shell pins Bun, Rust, and native dependencies. Stock Alpine also needs two C++ runtime packages before the prebuilt binary will run.

Oh My Pi bundles an IDE-sized tool surface into a terminal agent

Oh My Pi is not a thin chat wrapper. The README describes a coding agent with file operations, a persistent shell, language-server actions, debugger control, browser and desktop automation, memory, subagents, reviews, MCP servers, and model routing. The command is omp. It began as a fork of Pi and now ships its own TypeScript packages plus a sizable Rust native layer for search, shell work, syntax parsing, image handling, and terminal rendering.

The benefit is continuity. An agent can inspect a symbol through LSP, edit by hashed line anchors, run a debugger, and hand a separate review to subagents without learning a fresh external tool for each job. Four entry points expose the same engine: the interactive terminal UI, one-shot prompts, a Node SDK, and stdio protocols for RPC or editors. That is unusually flexible for teams that want to embed the agent as well as use it directly.

The broad tool set creates a large permission boundary

Several features reach beyond a source tree. The browser tool can drive Chromium, Electron applications, or existing Chrome tabs through a relay. The computer tool can enumerate windows, capture the screen, send input, inspect the accessibility tree, and touch the clipboard. Shells persist across calls. A model mistake in this environment can affect accounts and desktop state, so the relevant question is which tools are enabled and which actions require approval.

The README says some capabilities are disabled by default, including GitHub, security scans, image generation, speech, and memory operations. Through ACP, edits and shell actions route through session/request_permission. Those are useful controls, but they do not replace reading configuration and testing approval behavior. Avoid broad --auto-approve use on a normal workstation, especially when browser relay, desktop control, or a model-supplied MCP server can reach data outside the repository.

What happened when we ran it

Our sandbox installed commit 9892714 in 54 seconds with Bun. The monorepo added 412 packages and occupied 1,517 MB in a fresh Node-oriented container with 3 CPUs and 8 GB of RAM. The checkout itself contained 6,477 files and about 1,688,279 lines of source. Those figures make the source tree much larger than the compact terminal binary suggested by the one-line installation options.

The build ran for 225 seconds and failed with exit 1. @oh-my-pi/pi-coding-agent called bun --cwd=../natives run gen:native; that command exited 1, and the coding-agent build script threw. The log tail identifies native generation as the stopped step but does not show the lower-level compiler message. We cannot tell from that output which native dependency or source operation failed.

Tests ended after 6 seconds with exit 1. Bun reported 12 errors and 0 passing tests across 12 files. The orchestrator said packages/hashline failed while running its Bun tests, then threw from scripts/ci-test-ts.ts. With no assertion details in the supplied tail, the defensible finding is that the test command failed at that package, not that hashline's editing algorithm is broadly incorrect.

Packaged installation is easier than building the native layer

Users can install through the project's shell script, Homebrew tap, Bun package, Nix flake, PowerShell script, or mise. The README requires Bun 1.3.14 or newer for that route. Alpine has a specific exception: its stock environment lacks the dynamically linked libstdc++ and libgcc needed by the musl binary, so both packages must be installed first. That is the kind of platform note worth checking before a curl-to-shell install.

A source checkout needs more. The documented bun setup command installs workspaces and builds @oh-my-pi/pi-natives, the stage that failed in our lab. Native changes require another build. Nix users get pinned Bun and Rust toolchains plus the expected libraries through nix develop. Given our 225-second failure, the Nix environment is the sensible baseline for contributors instead of guessing which system packages a generic container lacks.

Provider choice is useful and creates configuration work

Oh My Pi can authenticate to direct APIs, coding subscriptions, gateways, and local servers. It assigns models to roles such as normal work, deeper reasoning, plans, reviews, and subagents. Custom OpenAI-compatible services go in ~/.omp/agent/models.yml, while fallback chains and multiple credentials handle errors or quotas. This is a meaningful advantage for developers who compare models or cannot tie all work to one vendor.

It also means cost, privacy, and behavior vary by role. A session may send code to one provider, screenshots to another, and subagent tasks to a cheaper model. Local servers can avoid an API key, while hosted services require login or secrets. Teams should define allowed providers in project configuration and check what inherited files are loaded, because the first run discovers rules, skills, and MCP servers from 8 existing editor and agent locations.

Version 18.0.5 is active and visibly unfinished

Release 18.0.5 shipped on 2026-08-25 and includes many provider, browser, terminal, agent, and native fixes. It also carries breaking renames in exported AI and terminal helpers. The repository was pushed again on 2026-08-26, with 27,494 stars and 1,773 open issues and pull requests. The combined count reflects intense development, not 1,773 confirmed defects.

Two fresh reports show current terminal risk. Issue 9780 reproduces duplicate rendered rows during long streamed replies on 18.0.5. Issue 9799 describes an intermittent bad first frame after resuming under WSL that repairs itself after a keypress. Neither blocks ordinary editing, but the terminal is the main product surface, so both deserve attention from anyone living in long sessions.

Oh My Pi makes sense for an expert who would otherwise assemble model switching, LSP, debug adapters, browser automation, agent memory, and subagent control from separate tools. Pi offers a smaller base, OpenCode a more restrained multi-provider experience, and Codex a focused coding workflow. Our failed native build leaves the packaged CLI unjudged. It makes the source-contributor experience the clearest reason to pause.

Alternatives

ProjectWhat it isPick it when
Pi gh↗The current home of the smaller coding-agent project from which Oh My Pi was forked.pick this instead when you want the underlying agent shape with fewer bundled tools and product opinions.
OpenCode gh↗An open terminal coding agent with provider choice and a client-server architecture.pick this instead when you want a more restrained multi-provider coding interface and do not need Oh My Pi's entire native tool set.
Codex gh↗OpenAI's open-source coding agent for terminal and hosted development workflows.pick this instead when OpenAI integration, sandboxed coding work, and a more focused agent surface matter most.

What people are saying

  1. [github-trending] can1357/oh-my-pi

Sources

  1. Oh My Pi README
  2. Oh My Pi 18.0.5 release
  3. Long streamed reply rendering issue 9780
  4. Resumed session rendering issue 9799

More ai tools reviews

OpenBitFun · rowboat · skills · superpowers-zh · yolov5 · eve · the whole board →