Skip navigation

PublicSeries

Is Pi right for you? Pi compared with Oh-my-pi and Claude Code

Pi is a minimal coding agent: four default tools, and no subagents, plan mode or per-tool-call approval in the core. Criteria for deciding whether to use Pi, and how it differs from Oh-my-pi (OMP) and Claude Code.

12 min read · v1.0.0 · Updated 07/10/2026

VI · Pi có hợp với bạn không? Pi so với Oh-my-pi và Claude Code · Read in Vietnamese

Quick summary: Pi is an open source coding agent for the terminal that keeps its core small and lets you add features through extensions. Pi fits you if you want an agent you can understand end to end and you are willing to assemble what you need. Pi does not fit if you want subagents, plan mode and a built-in permission system out of the box; Claude Code fits better then, or Oh-my-pi (OMP) if you turn on its tool approval mode. MCP (Model Context Protocol) and codemode have shipped since 0.99.0, just before 1.0, while Pi Durable is still experimental.

Pi 1.0.0 shipped on October 1, 2026, and reached 1.3.0 on October 15, 2026. If you already use Claude Code or OMP, the practical question is not what Pi can do, but whether it is worth learning one more tool.

A wrong choice costs you in one of two ways. Pick Pi when you need everything built in, and you have to build, or find packages for, features other tools already have. Pick a feature-heavy tool when you need something lean, and you carry a large surface you do not fully control.

Written for Pi 1.3.0, based on the official README, docs and CHANGELOG.

I will split the decision into four questions: who should use Pi, why Pi deliberately leaves some features out, how Pi differs from OMP and Claude Code, and which parts of Pi are still experimental.

Who Pi fits, and who it doesn't

Pi fits people who want to shape their own tool. It does not fit people who want the tool to come shaped for them. The first line of Pi's README says exactly that: "Adapt Pi to your workflows, not the other way around."

If youPiWhy
Want to know what the agent is doingFitsBy default Pi enables only four tools, read, bash, edit and write (CLI docs). Others such as grep, find, ls or codemode are yours to turn on, for example pi --tools +codemode.
Want the workflow your wayFitsCustomize through TypeScript extensions, skills, prompt templates and themes, bundled as Pi packages and shared through npm or git.
Use several model providersFits/login accepts existing subscriptions (Claude Pro or Max, ChatGPT, GitHub Copilot) or an API (Application Programming Interface) key (pi-ai README), and Pi runs local models through llama.cpp (Models).
Want to call the agent from a script, CI (continuous integration) or another appFitsPrint mode, JSON mode, RPC (Remote Procedure Call) and a TypeScript SDK (Software Development Kit) all run on the same agent and session machinery.
Need the agent to ask before it runs a commandDoes not fitPi has no built-in permission system, runs with the permissions of the user who started it, and does not ask before each tool call (Security). The permission-gate and protected-paths example extensions exist, but they do not run by default and do not replace isolating the environment.
Want subagents or plan mode ready to useDoes not fitPi deliberately keeps both out of the core; there are only the plan-mode and subagent example extensions in the examples folder.
Don't want to write or install anythingDoes not fitAnything beyond the core means installing a package, enabling an existing extension or writing your own.
Are new to vibe coding and not used to running agents in a containerDoes not fitIsolating the environment is your job, not the tool's.

Why Pi deliberately leaves out subagents and plan mode

Because Pi wants to be a small harness that you extend yourself. A harness is all the code around the model: the system prompt, the tool list, how sessions are kept, how commands run. The same model inside two different harnesses works in two different ways.

Pi's README states the choice plainly: "Pi ships with powerful defaults but skips features like sub-agents and plan mode. Ask Pi to build what you want, or install a package that does it your way." In other words, Pi keeps the core small, and any feature beyond the core is yours to build or to install from someone else's package.

Take plan mode as an example. In Claude Code, plan mode is built in: the agent reads code, drafts a plan and does not edit your source files until you approve, unless the session has bypass permissions available. In Pi, you write an extension that turns off the file-writing tools and limits bash to read-only commands until you accept the plan, ask Pi itself to write that extension, or start from the plan-mode example extension in the repo. Part 4 of this series will build such an extension step by step.

A small core also lets you follow how a session runs. According to How Pi works, each turn goes like this:

  1. Pi builds a request from the system prompt, the active session branch, the tool list and the model settings.
  2. The model returns text and tool calls.
  3. Pi runs each tool call and records the result in the session.
  4. If the tool results need another model request, Pi starts a new turn; otherwise it stops.
