by can1357
⌥ AI Coding agent for the terminal — hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and more
# Add to your Claude Code skills
git clone https://github.com/can1357/oh-my-piGuides for using ai agents skills like oh-my-pi.
Last scanned: 4/21/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-04-21T06:04:12.172Z",
"semgrepRan": false,
"npmAuditRan": false,
"pipAuditRan": true
}The most capable agent surface that ships. Continuously tuned by real-world use — complete out of the box, open all the way down.
40+ providers · 32 built-in tools · 13 lsp ops · 27 dap ops · ~27k lines of Rust core.
macOS · Linux
curl -fsSL https://omp.sh/install | sh
Bun (recommended)
bun install -g @oh-my-pi/pi-coding-agent
Windows (PowerShell)
irm https://omp.sh/install.ps1 | iex
Pinned versions (mise)
mise use -g github:can1357/oh-my-pi
macOS · Linux · Windows · bun ≥ 1.3.14
Edits that land on the first attempt. Reads that summarize files instead of dumping their content. Searches that return instantly. Pick any model — omp will get it right.
| model | metric | what | | ---------------- | ------------ | --------------------------------------------------------------------- | | Grok Code Fast 1 | 6.7% → 68.3% | Tenfold lift the moment the edit format stops eating the model alive. | | Gemini 3 Flash | +5 pp | Over str_replace — beats Google's own best attempt at the format. | | Grok 4 Fast | −61% tokens | Output collapses once the retry loop on bad diffs disappears. | | MiniMax | 2.1× | Pass rate more than doubles. Same weights, same prompt. |
read : summarized snippets · ideal defaults · selector hit ratesearch : fastest in the westlsp : everything your IDE knows, the agent knowsprompts : adjusted relentlessly for each modelOriginally built on Mario Zechner's wonderful Pi, omp adds everything you're missing.
Most harnesses give the agent a Python sandbox and call it done. Ours runs persistent Python and a Bun worker, and either kernel can call back into the agent's own tools — read, search, task — over a loopback bridge. The agent loads a CSV with tool.read from inside Python, charts it from JavaScript, and never leaves the cell.
![omp TUI: a single eval session with [1/2] pandas describe (Python) printing a real DataFrame.describe() table, followed by [2/2] top scorer (JavaScript) running a reduce. Footer: 'Both kernels ran in one session.'](https://omp.sh/captures/eval.webp)
Ask for a rename and you get a rename. The call goes through workspace/willRenameFiles, so re-exports, barrel files, and aliased imports update before the file moves. Everything your IDE knows, the agent knows.

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. A Python process is wedged: debugpy, pause, inspect, evaluate. Most agents are still sprinkling print statements.

Your rules sit dormant until the model goes off-script. A regex match aborts the stream mid-token, injects the rule as a system reminder, and retries from the same point. You get course-correction without paying context tax on every turn. Injections survive compaction, so the fix sticks.
and asking the user to confirm.">
Split a job across workers and get typed results back. task fans out into isolated worktrees, each worker runs its own tool surface, and the final yield is a schema-validated object the parent reads directly. No prose to parse, no merge conflicts between siblings, no orphaned edits.

web_search chains fourteen ranked providers and hands whatever URLs it finds straight to read. Arxiv PDFs, GitHub pages, Stack Overflow threads come back as structured markdown with anchors intact — the same tool surface you use on local files. Cite, follow, quote, never lose where you came from.

Other agents shell out to rg, grep, find, and bash. On many machines those binaries don't exist, and on the ones where they do, every call costs a fork-exec round-trip. omp links the real implementations into the process. ripgrep, glob, find: in-process. brush is the bash, with sessions that survive across calls. The same omp binary runs on macOS, Linux, and Windows — no WSL bridge.
Get a clear verdict on whether the change ships, with every issue ranked P0 through P3 and scored for confidence. /review spawns dedicated reviewer subagents that sweep branches, single commits, or uncommitted work in parallel. You tackle what blocks release first; nothing important hides in a wall of prose.
Perfect edits, fewer tokens. The model points at anchors instead of retyping the lines it wants to change, so whitespace battles and string-not-found loops just stop happening. Edit a stale file and the anchors diverge — we reject the patch before it corrupts anything. Grok 4 Fast spends 61% fewer output tokens on the same work.
Other harnesses bolt on gh_issue_view, gh_pr_view, gh_search — each with its own parameters the agent has to learn and you have to debug. We skipped that. read already handles paths; PRs are paths. One interface to teach the model, one surface to keep correct.
The agent remembers your codebase between sessions. It writes facts mid-run with retain, pulls them back with recall, and compresses each session into a mental model that loads on the first turn of the next one. Project-scoped by default, so what it learns about this repo stays with this repo.
Run omp inside Zed and you get the same agent you drive from the terminal — reading the buffer you're actually looking at, writing through the editor's save path, spawning shells in the editor's terminal. Destructive tools pause for a permission prompt you can answer on
No comments yet. Be the first to share your thoughts!