why pi over opencode? earnestly curious, trying to figure out what open solution people are consolidating on. (codex is also pseudo-open but contributions closed and nice)
pi is the neovim of agentic harnesses, its barebones and extremely configurable. if you're the sort of person who likes that sort of things its a forever product, nothing is going to displace it because you have full control.
opencode builds a lot more in, which is better if you dont want to fiddle with config.
nice. i had thought the consensus had moved pretty firmly towards pi, so i was surprised to see Thinking Machines demoing their new model Inkling in OpenCode. wondering if they are previewing an acquisition
Agree, after spending too much time and tokens configuring Pi and adding extensions to match other harnesses, I switched to OpenCode and left the Pi customization circle jerk. I have other things to do and IMHO harness engineers should do the harness engineering, I don’t want to waste tokens and time to build and benchmark extensions. Pi is great, but would be better with a set of official, trustworthy and efficient extensions, and opt-in to enable it.
Most of my harness experience is with Claude Code and Pi, a little bit of OpenCode.
I like how quick and snappy Pi is, it feels like a minimal harness, just enough to manage the agent and get out of the way. Earlier models also seemed to have an easier time working with the tools, e.g. GPT-OSS-20B is about a year old and had no trouble in Pi.
I tried OpenCode but didn't particular like it as a Claude Code user, that is the main reason I switched to Pi. The reason I am sticking is how simple it is to extend it. I moved from Claude Code to Pi and within 2 hours (and the help of Claude Code) I have a setup that matches Claude Code and is even better for my setup.
Things I've added:
1. Built my own AI judge for 'auto' mode that matches my setup.
2. /plan /go for planning and executing.
3. /flow for A-Z setups. That includes planning, executing, testing and shipping.
4. /deep-research a multi fan-out setup for researching a topic.
5. My own sub agents.
6. A TaskCreate/Update/List setup.
7. Monitors.
8. BashOutput / KillShell.
9. Proper notifications with Notify that uses macOS banner and work.
10. Spawn tool that triggers multiple sub agents.
11. A bridge between signal to use Pi remotely.
Yes a lot of these things is something that was already in Claude Code but now I don't have to use Claude Code and I can customize it to fit me exactly.
I imagine because they want to support plugins, and plugins in compiled language are a lot less natural than plugins in languages like TypeScript or Python.
They play better with statically typed languages, not compiled ones in particular. Rust's typing is stricter than Typescript though so that probably helps.
Not really because you're not building a database or GUI app where using native elements & data structures help a lot with memory pressure.
TUI renderer is the one using the memory heavily so your terminal takes the heavy lifing. If you're managing the buffers and out-of-screen context good enough, Typescript can be pretty efficient.
I love opencode but it chews through memory on my 64gb MacBook Pro. Can’t have too many long running sessions because the memory use just slowly creeps up.
It’s not about the terminal at all which as you noted accounts for minimal isage. It’s all the internal chat and history and everything else the agent tracks - all of which are smallish (and largish) strings allocated on the heap.
I don’t have the same issues with rust based tuis.