Pi: the coding agent that fits in your head
I run a few coding agents in rotation — Claude Code most days, OpenCode when I spill over. So when one trends for being smaller instead of doing more, it gets my attention, because everything else in this space grows by accretion. Pi is that one. It's Mario Zechner's project — yes, the libGDX guy — and Armin Ronacher has been its loudest advocate, to the point where he and Mario now work together at Earendil. Somewhere north of 70,000 GitHub stars for a tool whose entire pitch is "less." That's worth a look.
Four tools and a prompt you could read aloud
Pi gives the model four tools: read, write, edit, bash. That's the set. Mario's claim, from his own writeup, is that the system prompt and tool definitions together come in under 1,000 tokens — Armin reckons it's the shortest system prompt of any agent he's seen. The reasoning is almost cheeky: frontier models have already been trained to death on what a coding agent is and does, so spending seven to ten thousand tokens re-explaining the job to them is wasted breath. Get out of the model's way.
After years of harnesses that steer the model with enormous prompts, this is a genuinely different bet. You're trusting the model more and the scaffolding less.
Skills, loaded only when needed
The obvious objection is "four tools can't be enough." Pi's answer is skills, following the Agent Skills standard. Each skill keeps only a one-line description in context every turn; the full instructions and any tool schemas load lazily, the moment the agent actually invokes it. That's how the sub-1k prompt stays sub-1k while the capability set grows.
The part I like most: instead of hunting for and installing an extension, you ask the agent to write one. It self-extends using the same write and bash tools it already has. Sessions are trees, so you can branch and rewind, and you can mix providers mid-conversation. There's no separate "plugin system" doing this — it's just the four tools pointed at Pi's own codebase.
Running it on this blog's repo
Install is a one-liner, and note the --ignore-scripts — Pi ships that guidance itself, which is a good sign:
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
# then, bring your own key:
export ANTHROPIC_API_KEY=sk-ant-...
pi
# or /login to use a Claude Pro/Max, ChatGPT, or Copilot subscription
It's BYOK across Anthropic, OpenAI, Google, xAI, Groq, Cerebras, OpenRouter, and anything OpenAI-compatible. I pointed it at this Drupal blog's repo and gave it a scoped job — tidy up a preprocess function, add a small test. On something that size it's a pleasure: the tiny prompt means fewer surprises about why it did a thing, because there's barely any hidden instruction shaping the behaviour. It read my custom modules and did the work without ceremony.
The catch: there are no seatbelts, by design
Pi has no permission prompts, no sandbox, no plan mode, no MCP, no sub-agents. Mario calls it YOLO by default and, to his credit, says so loudly — the README's advice is to run it inside a container if you're not comfortable with a tool that has full filesystem, process and network access. Skills execute arbitrary code. This isn't a missing feature; it's the philosophy. But on a machine that has my production credentials sitting in a shell history, "full access, no prompts" is a real decision, not a shrug. So I do what Mario says and run it in a throwaway container, never on the host.
Every other agent asks permission and then does the wrong thing anyway. Pi doesn't ask. That's more honest, and more dangerous, and I respect it for not pretending otherwise.
Who it's actually for
If you want guardrails, an MCP ecosystem, and a big managed harness, Pi is deliberately not your tool and won't apologise for it. But if you've ever wanted to understand what your agent is really doing — or you're tired of a ten-thousand-token system prompt quietly editorialising every response — Pi is the clearest look at the machinery I've had in a while. It fits in your head. These days that's rarer than it should be.