A coding agent with
the IDE wired in

The most capable agent surface that ships. Continuously tuned by real-world use — complete out of the box, open all the way down. Hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and more.

40+
Providers
32
Built-in Tools
13
LSP Operations
27
DAP Operations

The most capable agent surface that ships

oh my pi is a fork of Pi by Mario Zechner, rewritten as a coding-first surface: sessions, subagents, slash commands, extensions — all TypeScript, all MIT, all on GitHub.

Hash-anchored edits

Perfect edits with fewer tokens. The model points at content-hash anchors instead of retyping lines. Stale patches are rejected before they corrupt anything.

🔄

Optimized tool harness

32 built-in tools in a unified namespace. Each tool is benchmaxxed for real-world use — reads that summarize, searches that return instantly, edits that land first try.

📋

LSP wired into every write

Everything your IDE knows, the agent knows. Renames update re-exports, barrel files, and aliased imports before the file moves. Diagnostics, navigation, symbols, code actions.

🐍

Persistent Python & JavaScript kernels

Run Python or Bun persistently. Either kernel can call back into the agent's own tools — read, search, task — over a loopback bridge.

🌐

Real browser integration

Drives a real browser with stealth mode by default. Same API works for any Electron app — point it at Slack and the agent reads your DMs like it reads the web.

🤖

First-class subagents

Fan out work across isolated workers. Each runs its own tool surface and yields schema-validated results. No prose to parse, no merge conflicts between siblings.

The loop that makes every session productive

From prompt to edit to result — omp keeps every turn fast, inspectable, and reversible.

01

Understand the context

The agent reads your workspace, rules, and open files. Built-in discovery inherits what Cursor, Claude, Copilot, and other tools already wrote in their native formats — no migration needed.

02

Edit with hash anchors

The model points at content-hash anchors instead of retyping lines. Whitespace battles and string-not-found loops stop happening. Stale anchors are rejected before they corrupt work.

03

Preview and accept

Structural rewrites preview as proposed cards. The agent calls resolve with a reason and the change lands atomically — all or nothing, every time.

04

Review and iterate

Built-in code review with ranked priorities (P0–P3). Conflicts resolve via simple URL commands. Background jobs and subagents keep the main thread moving.

Built different — on purpose

Most harnesses automate execution. omp automates the cycle of understanding, editing, verifying, and iterating.

Hashline edits unique

Content-hash anchoring eliminates whitespace battles. Grok 4 Fast spends 61% fewer output tokens on the same work. Edits land first try or get rejected cleanly.

Native performance in-process

ripgrep, glob, find, shell — all in-process on the libuv pool. No fork/exec on the hot path. The same binary runs on macOS, Linux, and Windows without WSL.

Memory that curates itself hindsight

The agent writes facts mid-run, pulls them back on demand, and compresses each session into a mental model. Project-scoped by default — what it learns stays with your repo.

40+ providers any model

Roles route work by intent. Fallback chains handle rate limits. Round-robin credentials rotate API keys. One interface to teach the model, one surface to keep correct.

Time-traveling stream rules course-correct

Rules sit dormant until the model goes off-script. A regex match aborts mid-token, injects the rule as a system reminder, and retries from the same point. No context tax.

GitHub is a filesystem pr://

PRs, issues, agents, skills — all resolve inside every FS-shaped tool. read pr://1428 returns the same shape as read src/foo.ts. No bolt-on API calls to learn.

32 tools, one namespace

Every tool lives in the same surface. Pin the active set, or let discovery pull tools back in mid-session.

Files & Search
read
Files, directories, archives, SQLite, PDFs, URLs, internal schemes
write
Create or overwrite files, archives, SQLite rows
edit
Hashline patches with content-hash anchors and recovery
ast_edit
Structural rewrites previewed before apply, via ast-grep
ast_grep
Structural code queries over 50+ tree-sitter grammars
search
Regex over files, globs, and internal URLs
find
Glob-based path lookup
Runtime
bash
Workspace shell with PTY and background dispatch
eval
Persistent Python and JavaScript cells with shared prelude
ssh
One remote command against a configured host
Code Intelligence
lsp
Diagnostics, navigation, symbols, renames, code actions
debug
Drive DAP sessions — breakpoints, stepping, stacks, variables
Coordination
task
Fan out subagents in parallel, workspace-isolated
irc
Short prose between live agents in the same process
todo
Ordered mutations over session todo lists
job
Wait on or cancel background jobs
ask
Structured follow-up questions for interactive runs
Outside the Box
browser
Puppeteer tabs over headless Chromium or CDP-attached apps
web_search
One query across fourteen ranked providers
github
GitHub CLI ops — repo, PR, issues, Actions
generate_image
Generate or edit raster images via Gemini image models
inspect_image
Vision-model analysis of local image files
render_mermaid
Mermaid source to ASCII or PNG
Memory & State
retain
Queue durable facts into the Hindsight bank
recall
Search the Hindsight bank for raw memories
reflect
Ask Hindsight to synthesize an answer over the bank
checkpoint
Mark conversation state for collapse-and-report
rewind
Prune exploratory context, keep a concise report

