mrkeyoor.com_
Tue 10 Nov 00:35 UTC
Dev Toolsevaluationupdated 11 Oct 2026

pi review

Pi is a terminal coding assistant that lets an AI model work on files and run commands, with TypeScript libraries for building it into other applications. It lets developers customize tools, instructions, and model providers around their own coding workflow.

+1,246stars / 7d
Verdict

Our Pi run installed 323 packages in 32 seconds and built in 19 seconds, but the full test command failed after 459 seconds and npm audit reported 2 high-severity vulnerabilities. Use it when owning the coding workflow is worth maintaining reviewed extensions and an external sandbox. I'd hold an unattended team rollout until the failed test-file group and the audit findings are understood.

We ran it

Lab card: what happened when we ran piScreenshot of pi (github.com/earendil-works/pi)
Install✓ · 32s323 packages · 485 MB
Build✓ · 19s
Tests✗ · 459s91 passed · 0 failed of 91 (vitest)
Known vulns20 critical · 2 high · 0 moderate · 0 low (npm audit)
Repo1986 files~412,591 lines of source · 24.3 MB · 13 CI workflows

Answers from our run

Does pi build from source?

Dependencies installed in 32 seconds (323 packages), and the build succeeded in 19 seconds. We cloned commit 42a3497 into a clean Debian container with 3 CPUs and no project-specific setup.

Do pi's tests pass?

No. The project's own test command finished in 459 seconds and reported 91 passed, 0 failed (vitest).

Does pi have known vulnerabilities in its dependencies?

npm audit flagged 2 known advisories in the dependency tree at the time of our run.

Who should not use pi?

Teams requiring built-in restrictions on filesystem, process, network, or credential access: the README says Pi inherits the launching process's permissions.

What are the alternatives to pi?

OpenCode, Aider. Our Pi run installed 323 packages in 32 seconds and built in 19 seconds, but the full test command failed after 459 seconds and npm audit reported 2 high-severity vulnerabilities.

Setup3/532-second install, but credentials and isolation need separate setup
Docs5/5Explicit installer, extension, isolation, and MCP transport boundaries
Community4/5October 11 push and active reports, with restricted contributor triage
Maturity3/5Build passed, full suite failed, and audit found 2 high advisories

Discussed on

  1. hnPi coding agent: config folder is out of place on Linux56 points
  2. hnPi v1.0.012 points

Who it’s for

Developers who want to encode a particular coding and review workflow through TypeScript extensions.
Teams willing to maintain a shared extension set and provide their own sandbox around generated commands.
Application builders who need the same agent through a terminal, JSON output, RPC, or the TypeScript SDK.

Who it’s NOT for

Teams requiring built-in restrictions on filesystem, process, network, or credential access: the README says Pi inherits the launching process's permissions.
Developers expecting plan mode and subagents out of the box: the README deliberately leaves them to extensions or packages.
Operators whose existing MCP servers only support legacy SSE: Pi's MCP documentation explicitly rejects that transport.
Teams depending on immediate public issue triage: new contributors' submissions are auto-closed, and the contribution guide says weekend reports aren't guaranteed review.

Setup reality

Our sandbox installed commit 42a3497 in 32 seconds, adding 323 npm packages and occupying 485 MB. The build passed in 19 seconds. The test command failed after 459 seconds despite a summary of 91 passing Vitest tests and no failed tests in that group. The tail also shows 5 failed test files with no tests collected. Npm audit reported 2 high-severity vulnerabilities.

Useful hosted-model work needs a provider subscription or API key connected through /login. Source builds normally refresh model data over the network, while build:offline uses existing data. The managed installer pins transitive dependencies, but the README says the direct npm route doesn't.

Pi requires Node.js 22.19 or newer and inherits the permissions of its launching process. Whole-process isolation also contains extensions. Gondolin routes built-in tools into a micro-VM, while other extension tools remain on the host unless they delegate. Its VM commands inherit host environment variables, so that setup alone doesn't hide environment-based credentials.

Pi leaves command permissions to your environment

Start Pi inside a repository and its commands inherit the rights of the process that launched it. The README's permission warning makes the adoption decision unusually clear: you supply the boundary around the agent. That's a reasonable bargain for a developer who wants control over tools and model providers. It's a poor default for a team expecting every consequential command to require approval.

The word "minimal" describes Pi's product choices. Our checkout contained 1,986 files and roughly 412,591 lines of source across a TypeScript monorepo. The CLI sits alongside libraries for model access, agent execution, and terminal interfaces. You can use the terminal, automate through print or JSON output, control a process over RPC, or embed the SDK. That breadth helps explain why customizing Pi can become application development.

What happened when we ran it

Our run installed 323 npm packages in 32 seconds and built Pi in 19 seconds. We cloned commit 42a3497 on October 10, 2026, into a fresh, unprivileged Debian container using lab-node:22, without secrets. The checkout occupied 24.3 MB. Installation and compilation succeeded, so the repository cleared those basic setup steps on the environment we actually used.

