Model or dataset
can1357/oh-my-pi avatar
can1357/oh-my-pi

oh-my-pi: A Terminal Coding Agent That Wires in LSP, DAP, and Hash-Anchored Edits

AI Coding agent for the terminal, hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and more.

38,960 stars4,448 forksTypeScriptMIT

At a glance

What is it?
oh-my-pi is a TypeScript and Rust coding agent for the terminal, forked from Pi, that adds hash-anchored edits, LSP-aware writes, a real debugger, and subagents. It targets engineers who want IDE-level behavior without leaving the command line.
Who is it for?
Adopt oh-my-pi if you live in the terminal, need LSP-aware renames and real debugger sessions from an agent, and want a harness that is tuned for specific models rather than a generic wrapper. Skip it if you prefer a stable, conservative toolchain or cannot tolerate the churn of v18.x releases that land multiple times a week.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • can1357/oh-my-pi38,960 ★ · +18,393
Star history
Repository2026-07-292026-11-13
can1357/oh-my-pi20.6k39k

18,393 Stars in the last 107 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What oh-my-pi Actually Fixes

The README describes oh-my-pi as a fork of Pi by Mario Zechner, with the tagline 'A coding agent with the IDE wired in.' The problem it solves is the gap between terminal-based AI agents and full IDEs. Most agents give you a Python sandbox and a text editor; oh-my-pi claims to give you the parts of an IDE that matter: language server protocol operations, a real debugger, and file edits that do not corrupt the codebase. The target user is an engineer who works in a terminal but misses the refactoring and debugging safety of an IDE. The project ships a Rust core of roughly 80k lines, 31 built-in tools, 14 LSP operations, and 28 DAP operations. That is a specific claim about scope, not a marketing number. The README also mentions 60+ providers, which suggests the agent can talk to many model backends.

Hash-Anchored Edits and the Tool Harness

The core mechanism for safe edits is hash-anchored edits. The README's benchmark table shows dramatic improvements when the edit format is fixed: Grok Code Fast 1 goes from 6.7% to 68.3% pass rate, and MiniMax doubles its pass rate. These numbers come from the project's own blog post, not from independent testing. The point is that the harness, not the model, is the bottleneck. The README claims that reads summarize files instead of dumping them, and that grep is 'fastest in the west.' That is a boast, not a verified fact. What is verifiable is that the harness is tuned per model, with prompts adjusted relentlessly for each one. That is a real design choice: instead of a universal prompt, oh-my-pi adapts to the model's weaknesses.

LSP and DAP: The IDE Wired In

The most concrete feature is LSP integration on every write. The README gives an example: a rename goes through workspace/willRenameFiles, so re-exports, barrel files, and aliased imports update before the file moves. That is a specific mechanism, not a vague promise. It means the agent does not just edit text; it asks the language server what depends on the file being moved. For debugger support, the README describes attaching lldb to a C binary, dlv to a Go service, and debugpy to a Python process. That is a broad claim, but the DAP operations count of 28 suggests a real implementation. The README links to a video capture, but the text alone does not prove the debugger works in all cases. The limitation is obvious: these features depend on the language server and debugger being installed and configured. If your project uses a language without LSP support, or if you are on Windows with a misconfigured PATH, these features will not work out of the box.

Installation and Configuration

The README lists several installation methods. The first one listed is a curl script for macOS and Linux: curl -fsSL https://omp.sh/install | sh. There is a Homebrew tap: brew install can1357/tap/omp. Bun users can install globally with bun install -g @oh-my-pi/pi-coding-agent. Nix users can run without installing via nix run github:can1357/oh-my-pi, or install into a profile. The Nix flake exposes packages.<system>.omp, overlays.default, nixosModules.default, and homeManagerModules.default. A Home Manager config example shows programs.omp.enable = true and settings.startup.quiet = true. Windows users can use irm https://omp.sh/install.ps1 | iex. The README notes that Alpine/musl users must install libstdc++ and libgcc first. There is also a mise integration: mise use -g github:can1357/oh-my-pi. Shell completions are generated from live command metadata, so they do not drift.

Subagents, Advisor Model, and Stream Rules

oh-my-pi includes first-class subagents. The README describes a task that fans out into isolated worktrees, each worker runs its own tool surface, and the final yield is a schema-validated object. That is a different approach from agents that return prose. The parent reads a typed result, not a paragraph. The Agent Hub, opened with Alt+A, shows the roster, live transcripts, and lets you steer or kill a worker without aborting the parent. Stream rules are time-traveling: a regex match aborts the stream mid-token, injects a system reminder, and retries from the same point. The README claims injections survive compaction. The trade-off is complexity: separate mechanisms (subagents, stream rules) that each add a layer of state and configuration.

Limitations and Failure Modes

