# oh-my-pi

A maximalist fork of [[pi-coding-agent|Pi]] by Can Bölük. Where Mario Zechner's upstream Pi keeps a tiny core and pushes everything else out to community packages, oh-my-pi takes the opposite turn: bundle the tools developers actually reach for (LSP, IPython, browser automation, SSH, web search, conventional-commit generation, code review) directly into the agent. The naming nods at oh-my-zsh — same relationship: a curated, batteries-included distribution layered on a minimal upstream.

Contrast [[lazypi|LazyPi]], the other batteries-included Pi: LazyPi is an *installer* that leaves upstream Pi untouched and pulls in community packages around it, where oh-my-pi is a *fork* that owns the binary. Fork vs. installer is the axis that separates the two — oh-my-pi absorbs integration and breakage risk into one codebase; LazyPi stays on the exact upstream everyone runs but inherits the fragmentation of many small packages.

## Philosophy

The README condenses the project's stance to three sentences:

> "Keep interactive terminal-first UX for real coding work. Include practical built-ins (tools, sessions, branching, subagents, extensibility). Make advanced behavior configurable rather than hidden."

This is a direct counterpoint to upstream Pi's minimalism. Pi argues that MCP, sub-agents, plan mode, and to-dos are bloat that belongs in user-installed extensions; oh-my-pi argues that real coding work needs those things present out of the box, and that configurability — not omission — is the right way to keep the tool legible. The phrase "configurable rather than hidden" is the operative one: behaviors aren't gated behind opaque defaults or stripped out, they're surfaced as settings the user can read and change. It's the Emacs/Doom or Zsh/oh-my-zsh split, transposed onto coding agents.

## Usage

```bash
# Bun (recommended, requires Bun >= 1.3.7)
bun install -g @oh-my-pi/pi-coding-agent

# Or installer script
curl -fsSL https://raw.githubusercontent.com/can1357/oh-my-pi/main/scripts/install.sh | sh

# Or mise
mise use -g github:can1357/oh-my-pi
```

In-session slash commands include `/plan`, `/model`, `/review`, `/extensions`, `/memory`, `/export`. `Shift+Tab` cycles thinking levels; `Ctrl+R` searches prompt history; `Ctrl+G` opens the current input in an external editor.

## What's bundled

- **Hash-anchored edits** — content-aware file edits that don't depend on string matching, avoiding the brittle find-and-replace failure mode.
- **LSP integration** for 40+ languages with diagnostics and formatting baked in.
- **Python execution** via a persistent IPython kernel with rich output.
- **Git commit tool** that generates conventional-commit messages with categorization.
- **Code review mode** producing structured findings with priority levels.
- **Browser automation** via headless Puppeteer with stealth plugins.
- **Web search** across multiple providers (Exa, Brave, Jina).
- **SSH tool** with persistent connections.
- **Task / subagent system** for parallel specialized work.

## Configuration model

- Custom slash commands live as TypeScript modules at `~/.omp/agent/commands/`.
- 65+ built-in themes (Catppuccin, Dracula, Nord, ...).
- MCP support for external tools — present, but not the only extension path; native skills and hooks coexist.
- Role-based multi-model routing: separate models for `default`, `smol`, `slow`, `plan`, and `commit` roles. The agent picks the cheaper or faster model for the appropriate role.
- **Universal config discovery** — auto-reads agent configs from Claude Code, Cursor, Windsurf, Gemini, and Cline so you don't re-author the same project context per tool.
- Lifecycle hooks for tool interception.

## Session management

Sessions persist as JSONL automatically. The session tree supports branching and navigation back to earlier points (inherited from upstream Pi). Long conversations get context compaction; an autonomous memory extractor pulls durable facts forward between sessions.

## Relation to upstream Pi

Fork of [[pi-coding-agent|pi-mono]]. Upstream stays minimal and ships a small core; oh-my-pi tracks upstream and adds the layer most teams would otherwise assemble themselves. License and TypeScript codebase carry over; Rust and Python components are oh-my-pi additions (likely the LSP layer and IPython runner respectively).

Compare with [[botctl]] for a different agent-orchestration angle (multi-agent supervision rather than single-agent extension), and [[claude-code]] for the closest commercial analog to the bundled-tools approach.

## Limitations

- Single-author fork (Can Bölük). Currency depends on one person tracking upstream Pi.
- Bun ≥ 1.3.7 is the recommended runtime — not all environments have Bun handy, and the installer script is the alternative.
- TypeScript-heavy core with Rust and Python sub-components means the build chain is broader than Pi's pure-TypeScript stack.
- 4k stars is healthy but the project is young (current release v14.7.0, May 2026); maturity vs. upstream's stability tradeoff is unresolved.

Tracked on [[toolbox/watchlist]] — single-maintainer fork of an upstream that keeps moving; worth re-checking whether the fork stays in sync or drifts.

## Repo

[github.com/can1357/oh-my-pi](https://github.com/can1357/oh-my-pi) — TypeScript, MIT, ~4,000 stars (May 2026). Fork of [[pi-coding-agent|pi-mono]].