One Pi turn: Pi builds the request from the system prompt, active session branch, tool list and model settings; the model returns text and tool calls; Pi runs the tool calls and records the results in the session; if the results need the model again, Pi builds the request for a new turn, otherwise the run ends
The loop repeats until the tool results no longer need the model.

Sessions are stored as tree-shaped JSONL (JSON Lines, one record per line) files, so you can branch from an earlier point without losing history. When context fills up, compaction inserts a summary in place of older messages for later requests, while the originals stay in the tree. Part 3 of the series will cover this in depth.

The price of a small core is that responsibility moves to you. Less running in the background makes the agent easier to follow. In exchange, what other tools handle for you, such as asking for permission or splitting work across subagents, you either handle yourself or accept that you don't have.

How Pi, OMP and Claude Code differ

All three are coding agents that run in a terminal, but each draws the line in a different place. I compare them on the criteria that affect the choice: minimalism, customization, models, permissions and cost. The table is based on each tool's README and official documentation as read on October 18, 2026. It is not a benchmark.

Horizontal axis from a small core you build on to batteries included: Pi at the small-core end, OMP in the middle, Claude Code at the batteries-included end; OMP and Claude Code sit under a bracket for built-in approval modes, with a note that OMP defaults tools.approvalMode to yolo
Pi, OMP and Claude Code sit on one axis from a small core you build on to batteries included; only OMP and Claude Code have built-in approval modes.
CriterionPiOh-my-pi (OMP)Claude Code
ApproachSmall core you assembleFork of Pi with many features built inComplete product from Anthropic
Built-in toolsread, bash, edit, write; MCP built in (add servers), codemode on requestMany built-in tools: LSP (Language Server Protocol), debugger, browser, searchFull tool set for reading, editing, running commands, searching
Subagents and plan modeNot in the core; example extensions, or install a packageSubagents, plus a plan role for plan modeBoth built in
Permission promptsNo permission system; isolate all of Pi in a container, virtual machine or sandboxTool approval mode (tools.approvalMode); the default yolo auto-approves writes and commands, write prompts before commands, always-ask prompts before file writes too; tool or user policies can still overridePermission system driven by modes and rules: Manual mode asks before file edits and commands (except a built-in set of read-only commands), auto mode approves with background safety checks; the starting mode depends on version, how you run it and configuration
ModelsMany providers, subscriptions, API keys, local modelsMany providers, model routing by roleAnthropic's Claude models
CustomizationTypeScript extensions, skills, prompt templates, themes, packagesExtensions, hooks, skills and role configurationSkills, hooks, subagents, plugins, MCP
CostMIT licensed, free; you pay for the modelMIT licensed, free; you pay for the modelNeeds a Claude plan, an Anthropic Console account or a cloud platform (Amazon Bedrock, Google Cloud Agent Platform, Microsoft Foundry)

Sources: Pi README and docs, the OMP README and its approval mode docs, the Claude Code docs, its subagents page, its permissions and permission modes pages, and its third-party providers page.

The relationship between Pi and OMP is worth spelling out, because the names invite confusion. The OMP README describes OMP as "a fork of pi-mono by Mario Zechner, extended with a batteries-included coding workflow", built by Stencil Labs. Pi was written by Mario Zechner and is now developed under the earendil-works organization. OMP is not a set of extensions installed on Pi; it is a separate harness with its own releases. If you like how Pi thinks but want everything on day one, OMP is the middle option. The Inside OMP series on this site, starting with OMP model routing, takes OMP apart the same way.

Claude Code differs at the root: an Anthropic product tied to Claude models, with subagents, plan mode and a permission system built in. You can change its behavior through skills, hooks, subagents and plugins, while the core stays Anthropic's call. If you only use Claude models and want a permission layer built in, Claude Code is less work than Pi.

One note on cost: Pi is free, the model is not. When you sign in to Pi with an Anthropic subscription, the warnings.anthropicExtraUsage setting (on by default) warns you when usage may count toward paid extra usage (Settings). Routing models to cut cost will be the topic of part 6.

What Pi includes, and what is still experimental

The part you use every day is the coding agent in the terminal. The README does not label it experimental. That label sits on Pi Durable, the package for building long-running agent products, and on a few individual features the docs mark explicitly.

According to the CHANGELOG, the biggest changes around 1.0:

