Map

oh-my-pi

Toolbox toolboxtypescriptcliaicoding-agentforkTypeScriptMIT ↳ show in map Markdown
title
oh-my-pi
type
toolbox
summary
Batteries-included fork of the Pi coding agent bundling LSP, browser control, SSH and search
tags
typescript, cli, ai, coding-agent, fork
language
TypeScript
license
MIT
created
2026-05-06
updated
2026-07-20

A maximalist fork of 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, 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

# 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-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 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 — TypeScript, MIT, ~4,000 stars (May 2026). Fork of pi-mono.