oh-my-pi: a terminal agent that treats the harness as the product

On 2026-06-26, can1357/oh-my-pi — a fork of Mario Zechner’s pi-mono, re-engineered into a terminal AI coding agent called omp — sat at 14,677 stars, 1,287 forks, 369 open issues, 10,671 commits, MIT, created 2025-12-31 (metadata). Three releases (v16.1.19, v16.1.20, v16.1.21) shipped in the 18 hours before publication. That cadence is the signal worth understanding.
What it is
A terminal coding agent, not a wrapper. omp ships as a single Rust binary on macOS, Linux, Windows (no WSL bridge). Install: curl -fsSL https://omp.sh/install | sh on Unix, irm https://omp.sh/install.ps1 | iex on Windows, brew install can1357/tap/omp, or bun install -g @oh-my-pi/pi-coding-agent. Four entry points: TUI, one-shot prompt, Node SDK, stdio RPC / ACP.
The fork relationship. oh-my-pi is a fork of Mario Zechner’s Pi — previously at badlogic/pi-mono. LICENSE: ”© 2025 Mario Zechner / © 2025-2026 Can Bölük.” Upstream Pi: 65.7k stars, MIT, 240 releases. The maintainer’s framing: “The model is the moat. The harness is the bridge. Burning bridges just means fewer people bother to cross.” (blog.can.ac, 2026-02-12).
The four numbers. 40+ providers (Anthropic, OpenAI, Gemini, xAI Grok, Mistral, Groq, Cerebras, Fireworks, Together, Hugging Face, NVIDIA NIM, OpenRouter, Ollama, llama.cpp, vLLM, LiteLLM). 32 built-in tools plus 14 LSP + 28 DAP operations. ~55k lines of Rust in the N-API addon.
Why it matters
The harness is the boundary between “the model knows what to change” and “the change is on disk.” Most agents leave that boundary to a thin wrapper around read, str_replace, and bash. omp treats it as a product surface. Four mechanisms carry the load.
1 · Hashline — edit by content hash. The harness tags every read line with a 2-3 hex character content hash; every patch is anchored to a [PATH#TAG] full-file content hash, and rejects the patch before it corrupts anything if the file has changed. The model never retypes the lines it wants to change; the harness resolves the anchor and applies SWAP / INS / DEL operations (hashline README).
2 · First-class subagents with schema-validated yield. The task tool fans out into isolated worktrees; the final yield is a schema-validated object the parent reads directly — no prose to parse.
3 · Time-traveling stream rules. A regex match against the streaming model output aborts mid-token, injects the rule as a system reminder, and retries from the same point. README example: the model is about to write Box::leak; the request aborts, an amber card injects “Don’t reach for Box::leak in production code paths,” and the agent course-corrects to Arc<str>.
4 · The advisor model. A second model on the advisor role reads every turn and injects notes inline. Stream rules catch mechanical departures from policy; the advisor catches semantic drift.
Plus: native on Windows (ripgrep, glob, find, brush in-process); eight-format config import (Cursor MDC, Cline .clinerules, Codex AGENTS.md, Copilot applyTo); 18-hour release cadence with fixes at the right depth.
The benchmark
The README publishes a 540-task, 16-model benchmark (3 runs per task, fresh session each time):
| Model | Metric | What |
|---|---|---|
| Grok Code Fast 1 | 6.7% → 68.3% | Tenfold lift when the edit format stops eating the model |
| Gemini 3 Flash | +5 pp | Over str_replace — beats Google’s own best attempt |
| 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 |
All four are project-published and self-attributed. Treat the spread as the order-of-magnitude the harness contribution can deliver, not a contract (README).
Practical implications
- For harness evaluators. The right question is “which agent’s tool boundary is best” — not “which agent is best.” All of
omp’s load-bearing moves are harness-side. - For teams replacing Claude Code / Codex CLI today. Migration cost is low —
ompreads Cursor MDC, Cline.clinerules, CodexAGENTS.md, CopilotapplyToin their native shape, and the same binary runs against Anthropic, OpenAI, xAI, Google, Mistral, Groq, Ollama, orllama.cpp. - For researchers. Hashline lives in
packages/hashline; the agent runtime inpackages/agentexposes typed events.
What to watch
- Independent reproduction of the 16-model × 3-edit-format matrix on a model not in the original sixteen.
- Upstream Pi merge cadence —
ompis a fork, not a vendor branch. - The advisor model in real sessions — no published benchmark yet.
/collaband themy.omp.shrelay — third-party service, no SLO.- VOUCHED.td governance — a public denouncement list of bad actors.
Risks and caveats
- The 10× lift numbers are project-published and self-attributed. Treat as the order-of-magnitude the harness contribution can deliver, not a bill-line guarantee.
- The
my.omp.shrelay is a third-party dependency. Frames are sealed client-side; that protects content, not availability. - Supply-chain surface is large. 40+ provider SDKs, 14 web-search backends, MCP, ACP, Discord, four platform-tagged binaries.
- 369 open issues / 10,671 commits is a velocity signal, not a stability signal. Six tags in 72 hours.
- MIT is permissive; the maintenance commitment is not guaranteed. Pin a release tag. Vouch-based contribution model; one maintainer’s call.
Verdict
can1357/oh-my-pi — the fork of Mario Zechner’s Pi shipping as omp — sat at 14,677 stars, 1,287 forks, 369 open issues, 10,671 commits, MIT, with a Rust core of ~55k lines, 40+ LLM providers, and a project-published 16-model edit benchmark. The 18-hour release cadence is the second load-bearing signal: a project using its own binary. The takeaway is harness engineering — the model is the moat, the harness is the bridge — a working MIT-licensed demo of a serious agent boundary in 2026. Pin a release tag, read packages/hashline.
Sources
- can1357/oh-my-pi — GitHub repository metadata (2026-06-26)
- can1357/oh-my-pi — main README (2026-06-26)
- can1357/oh-my-pi — Releases API (2026-06-26)
- can1357/oh-my-pi — hashline package README (2026-06-26)
- can1357/oh-my-pi — pi-agent package README (2026-06-26)
- can1357/oh-my-pi — main LICENSE (2026-06-26)
- can1357/oh-my-pi — CONTRIBUTING.md (2026-06-26)
- Can Bölük — I Improved 15 LLMs at Coding in One Afternoon. Only the Harness Changed. (blog.can.ac, 2026-02-12)
- earendil-works/pi — upstream Pi project (2026-06-26)
- omp.sh — project homepage (2026-06-26)