The test command exited 1 after 459 seconds. The supplied summary reports 91 passed and 0 failed out of 91 Vitest tests, but the log tail also shows a group with 5 failed test files and no tests collected. Separate passing groups report 55, 43, 133, 44, and 15 tests. Those fragments don't establish a single complete-suite total. They show passing tests alongside a failed overall command, without revealing the underlying exceptions.

Npm audit reported 2 known vulnerabilities, both high severity, with none classified as critical, moderate, or low. The supplied results don't name the packages or describe exposure. Our scan also found 13 CI workflow files, workspace configuration, no Dockerfile, and no tests directory. The absence of that directory doesn't mean there are no tests: the command output plainly records them.

The installer pins more than the npm route

The 485 MB installed footprint is modest enough to budget explicitly for a development container, but it excludes any model service you choose to run. Pi requires Node.js 22.19 or newer. Its managed installer pins transitive dependencies, while the README says a direct npm installation doesn't. The documented npm command uses --ignore-scripts. For a shared rollout, I'd choose one installation route and pin it across the team.

Run /login to connect a supported subscription or API key before asking a hosted model to work. Provider access is separate from getting the CLI running. The source build normally refreshes model data, while build:offline uses existing data. That distinction matters behind restricted networks. The sandbox result proves the supplied build passed, without establishing that every offline, provider-authentication, or platform path works.

Extensions give you the workflow Pi omits

A successful 19-second build gets you a harness whose README deliberately omits built-in plan mode and subagents. TypeScript extensions can register tools and commands, respond to events, and change session context. Skills and prompt templates cover instruction changes. This suits a team with a particular review loop it wants to encode. If you're only trying to avoid configuring another coding assistant, extension work is an additional job.

The extension documentation says extensions run inside Pi with its operating-system permissions and can inspect credentials and history. A confirmation hook can block a tool call, but loading that hook is itself a trust decision. Treat a shared Pi package as executable code. I'd keep a reviewed extension set rather than ask every developer to assemble a different agent from npm.

Tool isolation can leave extension tools on the host

Our sandbox had 3 CPUs and 8 GB of RAM, with no secrets and no elevated privileges. Those conditions explain where the setup findings apply. They don't establish that Pi protects a normal workstation. The containerization guide distinguishes isolating the whole process from routing selected tools elsewhere. That distinction matters because an extension can perform work outside the routed tools.

Plain Docker puts Pi and its extensions inside the container, although writable mounts still expose host files. Gondolin keeps Pi on the host and sends built-in tools into a micro-VM. Other extension tools stay on the host unless they delegate too, and VM commands inherit host environment variables. OpenShell supplies policy-controlled isolation. Choose based on which files and credentials commands can actually reach, then inspect the mounts and environment.

A current push doesn't make the failed suite green

Our scan found 13 files defining CI workflows, but the complete test command still failed. Separately, GitHub showed a last push on October 11, 2026, 114,229 stars, and 325 open issues and PRs combined. Release v1.1.0 shipped October 7. Recent reports include an Anthropic image-error rejection, with pull request 10795 proposing a fix. That's active maintenance with unfinished work.

Pi auto-closes new contributors' issues and PRs, then reviews submissions for reopening. A closed report therefore doesn't necessarily mean a fix shipped. Its MCP client supports stdio and streamable HTTP, but explicitly rejects legacy SSE. If existing tools only offer SSE, migration is part of adoption. The permission boundary and that transport limitation are concrete reasons to choose another agent, even when you like Pi's extension API.

OpenCode includes planning, while Aider centers Git

The 459-second failed test step makes me cautious about adopting Pi as an unattended default. OpenCode includes a read-only plan agent and a general subagent. Aider emphasizes a repository map and automatic Git commits. Choose Pi when you specifically want to own the agent's behavior. Before it works on a valuable checkout, decide which host files its commands may change and which credentials its extensions can read.

Alternatives

ProjectWhat it isPick it when
OpenCode gh↗A coding agent with built-in build and read-only plan agents, plus a general subagent.pick this instead when planning and delegation should be available without writing Pi extensions.
Aider gh↗A terminal coding assistant built around a repository map and automatic Git commits.pick this instead when you want a prescribed Git-centered editing workflow rather than an extensible agent harness.

What people are saying

  1. [hackernews] PSPi 6 – Raspberry Pi in a PSP
  2. [hackernews] Show HN: Pi pod – Run your pi coding agent in sandboxes on your own server
  3. [github-trending] minghinmatthewlam/pi-gui
  4. [hackernews] Pi Durable
  5. [hackernews] Pi 1.0
  6. [hackernews] Figma restricts MCP access to whitelisted clients, excluding Pi

Sources

  1. Pi README and setup at measured commit 42a3497
  2. Pi GitHub repository and activity
  3. Pi extension API and execution permissions
  4. Pi isolation methods and credential boundaries
  5. Pi MCP client configuration and transports
  6. Pi contributor submission and triage policy
  7. Pi v1.1.0 release notes
  8. Issue 10794: Anthropic rejects error tool results with images

More dev tools reviews

OpenSandbox · You-Dont-Know-JS · evilginx2 · google-colab-cli · mujoco · SteamTools · the whole board →

Related reading