A coding agent for people who want to shape the agent
Pi starts as a capable terminal coding assistant. Install one npm package, authenticate with a subscription or API key, and the selected model receives four tools: read, write, edit, and bash. The interface adds file search, image pasting, shell commands, model switching, session resume, branching, context compaction, cost display, and message steering while a task is running. That is enough to use Pi without writing a line of extension code.
The bigger product is the toolkit underneath. The monorepo includes a multi-provider model API, agent runtime, coding-agent CLI, terminal UI library, and telemetry contracts. The coding agent also runs in print, JSON, RPC, and SDK modes. Teams can embed a session in a TypeScript program or control the CLI over line-delimited JSON from another language. Pi is therefore both a usable tool and a box of agent parts.
Its MIT license and provider neutrality are compelling. Built-in authentication covers Claude, ChatGPT Codex, and GitHub Copilot subscriptions, while the documented API-key list spans major labs, gateways, cloud platforms, and regional services. A llama.cpp router path supports local models. Switching providers does not require abandoning the same terminal workflow or session machinery.
Minimal does not mean inflexible
Pi's default feature set is deliberately smaller than many competitors. Reusable Markdown prompts become slash commands. Agent Skills load specialized instructions only when needed and can be shared with Claude Code or Codex skill directories. TypeScript extensions can register tools, commands, keybindings, event handlers, providers, permission gates, user-interface components, and custom compaction. Pi packages bundle extensions, skills, prompts, and themes through npm or Git.
That design is Pi's strongest advantage. A team can add its deploy command, issue tracker, review workflow, or internal model gateway without maintaining a fork. Sessions are stored as JSONL trees, so users can jump to an earlier point, branch in place, fork into another file, export work, or resume later. Automatic compaction is lossy, but the full session history stays on disk for inspection.
The project also pays attention to supply-chain details. Direct dependencies are pinned, the CLI ships a shrinkwrap for transitive packages, normal installation disables lifecycle scripts, and release checks exercise isolated installs. Project trust prevents local settings and executable extensions from loading silently before approval. Those are useful protections around a system designed to execute code.
The missing safety layer is intentional
Project trust is not a command sandbox. Once running, Pi's built-in tools have the permissions of the user account, and extensions execute as ordinary TypeScript with the same access. There are no default permission popups before a shell command, file edit, network request, or credential access. The security guide is unusually direct about this boundary and recommends containers, virtual machines, micro-VMs, or policy-controlled sandboxes for untrusted and unattended work.
That honesty is preferable to a weak safety switch, but it shifts meaningful responsibility to the operator. Use a clean Git worktree, limit mounted directories, pass only required credentials, restrict network access where practical, and review changes before moving them back into a trusted environment. Third-party packages deserve code review because their extensions have full system access and their skills can tell a model to run executables.
The same philosophy explains other omissions. Pi has no built-in MCP client, sub-agent system, plan mode, background bash manager, or task list. Extensions can add MCP or sub-agents, files can hold plans and tasks, and tmux can manage long-running commands. This is liberating if you dislike somebody else's workflow assumptions. It is frustrating if you expected these common features to be installed, supported, and secured by the core team.
Setup is quick, customization has a real cost
The supported npm command includes --ignore-scripts, after which /login can connect an eligible subscription or store an API key. Four useful tools are immediately available, and AGENTS.md or CLAUDE.md can provide repository instructions. The global and project settings split is clear, while project trust defaults to asking in interactive mode.
Going beyond that baseline means learning several concepts: extensions for code, skills for on-demand procedures, prompts for reusable requests, themes for appearance, and packages for distribution. The documentation is excellent, but choice itself creates work. A third-party package may solve a missing feature, yet it also expands the trusted code base. Pin versions and treat package updates like dependency changes.
Platform behavior deserves a trial. An open Windows discussion documents unsettled choices among Git Bash, PowerShell, and WSL, along with path and keybinding problems. A separate report says subscription login can still fail in WSL on version 0.84.1. Another current issue reports startup crashes for some Bun-based installations, with Node version changes suggested as a workaround. Linux and macOS are not trouble-free either: a report tracks high CPU use in a large Mac session.
Fast development, with fast-moving edges
Pi was pushed on August 11, 2026, the same day issues and pull requests were actively opened, discussed, fixed, and closed. Release 0.84.1 arrived on August 7, one day after 0.84.0. The previous month included many releases and patches. The repository showed 111 open issues and pull requests, a substantial but actively worked queue.
That pace delivers provider updates and interface improvements quickly, but integrators should pin versions. Version 0.84.1 still has an open JSON and RPC regression where usage data is missing during streaming updates, and recent release notes include fixes for Bun startup, extension recursion, and session reset behavior. Extension and RPC authors should expect movement even when the interactive experience feels polished.
Pi is easy to recommend to advanced users who want model choice and deep customization. It is harder to recommend as an unmanaged company default. Establish isolation, package review, version pinning, and upgrade tests first. With those boundaries in place, Pi offers one of the most adaptable open coding-agent foundations available.