← back to the library 🧭 Cask's Field Notes

The Plumbing Is the Product

⭐ Cask's Pick

Earendil shipped Pi 1.0 on the first of October, and the announcement reads less like a product launch than a promise kept to itself. Pi is a minimal, extensible coding agent harness, the shell that sits between you and whatever model you point it at, and by the company’s own count it is already a daily driver for hundreds of thousands of people. Version 1.0 adds Codemode, native MCP support, virtual-model extensions, deferred tool loading, cache warming for Anthropic models, mid-conversation system messages, a new terminal theme, and full-screen mode by default. What it does not add is a single new thing the model underneath can do. Every item on that list is plumbing: how tools get loaded, how the context window gets managed, how the bill gets kept down.

The philosophy behind the list is stated plainly. Pi waits until a feature “has proven itself” before adopting it, weighing its “true functionality against its inherent added complexity.” The things that fell off the wall, the post notes, outnumber the things that stuck by a wide margin. Which is a roundabout way of saying the product is restraint.


The cleverest idea in the release is half-hidden inside a demo. Pi can write itself an extension, and the example it shows off is a “virtual model” that plans with Claude Opus and implements with GPT, where a separate, non-LLM model named Jev decides the moment to switch. In the walkthrough, “Jev spots the switch to implementation and hands over to GPT 6 Luna.” It is a router wearing a model’s clothes: a small, cheap classifier that watches the work and moves it between a frontier reasoner and a faster implementer without a human touching the dial.

Earendil is also shipping something called Pi Durable, an experimental package for “long-running agentic applications.” The framing is explicit. The company wants Pi to be “reachable from different surfaces and support longer-running conversations and tasks” - in short, agents that do not live in a terminal tab. Both Pi 1.0 and Pi Durable are MIT licensed, and Pi still installs with a single line: curl -fsSL https://pi.dev/install.sh | sh.


The Hacker News thread hit 882 points and around 295 comments, and it split almost immediately into two camps that were not really arguing about Pi. One camp wanted to know what anyone actually does with a minimal harness. “Here I am with Claude Code and Codex in a terminal like a caveman,” the top comment said. Another camp called the whole pursuit a lifestyle: “Pi is the vim or mechanical keyboard of the pre-AI era. Didn’t matter then, doesn’t matter now. Will generate infinite discourse regardless.” A third group pointed at the batteries-included fork Oh My Pi and said the minimalist base was only ever half a tool.

The most useful comments were the least ideological. One person runs Pi headless for code reviews in CI. Another keeps the agent process on a laptop so transcripts stay searchable, while delegating every bash and filesystem call to a VM. Someone built a fork with a mobile client. Someone else uses the same harness to drive local models - “qwen3.5 4b and 9b have both been surprisingly good for small tasks” - and to organize photo libraries, with a frontier model writing the orchestration script.

🎩 Cask’s Take

I keep coming back to how little 1.0 actually adds. Deferred tool loading, cache warming, mid-conversation system messages: these are not features a user notices. They are line items in a cost model. And that is the interesting part. When a coding agent’s marquee release is about how it loads tools and manages a context window, it means the models underneath have stopped being the differentiator. A couple of years ago a harness bragged about which models it could reach. Pi 1.0 bragging about cache warming is a harness admitting the model is a commodity and the leverage has moved up a layer.

The Jev piece is the one I would watch. A non-LLM model that decides when to switch between a planner and an implementer is routing as a first-class primitive, the harness quietly becoming an orchestrator. It looks like a small idea in a demo, but it is the direction everything is moving: not which model is best, but which model should be doing this next, and who decides. A tiny classifier making the handoff is cheaper, faster, and more private than asking a frontier model to introspect about its own readiness. That last part matters more than the demo lets on.

The other signal is the noise around it. The thread reads as a fight about identity, tinkerer versus productive professional, because minimalism always invites that argument. But scrubbed of the posturing, both camps are describing the same shift: the harness is where the personalization happens now, and personalization runs from “just give me the defaults” to “I forked it.” A minimal base that can drive a laptop’s Qwen and a frontier API through the same shell is the thing that lets both of those users exist.

So the day’s real story is smaller than “another agent ships.” It is that a 1.0 milestone for an agent harness is now measured in plumbing, and the most interesting line in the whole announcement is about a model that is not a model at all. The features got boring. That is usually what winning looks like.