Skip to content
chornous.dev

Type two or more letters. Esc closes.

Index of sheets
Theme

Sheet 03 · Writing

All notes

Pi 1.0: the minimal coding agent goes stable, two days after it added MCP

Earendil tagged Pi 1.0.0 on October 1, 2026. The terminal coding agent runs fullscreen by default, cuts codemode prompt tokens by about 40%, hardens MCP OAuth, and ships an experimental durable harness, pi-durable.

Pl. 21 · network drawing generated from the slug “pi-1-0-coding-agent-mcp-codemode”

Earendil tagged Pi 1.0.0 on October 1, 2026. Pi is the terminal coding agent whose README opens with "Pi is a minimal, extensible agent harness that you can make your own." The 1.0 announcement topped Hacker News on October 2. The release also ships the first version of @earendil-works/pi-durable, an experimental harness for agents that have to survive a crash.

The version number caps a busy week. Version 0.99.0 landed on September 29 with MCP support, codemode and tool search as built-in extensions. Two patch releases followed before the 1.0 tag.

Install

The README recommends the managed installer, which pins dependencies and updates with pi update:

curl -fsSL https://pi.dev/install.sh | sh

The npm route still works and doesn't pin transitive dependencies:

npm install -g --ignore-scripts @earendil-works/pi-coding-agent

Pi needs Node.js 22.19 or newer. Start it inside a project directory with pi, then run /login to connect a provider.

MCP arrived in 0.99

Pi's README still says the agent skips sub-agents and plan mode and expects you to add what you want through extensions. MCP went the other way. Since 0.99.0, Pi connects to MCP servers over stdio or streamable HTTP, with OAuth. Pi has no support for the legacy SSE transport. You can add a server from the shell:

pi mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem .
pi mcp add docs --url https://example.com/mcp --bearer-token-env-var DOCS_TOKEN
pi mcp list

User servers go in ~/.pi/agent/mcp.json and project servers in .pi/mcp.json. Pi ignores the project file until you grant the project trust. The format matches other MCP clients, so you can copy an mcpServers block from another tool:

{
  "mcpServers": {
    "internal-tools": { "enabled": false }
  }
}

That snippet turns off a user-level server for one project. A project entry without command, url or type overrides enabled and exposure settings and keeps the user entry's credentials.

Codemode is the other half. The codemode tool runs model-written JavaScript in a QuickJS sandbox, and that script calls Pi's tools, MCP tools included, in parallel. You opt in through the defaultTools setting, for example "defaultTools": ["+codemode"].

What 1.0 changed

fewer prompt tokens with codemode
~40%
tokens in a GPT-5.6 request with default tools
5,300 → 3,300
minimum Node.js version
22.19
Changes in 1.0.0 that can affect an existing setup
ChangeWhat to do
TUI runs fullscreen by defaultSet tuiMode to "regular" or pass --tui-mode regular to keep scrollback
Codemode scripts can't probe tools with typeof tools.nameUse "name" in tools
--provider without --model failsPass both flags in scripts
MCP OAuth credentials stored per server name and URLRe-check sign-in for servers that share a URL

The --provider change fixes a quiet bug. Before 1.0, Pi ignored --provider when you left out --model and ran the default model from another provider. A CI job that relied on that flag may have used a different model than you thought.

The MCP OAuth work closes a security gap. Pi now checks the RFC 9207 iss parameter and rejects an authorization response that names a different authorization server before it exchanges the code. A new oauth.authServerMetadataUrl setting covers servers that advertise the wrong authorization server or none.

Pi Durable

@earendil-works/pi-durable commits conversations, model turns, tool calls and your own state to storage before it shows anything. If the process dies mid-turn, reopening the storage resumes the work. The README marks it experimental, and its API changes without notice between releases.

npm install @earendil-works/pi-durable @earendil-works/pi-ai @earendil-works/chord

Treat it as something to read and prototype with this month. Don't put a customer workflow on an API with no stability promise.

This week

  1. If you run Pi from npm, switch to the managed installer, or keep --ignore-scripts on the npm install.
  2. Upgrade to 1.0 and decide on fullscreen or tuiMode: "regular" before it surprises your terminal setup.
  3. Grep codemode scripts and extensions for typeof tools. and fix those checks.
  4. Audit CI invocations that pass --provider without --model, since they now fail.

If you already use Claude Code or Codex with MCP servers, Pi takes the same mcpServers format, so a one-day trial costs you a copy and paste.

Volodymyr Chornous