Harness review: Oh My Pi Last read
A hands-on review of the Oh My Pi coding harness, tested against a local llama.cpp server through a logging proxy and compared to Pi and Open Code. The reviewer's main complaint is weight: a single "hello" burns roughly 19,000 of 128,000 context tokens (4.5k system prompt, 11k tool descriptions), the built-in system prompt is long and highly opinionated, and defaults like 32 concurrent sub-agent workers and OS-level notifications are wrong for local hardware. He likes the built-in sub-agent scouts and the UI, and notes most of the bloat can be trimmed via config, but would personally pick Pi (and Open Code above that) because he'd rather build up a minimal tool than strip down a heavy one.
- Oh My Pi is a fork of Pi, not just Pi with extensions bundled — the tool that fits that description is Lazy Pi, which the reviewer plans to cover separately.
- Setup friction: the provider list isn't sorted in any order, choosing llama.cpp pops open an unrequested browser tab, it asks for an API key on a local network, and it hardcodes 127.0.0.1 so pointing at a LAN server requires an environment variable or a custom provider in the config file.
- Through a man-in-the-middle proxy, Oh My Pi alone throws a getpeername stack trace — it appears to kill the connection the instant a response arrives; Pi and Open Code on the same proxy don't do this, and the error is harmless (suppressible by sending stderr to /dev/null).
- By default it fires an OS-level system notification after every prompt; you turn it off with a PI notifications environment variable.
- Out of the box a single "hello" consumes about 19,000 of 128,000 tokens — 4.5k for the system prompt and 11k for tool descriptions across read, bash, edit, ask, eval, glob, grep, task, hub, todo, web search and write.
- The default system prompt cites RFC 2119 and contains debatable engineering rules (e.g. delete an existing test that fails its bar), reminding him of Open Code's old bloated prompt; it can be replaced with system.md or extended with append_system.md.
- Sub-agents ("scouts") run in parallel automatically with no setup and are viewable with Alt+A, but the default max concurrency of 32 workers is data-center sized — on his server a real task spawned four agents, pushed memory from 4GB to 16GB, hit a "context size exceeded" server error, crashed the server once, and was still running after an hour.
- Tools like web search, ask and eval can be disabled via config to shrink what's sent to the model; task and hub can only be denied, not removed. Compaction triggered correctly at the configured threshold, though with an artificially small 32k window it reported that compaction freed too little context to continue.
The concrete token accounting — 4.5k system prompt plus 11k of tool descriptions — is the review's central evidence and the number viewers will want to see for themselves.
I have literally just said hello, a single prompt out to the LLM and a response back, and I'm using 15% of my 128,000 tokens of context. That seems wrong to me.
The sharpest framing in the video, backed by the vim-versus-VS-Code and C-versus-Java analogies, and the closest thing to a thesis about when each harness fits.
Oh My Pi feels like it's designed to help your LLM. Pi feels like it's designed to help you. And that's the different philosophies.
Oh My Pi by default will give you an OS level system notification every time it finishes a prompt. That is a ridiculous default.
Max concurrency, the default is 32 concurrently running workers. That seems like a default that is intended to use against enterprise-grade hardware in a data center.
I would rather start with a minimal tool and build it up rather than start with a heavy tool and try to strip down the things that I don't like about it.