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.

