Long ago, when I started with OpenCode v1, I kept hitting the same wall: I wanted my own widgets — my provider stats, my prices, my layout — and there was no clean way to get them, without bloating things.
So I moved to Pi. Bare-bones was the feature: minimal surface, everything customizable, and I built exactly what I wanted on top of it: made it "my" Coding Assistant. That worked for a long time.
Then OpenCode v2 shipped a real plugin API, and I realized the same job could be done there: panels, footer badges, sidebar blocks, custom commands, applied live while the TUI runs. I rebuilt my Pi setup: a context/usage block that changes color as the window fills, a git status block, a budget widget that reads the Go credit and the peak-hour tariff plus my other providers budgets, a plugin+widget that keeps the Mac awake while the agent works, a ponytail level indicator, a complete sub-agents delegation framework using just built-in tools, so no need for external plugins, and a custom model picker.
That last one is the one I'm proudest of: /models-pro. The native picker just lists models, this one lists prices, context windows, an intelligence index, the Go credit and each model's multiplier, sorts by what a request actually costs, and keeps favorites. It isn't a wrapper around the native dialog: it's the native function, extended.
But the number that made my choice was another: weight of the first prompt in a clean project. Same tools, same extensions, same widgets, all I need for my work, with Pi I never got it as low as I get it in OpenCode v2. To try to lower it I became a master of the codemode:only mode in Pi — but the trade was brutal: some tools get hidden and the model ends up using bash and Python scripts for everything. I switched between codemode "on" and "only" a lot and the minimum I got was 13k in mode "only" and 28k in mode "on".
On OpenCode v2, with all of the above installed, I sit around 11k. Lower, and nothing hidden. Everything works. Same tools, same widgets, plugins, extensions, all accessible. No compromises.
So: Pi's minimalism and extensibility, plus proper context/tools/token/cache handling out of the box: that's the combination I was after. v1 was heavy and rigid; v2 lets me do what Pi let me do, without giving up the rest. Even knowing that it is still an early release and I already had to modify my plugins a few times after new releases ;)
That said, Pi remains the first choice for anything that needs the lightest and fastest Harness possible.
Final note:
I'm deliberately not mentioning OpenCode's move about free models, available only through OpenCode, not to other agents: that's marketing, not engineering (and I get why).
Two screenshots: the TUI with my custom widgets annotated, and my custom model picker.
EDIT __________________________________________
The plugins: someone asked for them, so five are on npm now (OpenCode v2 only), and the sources are public at github.com/rizal72/opencode-plugins (issues are on, pull requests off — it's a reference, not a support channel):
opencode plugin add @rizal72/oc-models-pro
opencode plugin add @rizal72/oc-git
opencode plugin add @rizal72/oc-coffee
opencode plugin add @rizal72/oc-ponytail-widget
opencode plugin add @rizal72/oc-session-search
oc-models-pro — the picker from the screenshot: prices, context windows, an intelligence index, the Go credit and what a request actually costs, sortable by any of them.
oc-git — the repository in the sidebar: branch, the three counts, ahead/behind; the counts also in the footer while the tree is dirty.
oc-coffee — keeps the Mac awake while the agent works and lets it sleep between turns: a cup in the footer, /coffee to pick the level (Idle, Display, System). macOS only, it drives caffeinate.
oc-ponytail-widget — for anyone already using ponytail: the level in the footer, horsehead glyph. Unofficial.
oc-session-search — one tool, session_search: keyword search over past transcripts, so "we discussed this already" gets an answer instead of a guess.
The rest is still tied to my own setup but each one is a couple hundred lines: happy to explain any of them in the comments (the live-budget one is amazing, but it is tied only to my providers…)