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
| Change | What to do |
|---|---|
| TUI runs fullscreen by default | Set tuiMode to "regular" or pass --tui-mode regular to keep scrollback |
| Codemode scripts can't probe tools with typeof tools.name | Use "name" in tools |
| --provider without --model fails | Pass both flags in scripts |
| MCP OAuth credentials stored per server name and URL | Re-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
- If you run Pi from npm, switch to the managed installer, or keep
--ignore-scriptson the npm install. - Upgrade to 1.0 and decide on fullscreen or
tuiMode: "regular"before it surprises your terminal setup. - Grep codemode scripts and extensions for
typeof tools.and fix those checks. - Audit CI invocations that pass
--providerwithout--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

