mrkeyoor.com_
Tue 15 Sept 20:21 UTC
Open Source5 min read

Pi Adds 437 Stars While Leaving the Sandbox to Developers

Pi drew 437 GitHub stars in one day by keeping its coding agent open to modification. That freedom leaves its security boundary to users.

Pi gained 437 GitHub stars in the daily snapshot behind this article while telling users, in plain terms, that it ships without a built-in permission system. That pairing explains more than another coding-agent feature list. The open-source project is attracting attention with a small default agent that developers can reshape, and that same choice leaves them responsible for containing what the model can reach.

At reporting time, GitHub's repository record showed 105,467 stars and 13,261 forks. A star is a bookmark, so the one-day rise does not establish installations, daily use or successful projects. It does show that developers are looking closely at an MIT-licensed TypeScript toolkit whose appeal rests on control rather than a long menu of fixed workflows.

Four tools leave plenty of room

A fresh Pi session gives the model four tools: read, write, edit and bash. The coding-agent documentation describes an interactive terminal application, while the same code can print JSON events, speak a protocol over standard input and output, or run inside another application through an SDK. The repository also separates its model API, agent loop and terminal UI into reusable packages.

That small base still handles the daily mechanics of agent work. Pi's project site says users can switch among supported providers during a session, steer an agent after its current tool finishes, and queue a follow-up for later. Sessions are stored as trees in one file, allowing a developer to return to an earlier point without discarding the branch that followed. Automatic compaction shortens older material as the context limit approaches while retaining the original history.

The current README names more than 20 API-key services, plus subscription sign-in for Anthropic, OpenAI and GitHub Copilot. It also documents a llama.cpp router for local models. That range lets a team keep one agent shell while changing the model behind it. Provider behavior can still differ, so Pi refreshes model catalogues and exposes provider-specific setup rather than pretending every endpoint behaves alike.

The missing features are deliberate

Pi's own feature page is explicit about what the core leaves out. MCP integration and subagents do not ship as fixed features. Neither do plan mode, permission popups, built-in to-do tracking or background Bash. The suggested substitutes include files, tmux, third-party packages and custom code. This makes Pi closer to a programmable workbench than a coding assistant with one prescribed operating style.

TypeScript extensions carry most of that flexibility. The extension guide says an extension can intercept a tool call, register a new command, alter compaction and replace interface components. An extension may also override a built-in tool such as read or bash. Interactive mode displays a warning when that happens. Project extensions can be reloaded during a running session, which shortens the loop between wanting a workflow and using it.

The same API can add a confirmation before a destructive shell command or block writes to a protected path. Those examples are included in the project's extension documentation, alongside remote execution and sandbox examples. They are building blocks rather than a uniform policy. Two Pi installations can therefore expose different tools and approve different actions even when both use the same model.

Isolation begins outside Pi

The main repository states the boundary directly: Pi runs with the permissions of the user and process that started it. Its security policy treats the local account and writable files as part of the same trust boundary. It also says users should monitor the agent or contain it in a container, virtual machine or another sandbox, and it places prompt injection from trusted repository material outside the project's vulnerability scope.

Pi's containerization guide now lays out four patterns. Plain Docker contains the full process, although the documented bind mount still writes changes back to the host project and provider keys enter the container. OpenShell places the process inside a policy-controlled sandbox. Docker Sandboxes can substitute a stored credential at egress so the real secret stays on the host. Each option answers a different part of the permissions problem.

Gondolin draws the boundary elsewhere. Pi and provider authentication stay on the host while an extension routes built-in file and shell tools into a Linux micro-VM. The guide warns that other extension tools still execute beside the Pi process unless they delegate their work too. The mounted project directory also writes through to the host. Installing the sandbox recipe is therefore only the start. The effective boundary depends on every loaded tool.

Every package is a code review decision

Pi packages can bundle extensions, skills, prompts and themes from npm, Git or a local path. The package documentation warns that these packages run with full system access, that extensions execute arbitrary code, and that skills can tell the model to run programs. After a project is trusted, Pi can install missing packages named in project settings at startup. Trusting a repository is consequently an execution decision, not a cosmetic preference.

The maintainers apply tighter rules to Pi's own dependency chain. The repository pins direct external dependencies, sets a two-day minimum release age for npm resolution and ships a generated shrinkwrap with the coding-agent package. CI installs with lifecycle scripts disabled, while scheduled jobs run npm audit and signature checks. Release smoke tests create isolated npm and Bun installations before a tag is published.

Those measures protect the project's release process. They do not inspect every package a user may add later. The package guide tells users to review third-party source before installation, which is the right operational reading of Pi's extension model. A package that adds a convenient agent tool belongs in the same review queue as any other executable dependency with access to the developer account.

Version 0.85.1 shows a fast-moving interface

The latest tagged build at reporting time was Pi 0.85.1, published on September 5. It added GPT-6 Astra through OpenAI API keys and Codex subscriptions. The same release repaired SDK import failures caused when version 0.85.0 unintentionally published experimental client and plugin code. Pi's supported SDK and standard-input RPC interface remained unchanged, according to the release notes.

That fix is a useful measure of maturity because it names a packaging mistake and its boundary. An earlier MrKeyoor review of Pi covers the setup reality at commit a1f955e: 352 packages installed in 54 seconds, the build finished in 31 seconds, and one of 87 SQLite-backend Vitest cases failed. The review predates 0.85.1, so its test result is a point-in-time observation rather than a verdict on the present tag.

Pi's 437-star day puts fresh attention on an old software choice: how much policy belongs in the core. The project has answered by keeping the core small and publishing clear warnings about the work left to its users. Watch the release history for changes to package loading, provider support and isolation guidance. Before adopting it, decide which operating-system account or sandbox will own the process, then review each extension as code. If that advice changes, the evidence will appear in Pi's security and package documents long before a star counter can reveal it.

We reviewed this

  1. router — our honest review
  2. codex — our honest review
  3. Files — our honest review

Sources

  1. Pi GitHub repository
  2. Pi repository metadata
  3. Pi project website
  4. Pi coding-agent documentation
  5. Pi extension guide
  6. Pi security policy
  7. Pi containerization guide
  8. Pi package documentation