Several limitations are visible from the repository. First, the project is a fork of Pi, and the fork adds a large surface: Rust core, Bun worker, Python kernel, LSP, DAP. That is a lot of moving parts. If any one fails, the agent may not work at all. Second, the Alpine note is a concrete failure mode: on stock Alpine, the prebuilt binary will not run until you install libstdc++ and libgcc. That is a real edge case. Third, the release cadence is aggressive: v18.14.2, v18.15.0, and v18.16.0 were published within three days (2026-10-31 to 2026-11-02). That means frequent updates, potential breaking changes, and a moving target for configuration. Fourth, the README mentions that PRs were previously gated by a vouch system, and that requirement is temporarily lifted. That suggests the maintainer is cautious about contributions, which could slow community fixes.

The Alternative: Pi and Other Terminal Agents

The direct alternative is the original Pi project, which oh-my-pi forked. Pi is a terminal coding agent by Mario Zechner. The difference is that oh-my-pi adds the LSP, DAP, subagents, and hash-anchored edits on top of Pi's base. Another alternative is a generic agent like Claude Code or Codex. The key difference in approach is that oh-my-pi is not a generic harness. It is tuned per model, with prompts adjusted for each model's weaknesses. That is a different philosophy from a one-size-fits-all prompt. If you want IDE-like behavior in the terminal, oh-my-pi is the one that attempts it. The trade-off is that oh-my-pi's complexity may be overkill for simple scripting tasks.

Maintenance and Licensing

The project is licensed under MIT, which is permissive and allows commercial use without copyleft obligations. That is a concrete fact from the repository metadata. The maintenance cost is visible in the release history: three releases in three days. That is a high cadence, which means you will need to track changes frequently. The README points to a CHANGELOG.md in the coding-agent package, so there is a record of changes. The project is not archived, and the last push is recent, so it is actively maintained. The Rust core is a significant dependency; if you need to build from source, you will need a Rust toolchain and a Bun runtime. The Nix flake and Home Manager module suggest a declarative setup, which can reduce drift, but only if you use Nix. For non-Nix users, the curl installer is the fastest path, but it also means you run a remote script; the README says the install scripts check the SHA-256 of the prebuilt binary before installing it.

Editorial conclusion

Adopt oh-my-pi if you live in the terminal, need LSP-aware renames and real debugger sessions from an agent, and want a harness that is tuned for specific models rather than a generic wrapper. Skip it if you prefer a stable, conservative toolchain or cannot tolerate the churn of v18.x releases that land multiple times a week. Before adopting, verify that your editor workflow does not depend on the IDE-only features that this agent approximates, and check the current state of the vouch system for PRs if you plan to contribute. The project is open under MIT, but the core is Rust and the surface is large, so budget time for upgrades and config drift.

Frequently asked questions

what is oh my pi

It is a terminal coding agent, MIT licensed, built as a fork of an earlier project by a named author and maintained by a company. The README describes it as a coding agent with the IDE wired in, with more than sixty providers, thirty-one built-in tools, fourteen language server operations, twenty-eight debug adapter operations and about eighty thousand lines of Rust core.

how to install oh-my-pi

On macOS and Linux the one-line script downloads an installer from the project's domain and pipes it to a shell. The alternatives are a Homebrew tap, a global install through the Bun package manager which the README recommends, two Nix routes, a PowerShell one-liner on Windows, and a version manager route that pins a release. On Alpine or musl you must first install two C++ runtime libraries the prebuilt binary needs.

What is the difference between pi and oh my pi?

The README says the project was originally built on the upstream project and adds what is missing, listing persistent code execution with tool calling, the language server wired into every write, a real debugger integration, time-traveling stream rules and first-class subagents. It also states plainly that it is a fork, with the upstream credited by name in the header.

Why use oh my pi?

The README argues for the harness rather than the model: it claims the edit format is what decides whether a model's edits land, and gives figures for several models changing sharply when the format changes, including one where output tokens fall by sixty-one percent once a retry loop on bad diffs is removed. It also says any model can be picked, that reads summarise files instead of dumping them, and that shell completions are generated from live command metadata so they cannot drift.

Is oh my pi any good?

The project claims to be continuously tuned by real-world use and publishes benchmark figures per model in a table, and it carries a note saying pull requests are temporarily open to anyone as a trial because the previous vouch requirement is being evaluated. The releases are frequent, with three tagged versions between 2026-10-31 and 2026-11-02.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community

Where developers are discussing it

Posts on Hacker News, dev.to and Lobsters that link to this repository, found by our scan of those communities. 1 in the last 30 days; newest first.

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/can1357-oh-my-pi.svg)](https://hysenlabs.com/projects/can1357-oh-my-pi)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/can1357-oh-my-pi.svg)](https://hysenlabs.com/projects/can1357-oh-my-pi)

Was this useful?