What makes oh my pi different

oh my pi starts where other agents stop. Most coding assistants give you a sandboxed Python environment and call it done. omp gives you persistent Python and JavaScript kernels that can call back into the agent's own tools — read, search, task — over a loopback bridge. The agent loads a CSV with read from inside Python, charts it from JavaScript, and never leaves the cell.

Hashline: Edits that land on the first attempt. The model references content-hash anchors instead of retyping the lines it wants to change, so whitespace battles and string-not-found loops disappear. Edit a stale file and the anchors diverge — the patch is rejected before it corrupts anything.

Language Server Protocol is wired into every write. Ask for a rename and the call goes through workspace/willRenameFiles. Re-exports, barrel files, and aliased imports update before the file moves. Everything your IDE knows, the agent knows.

The debugger drives lldb, dlv, and debugpy natively. A C binary segfaults: the agent attaches lldb, steps to the bad pointer, reads the frame. A Go service hangs: it attaches dlv and walks the goroutines. Most agents are still sprinkling print statements.

Native performance: ripgrep, glob, find — all in-process on the libuv pool. No fork/exec on the hot path. The same binary runs on macOS, Linux, and Windows without WSL. Roughly 27,000 lines of Rust doing the work other harnesses shell out for.

Four entry points: interactive TUI, one-shot prompt, Node SDK, and RPC over stdio. The same engine, four wrappers. Use the TUI for everyday work, the SDK to embed in your own tools, RPC for non-Node hosts, and ACP to speak to editors.

oh my pi inherits what your other tools already wrote. Cursor MDC, Cline .clinerules, Codex AGENTS.md, Copilot applyTo — no migration script, no YAML-to-TOML port, no "supported subset" footnotes. The config your team wrote last quarter works tonight.

From zero to coding in one command

Install omp and start coding. macOS, Linux, Windows — one line each.

01

Install

macOS and Linux:

curl -fsSL https://omp.sh/install | sh

Windows (PowerShell):

irm https://omp.sh/install.ps1 | iex
02

Install via Bun (recommended)

bun install -g @oh-my-pi/pi-coding-agent
03

Set up shell completions

Add to ~/.zshrc:

eval "$(omp completions zsh)"
04

Start coding

Run omp in your project directory. The agent automatically discovers your existing rules, skills, and MCP servers. No configuration needed.

Answers to the questions people ask first

Start here if you want to know what omp is, who built it, and what you need to run it.

What is oh my pi?
oh my pi (omp) is an AI coding agent for the terminal — a fork of Pi by Mario Zechner. It features hash-anchored edits, an optimized tool harness, LSP integration, persistent Python and JavaScript kernels, browser control, subagents, and support for 40+ LLM providers. It is MIT-licensed and written in TypeScript and Rust.
What makes omp different from other coding agents?
omp is the only agent that links native implementations of grep, glob, shell, and AST parsing directly into the process — no fork/exec overhead. It ships with 32 built-in tools, first-class subagents, a built-in debugger, LSP integration on every write, and can read PDFs, URLs, and GitHub PRs through the same tool interface.
Who created oh my pi?
oh my pi is created and maintained by Can Bölük (can1357). It is a fork of Pi by Mario Zechner (mariozechner). The project is open source under the MIT license and lives at github.com/can1357/oh-my-pi.
What platforms does omp support?
macOS, Linux, and Windows — the same binary runs natively on all three platforms. No WSL bridge needed on Windows. Requires bun ≥ 1.3.14.
How many tools does omp include?
32 built-in tools across files and search, runtime, code intelligence, coordination, browser/web, memory and state, and miscellaneous categories. Each tool lives in the same namespace as read and bash.
What LLM providers are supported?
40+ providers including Anthropic, OpenAI, Google Gemini, xAI, Mistral, Groq, Cerebras, OpenRouter, Perplexity, and more. Roles route work by intent — default, smol, slow, plan, commit. Fallback chains handle rate limits automatically.
Can omp use existing configuration from other tools?
Yes. On first run, omp inherits rules, skills, and MCP servers from .claude, .cursor, .windsurf, .gemini, .codex, .cline, .github/copilot, and .vscode. No migration script needed.

Everything here is grounded in the source

Every claim on this page is based on the repository README, documentation, and linked discussion.