I covered Pi, Mario Zechner’s minimal agent core, a while back. oh-my-pi is a fork of it, built by Stencil Labs, and it’s grown into something substantial enough — 33,800+ stars, multiple merged pull requests landing most days including several dated to today — to deserve its own look rather than a footnote on the original.

The core pitch is specific in a way a lot of “smarter agent” claims aren’t: LSP wired directly into the agent, so everything your IDE’s language server already knows — types, references, definitions, diagnostics — the agent knows too, on every write, not just when it happens to grep for it. The more concrete example the project leads with is real debugger integration: a C binary segfaults, and the agent attaches lldb and steps to the actual bad pointer rather than sprinkling print statements through the code to triangulate the problem. A hung Go service gets dlv attached and its goroutines walked directly. A wedged Python process gets debugpy, paused, and inspected. That’s a genuinely different mode of operating than an agent that debugs by re-reading its own edits and guessing.

The architecture underneath is a proper monorepo, not a thin wrapper around the original Pi. Multiple Rust crates handle the performance-sensitive pieces specifically — pi-ast does tree-sitter-based code summarization across 50-plus language grammars, pi-walker is a parallel, ignore-aware filesystem walker shared across grep and glob operations, pi-iso resolves task isolation through APFS clones, btrfs/zfs reflinks, or overlayfs depending on platform, and pi-edit is a dedicated line-anchored patch engine with atomic apply and streaming previews. snapcompact, described as bitmap-frame context compression with its own SQuAD evaluation suite, is effectively its own entry in the token-compression space I’ve covered twice today already — this ecosystem is converging on the same problem from yet another angle.

Memory is a first-class, explicitly pluggable subsystem — a local, rollout-summarization backend by default, or a direct integration with Hindsight, retaining transcripts on a configurable interval and recalling memories automatically at the start of a session through Hindsight’s own retain, recall, and reflect tools. That’s a real, working instance of exactly the composability I described generally when covering Hindsight — a coding agent plugging into shared memory infrastructure rather than building its own closed version from scratch.

Development pace is worth noting on its own, separate from any individual feature. The pull request history shows a steady stream of small, specific fixes and features landing continuously — queue-entry state bugs, terminal escape handling, subagent continuation controls — the pattern I described as the healthy version of tracking a project’s activity: not a single splashy release followed by silence, but the ordinary, continuous maintenance rhythm of a fork that’s actively diverging from and building on what it started from, rather than just trailing its upstream at a fixed distance.

Worth trying specifically if what’s been missing from your current agent is the exact failure mode it’s built against: watching an agent print-statement its way toward a bug that a real debugger would isolate in one step, or losing IDE-level type and reference information every time the agent falls back to plain-text grep instead.