Wooden hand plane with curled wood shavings on a plain light background

Pi 1.0 keeps the coding agent small and finally takes MCP

From Mexico, the coding-agent news that usually reaches me is another panel, another mode, another place to click. Pi 1.0, which Earendil shipped on Oct 1, is a different kind of note. They say they are “proudly shipping Pi 1.0: a hardened, minimal, extensible agent” and the same sentence carries on, on the next line, into a harness you can make your own. Most of these tools get louder. This one argues for staying small, and then it adds the thing it used to refuse.

What they actually shipped

The Oct 1 post is a letter dated Thu, 01 Oct 2026. The rule on that page is “We wait until something has proven itself, and only then do we” consider adopting it, “weighing its true functionality against its inherent” added complexity. They point that rule at Codemode and MCP. The list that survived, in their words:

  • Codemode, “native support for MCP, and non-LLM models like Jev and image models”
  • “Extension support for virtual models”
  • “Deferred tool loading”
  • “Cache warming for anthropic models”
  • “Mid-conversation system messages (transcript-aware prompt and tool changes)”
  • A new terminal theme, and “Full-screen mode by default”

Pi 1.0 and the package beside it are “MIT licensed.” Docs are at pi.dev. Code is at github.com/earendil-works/pi. The letter also prints install one-liners. I am not pasting a script that pipes into a shell.

They also write “Hundreds of thousands of people around the” world use Pi every week. That is Earendil’s claim. I have not counted users, and I will not repeat it as if I had.

Cream-paper schematic with loose tool shapes outside a notched wall, one shape crossing the gap, an open tray holding a single shape, and two overlapping rings
A small working set, one tool coming through, the rest left outside. Original schematic for this post, based on the Oct 1 feature list.

They used to say no to MCP

The Oct 1 letter says they talked about this “earlier this week”, and the link goes to a Sep 29 post whose description is “Pi now supports MCP.” On that page they admit the old pi.dev line was that Pi does not support MCP. Then “MCP is now a supported piece of” the product. An extension already existed. They say bringing it in “is now part of the core is a result of us putting our heads together and” rethinking it. What Pi needs, in their words, is “a sandbox to play with in the form of an interpreter.” They also say MCP is still hard to compose, and that many servers are still built for harnesses that dump every tool into the context.

Their answer is Codemode. “Codemode is special in that it runs where the harness runs.” The next line calls it “a mechanism to orchestrate and coordinate tool calls.” In Pi, “Codemode is automatically loaded when MCP is configured”, or you can add it as a default tool. They compare the shape to other harnesses: tools are exposed “to a JavaScript sandbox like other harnesses like Codex do too.”

The trust line is theirs too. Ordinary tool calls often run where the shell runs, in a sandbox they do not fully trust. Codemode runs on the harness side, and “its state is also maintained as part of the session transcript instead of” the file system. It is a scripting layer next to the loop, for chaining tool calls in JavaScript instead of stuffing every definition into the prompt.

Load tools later, and compose a model

The Oct 1 list names “Deferred tool loading” and does not spell out the mechanism. The Sep 29 note says recent work was so Pi could “allow deferred tool loading, mid-conversation system messages and reasoning” level changes, and the old tool loadout did not scale. You have to decide whether a tool is visible to the model or only to the Codemode side. Their line is that tools can be “just be deferred or be a” “Codemode specific thing.” A small harness dies if every new server adds another page of schemas to the front of the conversation. I have not run 1.0, so I cannot tell you whether a sloppy server still floods the prompt.

Virtual models get less prose and a labeled demo. One chapter reads “a virtual model that plans with Claude Opus and implements with GPT, with Jev deciding when to switch”. A later chapter says “Jev spots the switch to implementation and hands over to GPT 6 Luna”. Another says a session command “breaks down cost per model and cache use”. Those are captions on their demo, not a benchmark I reproduced. The Sep 29 post sketches a Jev plus Linear example and says the agent combines them “without wasting any context at all.” That is one example they wrote, not a general savings number. “Cache warming for anthropic models” and full-screen mode “by default” are named and not explained.

Long runs were split out on purpose

The same day, Earendil published Pi Durable. The page description calls it “a new experimental package for long-running, durable, and malleable agents that can run anywhere.” The coding agent, they write, “is built to run on your (remote) machine, inside a terminal,” and the next line says it is “driven by one person.” “That is what Pi 1.0 focuses on and excels at”, and the following line says that is not changing. “It does not replace the Pi coding agent.” They call Durable a “framework for building any agentic application, coding agents included.” A harness, on that page, is “storage plus the machinery needed to run one or more conversations” with models, plus tools and execution environments.

They size the source themselves: “about 15,000 lines,” without tests, “which comes out to” “about 150,000 tokens with GPT and about 250,000 with Claude.” And they warn “Pi Durable is experimental, and the API might” still change. A terminal agent driven by one person, and a library for agents that should survive a crash, are different products. Shipping the second beside 1.0, labeled experimental, is the part of this release I trust.

What I would do with it

If you already live in Pi, read the Sep 29 note before you turn Codemode on: which tools are deferred, which ones only the script side can see, and where Codemode sits on the trust line. If you do not use Pi, I would not switch agents because a version hit 1.0. I would try it on one repo, point it at a single MCP server, and see whether the prompt stays small. The weekly-user line, the demo model names, and the token counts stay Earendil’s measurements, not mine. The release is real, the date is on the letter, and the choice is the one I wanted to write down: wait, keep the coding agent small, and put the long-running work in a package you can ignore until it proves itself.

Featured image: “Plane with wood shavings” by CEphoto, Uwe Aranas, Wikimedia Commons, CC BY-SA 3.0. This crop is a derivative: the original upload returned HTTP 429, so the image is a 1400×900 cover crop of the file’s 1920px thumbnail, with a mild warm grade and light grain.