# oh-my-pi: Terminal Coding Agent with LSP, Debugger, and Subagents

> oh-my-pi is an open-source terminal coding agent built on a Rust core that wires LSP operations, a live debugger, and multi-agent fanout directly into the tool harness. It ships over 60 AI providers and 31 built-in tools out of the box.

**can1357/oh-my-pi** — AI Coding agent for the terminal, hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and more.

- Repository: https://github.com/can1357/oh-my-pi
- Website: https://omp.sh
- Stars: 33,288 · Forks: 3,538
- Language: TypeScript
- License: MIT
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/can1357-oh-my-pi

## What oh-my-pi Is and Who It Targets

oh-my-pi (omp) is a terminal coding agent that positions itself as "a coding agent with the IDE wired in." It is a fork of Pi by Mario Zechner, built and maintained by Stencil Labs. The project's README describes it as "the most capable agent surface that ships," continuously tuned by real-world use and open all the way down.

The target user is a developer who runs an AI coding agent in the terminal and finds that text-only edit tools are not enough for real debugging work. Developers working in C, Go, Python, TypeScript, or Rust who want the agent to attach to a live process, walk a stack frame, or execute a rename through the workspace file system will find those capabilities built in. The agent supports over 60 providers, so teams already committed to a specific model are not forced to switch.

## The Architecture: Rust Core, TypeScript Shell, Bun Runtime

The repository is a monorepo with a roughly 80,000-line Rust core and a TypeScript layer on top, running on Bun version 1.3.14 or later. The Cargo.toml workspace lists the Rust crates: pi-ast, pi-builtins, pi-diff, pi-edit, pi-iso, pi-natives, pi-predict, pi-shell, pi-vcs, pi-vfs, pi-voice, and pi-walker. The pi-diff and pi-edit crates handle what the README calls hash-anchored edits, a mechanism that ties each edit to a specific file state to prevent applying a diff to the wrong version of a file.

The TypeScript side wraps the Rust native module (@oh-my-pi/pi-natives) and provides the agent loop, tool definitions, and provider adapters. The package.json shows the workspace is named omp and includes packages such as pi-agent-core, pi-ai, pi-catalog, and pi-tui. The result is a self-contained binary that ships with its own tool catalog and model registry.

## Installing oh-my-pi on macOS, Linux, and Windows

The README documents five installation paths. The one-line curl installer works on macOS and Linux:

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

Homebrew is the alternative on macOS and Linux:

```sh
brew install can1357/tap/omp
```

For teams using Bun as their primary runtime, the recommended path is:

```sh
bun install -g @oh-my-pi/pi-coding-agent
```

On Windows, the PowerShell installer is:

```powershell
irm https://omp.sh/install.ps1 | iex
```

Nix users can run omp without installing it with `nix run github:can1357/oh-my-pi`, or install it with `nix profile install github:can1357/oh-my-pi`. Flake consumers have access to packages, overlays, nixosModules, and homeManagerModules. The README documents a full Home Manager configuration for declarative omp settings.

One environment note from the README: the prebuilt musl binary for Alpine Linux links libstdc++ and libgcc dynamically. Stock Alpine does not ship those libraries, so they must be installed with `apk add libstdc++ libgcc` before running omp.

## LSP Integration: Renames, Imports, and What the IDE Knows

oh-my-pi exposes 14 LSP operations directly to the agent. The README describes the rename example: asking for a rename sends the request through workspace/willRenameFiles, which means re-exports, barrel files, and aliased imports are updated before the file moves. This is the same code path an IDE uses, not a text search-and-replace.

The README summarizes the design goal as: "Everything your IDE knows, the agent knows." The lsp-config.md documentation linked from the README covers how to configure language server connections. This capability separates omp from agents that operate on file text alone: LSP-backed operations respect the language semantics, reducing the risk of leaving broken references after a rename or move.

## Debugger Attachment and Time-Traveling Stream Rules