VersionDateMain changes
0.99.0September 29, 2026MCP as a built-in extension (pi mcp add, stdio, streamable HTTP (Hypertext Transfer Protocol), OAuth sign-in) (MCP). Codemode: the model writes JavaScript that calls other tools in a QuickJS sandbox, and only the output returns to context (Codemode). Virtual models arrive as experimental.
1.0.0October 1, 2026Fullscreen terminal UI by default (set tuiMode to "regular" for normal scrollback), fewer codemode prompt tokens, and codemode scripts can call image generation models.
1.1.0October 7, 2026--tools takes +name and -name entries to add or remove tools from the default set.
1.2.0October 12, 2026Removed the unreleased experimental server layer; pi-server, pi-protocol and pi-client are no longer released.
1.3.0October 15, 2026Resuming a session keeps the tools you activated; switching models mid-session drops the old model's thinking; /share gained sessionShareDestination (release notes).

Earendil has a post, You said no MCP, on the decision to bring MCP into Pi. Part 5 of the series will cover that and how codemode keeps context lean when calling many MCP tools.

Still experimental: Pi Durable (@earendil-works/pi-durable), a runtime for conversations, tasks and documents that survive a crash. Its README says: "Experimental. The API changes without notice between releases." Most of what you run in the terminal carries no such label, apart from a few features the docs mark explicitly, such as virtual models. If you plan to build a product on Pi Durable, expect the API to change between releases. Part 8 will be dedicated to Pi Durable.

Frequently asked questions

These three are worth knowing before you install Pi for the first time.

Is it safe to run Pi?

Pi is as safe as the environment you run it in. The Security docs advise treating every command and piece of code the model generates as untrusted. They also say that running all of Pi inside a container, virtual machine or sandbox is usually the strongest practical option. Project trust only decides whether Pi loads a folder's settings and extensions; it does not block tool calls. The Containerization docs walk through the isolation methods: plain Docker, Docker Sandboxes, OpenShell and the Gondolin extension.

Do I need to know TypeScript to use Pi?

No. To use Pi you only need a terminal. TypeScript matters only when you write an extension, and even then the README suggests asking Pi to write it for you. Read the code before you turn it on, because an extension runs with the same permissions as Pi.

Does Pi run on Windows?

Yes. Pi has installers for macOS, Linux and Windows and needs Node.js 22.19 or newer; the installers can install Node.js if it is missing (README).

If you remember one thing from this post: choose Pi when you want to decide your harness yourself, and choose OMP or Claude Code when you want the harness decided for you. If you choose Pi, what to read next depends on what you need:

  • Want to try Pi now: part 2, from installing and signing in to a real task in your repo, with how to run Pi safely.
  • Long sessions and an agent that starts forgetting: part 3 (coming soon), on sessions and compaction.

These parts are being written and will come out in turn:

  • Want plan mode or permission prompts: part 4, built with an extension.
  • Using many MCP tools: part 5, on codemode and MCP.
  • Cutting cost or splitting models by task: part 6, on routing, virtual models and caching.
  • Calling Pi from a script, CI or another app: part 7, on print mode, JSON mode, RPC and the SDK.
  • Building a long-running agent product: part 8, on Pi Durable.

If you use OMP and want Pi and OMP side by side on one machine, running several Pi and OMP profiles on one machine shows how to keep their configuration from colliding. The first two parts of Inside Pi are public; from part 3 on they are for Subscribers.

Use this piece in your agent

Get an API key

Copy the text below and paste it into Claude Code, Codex or whichever agent you use. The agent reads the piece and checks it against the repo you have open.

Paste into your agent
Read "Is Pi right for you? Pi compared with Oh-my-pi and Claude Code" on modernEngineer and apply it to this repo.
1. Call the content_get tool of the modernengineer MCP server with locale "en", slug "pi-coding-agent-is-it-for-you". If MCP is not connected or access is refused, read the page https://modernengineer.dev/en/library/pi-coding-agent-is-it-for-you instead.
2. Summarize the main steps of the piece and point out which apply to this repo.
3. Propose concrete changes and ask me before editing any file.
Connect MCP in Claude Code (once)
terminal
claude mcp add --transport http modernengineer \
  https://api.modernengineer.dev/mcp \
  --header "Authorization: Bearer <API key>"
How to connect Codex, Cursor and other clients

This piece is open to everyone: without MCP, the agent can still read it straight from the link.

Version
v1.0.0
Updated
07/10/2026
Licence
All rights reserved
Slug
pi-coding-agent-is-it-for-you