The README documents debugger integration across three runtimes. For C binaries, the agent attaches lldb and inspects stack frames. For Go services, it attaches dlv and walks goroutines. For Python processes, it uses debugpy to pause, inspect, and evaluate. The 28 DAP operations in the tool surface cover the interaction with these debuggers.

Separate from debugging, the README describes "time-traveling stream rules." These are rules defined by the user that stay dormant until the model produces output matching a regex. At that point the stream is aborted mid-token, a system reminder is injected, and generation retries from the same position. The README notes that injections survive context compaction, so the correction persists across a long session. This mechanism allows users to enforce project-specific output constraints without paying context overhead on every turn.

## Subagents, Agent Hub, and the Advisor Role

oh-my-pi implements first-class subagents. The task tool fans work out into isolated worktrees; each worker runs its own tool surface and returns a schema-validated typed result to the parent. The README notes this avoids parsing prose output from workers and prevents merge conflicts between siblings running in parallel.

While fanout is running, pressing Alt+A opens Agent Hub, which shows the current activity and token usage for every subagent. Users can open a worker's live transcript, send a steering message, revive a parked worker, or kill a stuck one without aborting the parent session.

The README also describes an advisor role: a second model assigned to review every turn the main agent takes. It runs on its own context window and its own model, injecting notes as asides or blockers. The main agent sees the note and either course-corrects or explains why it will not.

## Limitations and Maintenance

oh-my-pi is a fork of an active project (Pi by mariozechner), which means the upstream codebase evolves and upstream changes must be selectively pulled in. The README notes that pull requests were previously restricted to vouched contributors; that requirement was temporarily lifted as a trial at the time of writing.

The musl/Alpine constraint is a concrete deployment limitation: the prebuilt binary has a runtime dependency on libstdc++ and libgcc that stock Alpine omits. Docker images built from a standard Alpine base will need those packages explicitly.

The Dockerfile in the repository shows a multi-stage build: a natives-builder stage compiles the Rust addon, a wheel-builder stage produces a Python package, and a pi-runtime stage assembles the final image. This confirms that running omp in Docker requires building the Rust native module for the target architecture.

The project is under the MIT license. The last push was on 2026-09-25. Version 18.4.2 was released on 2026-09-28. Releases have been shipping daily in recent weeks, reflecting active development.

## Conclusion

oh-my-pi is worth evaluating for developers who need a terminal agent that goes beyond text edits: the LSP rename integration, live debugger attachment, and typed subagent results address problems that simpler agents cannot. Before adopting it, test the musl binary behavior on Alpine and verify which provider authentication your team requires; the tool catalog and model list ship with the binary and may differ across releases.

## FAQ

### What is the difference between pi and oh my pi?

oh-my-pi is a fork of Pi by Mario Zechner. The README states that omp adds LSP integration, a live debugger, time-traveling stream rules, first-class subagents, and an advisor role that were not in the original Pi.

### How do I install oh-my-pi?

Run `curl -fsSL https://omp.sh/install | sh` on macOS or Linux. Homebrew and bun installs are also available. On Windows, use the PowerShell installer: `irm https://omp.sh/install.ps1 | iex`.

### Is oh my pi any good?

The README provides benchmark data showing meaningful improvements over baseline for several models, such as a pass rate increase from 6.7% to 68.3% for Grok Code Fast 1. The quality of results depends on the model chosen and the type of task; LSP-backed renames and debugger attachment are concrete capabilities most other terminal agents lack.

### What is oh my pi?

oh-my-pi (omp) is an open-source terminal coding agent with a roughly 80,000-line Rust core, 31 built-in tools, 14 LSP operations, 28 DAP debugger operations, and support for over 60 AI providers. It is built and maintained by Stencil Labs.

## Sources

- [Official documentation](https://omp.sh)
- [Official README](https://github.com/can1357/oh-my-pi#readme)
- [Project repository](https://github.com/can1357/oh-my-pi)
- [Release notes](https://github.com/can1357/oh-my-pi/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/can1357-oh-my-pi
