The pi coding agent is deliberately minimal: no subagents, no plan mode, no memory factory. Instead it ships an extension system — you build what is missing yourself, or install it from a marketplace that is growing fast. pi.dev now lists hundreds of packages, and new ones appear daily. Between genuine tools (pi-web-access at over 170,000 downloads a week) and one-release experiments lies an enormous quality spread. This article sorts the landscape, evaluates it against reproducible criteria, and names a curated shortlist with practical examples.
A Pi package bundles extensions (TypeScript: tools, commands, event handlers, UI), skills (instructions), prompt templates, and themes. Install from npm or Git:
pi install npm:pi-subagents
pi install git:github.com/foo/bar
pi list # show installed packages
pi update --extensions # update packages only
pi config # enable/disable individual resources
The marketplace itself (pi.dev/packages) is an indexed view of npm packages carrying the pi-package keyword; discovery happens mostly via npmjs.com or the Pi Discord. Project-local installs use -l (.pi/ instead of ~/.pi/agent/).
For every candidate I checked four signals:
| Criterion | Question | Threshold |
|---|---|---|
| Maintenance | Last release, number of versions | Active = release within the last month, >10 versions |
| Maturity | CI/tests, README depth, compatibility table | CI + real docs = serious |
| Scope | Bundle vs. focused, documented dependencies | One purpose per package scores higher |
| Security | Extensions run with the same OS rights as Pi and can read prompts, files, and credentials | Trusted sources only, source code inspectable |
Plus one Pi-specific point: many extensions are tied to specific Pi versions (lockstep). As of October 2026 Pi is at 1.0.x (npm latest: 1.1.0). Whoever works on the newest Pi release should check the compatibility note — good extensions fail closed on version skew, bad ones fail silently.
| Category | Representatives | Maturity |
|---|---|---|
| Web access & research | pi-web-access, @narumitw/pi-firecrawl, pi-ext-int-search | very mature (170k downloads/week) |
| Delegation & subagents | pi-subagents (+ forks: @williamcr01, @gotgenes, @davecodes), pi-durable-subagents | mature, active fork landscape |
| Plan & goal modes | @narumitw/pi-plan-mode, pi-until-done, @narumitw/pi-goal, pi-goal-x, @schovest/pi-goal | medium to very mature |
| Tooling & quality | @narumitw/pi-lsp, @narumitw/pi-github-pr, pi-permission-bash-cmd-checker | medium |
| Claude/third-party ecosystems | pi-claude-marketplace, pi-claude-bridge, pi-claude-cli | mature |
| Infrastructure | pi-mcp-adapter, pi-mcp-extension, pi-sync, pi-worktree, pi-l1-cache | mixed |
| UI/UX | pi-agent-extensions (bundle), @narumitw/pi-statusline, pi-powerline-footer, pi-compact-transcript | mixed |
| Memory & knowledge | pi-memory, pi-weave, pi-hermes-memory, pi-cbmem (deprecated) | young |
Web search, URL fetch, GitHub cloning, PDF extraction, and YouTube/video understanding (fetch_content). GitHub URLs are cloned locally instead of scraped — the agent gets real file paths to explore rather than rendered HTML. 47 versions, maintained daily, dozens of search providers from keyless DuckDuckGo to Exa/Brave.
pi install npm:pi-web-access
In practice:
Research the current state of LangGraph and clone the repo;
answer from it which breaking changes the last major version introduced.
Focused child sessions with built-in agents: scout (codebase recon), researcher, worker (implementation), reviewer, oracle (peer review without editing), and delegate. Foreground and background runs, cached via session forking.
pi install npm:pi-subagents
Tested on Pi 1.0.2 and 0.99.2 (October 2026): loads without errors, parallel operation with other packages is unproblematic.
In practice (this works as a natural prompt, no tool manual needed):
Run parallel reviewers on this diff: one for correctness, one for tests,
one for unnecessary complexity.
Packaged shortcuts such as /parallel-review make this loop repeatable. Fork advice: stick with the original unless you explicitly need chain files (@davecodes) or recursive child agents (@williamcr01).
Wire commands, skills, agents, and MCP servers from Claude Code marketplaces into Pi — including the official Anthropic marketplace. 48 versions, very active.
pi install npm:pi-claude-marketplace
/claude:plugin marketplace add anthropics/claude-plugins-official
/claude:plugin install context7-plugin@official
/reload
That makes Context7 (current library docs directly in context) available inside Pi too.
One package, 17 extensions, four themes: /sessions (session picker), /handoff (goal-driven context transfer), todos, notify (desktop notification), btw, session analytics, and more.
pi install npm:pi-agent-extensions
In practice: after long agent runs notify reports via OSC 777 to the terminal, files provides a unified file/git browser. Fair warning: several bundle parts are marked beta (e.g. workflow, answer, control) — if you only want /handoff and todos, target those individually.
Language-server diagnostics and code actions for TypeScript, Python, Rust, Go, and more. The agent gets the same errors as your editor — and can apply some of them automatically (for example removing unused imports).
pi install npm:@narumitw/pi-lsp
In practice:
Check the diagnostics in src/graph/ and apply the available code actions
for unused imports.
A Codex-style /plan mode: explore read-only, weigh options, deliver an implementation-ready plan — before anything is edited. A useful brake in large repos and for refactorings with pitfalls.
pi install npm:@narumitw/pi-plan-mode
/plan Which migration order is safest for the provider switch?
77 versions, intensively maintained (by the same maintainer behind pi-web-access). Makes MCP servers accessible to Pi — useful when you want service-specific servers (Jira, databases, Grafana) as tools in agent sessions.
pi install npm:pi-mcp-adapter
Context: Pi ships built-in MCP support; the adapter is mainly for advanced scenarios (extension-registered servers, key management, auth flows). For simple cases /mcp in mcp.json already suffices.
The "Ralph loop" with a mandatory judge (details in the separate tutorial): locked contract, TDD plan, turn budget. Robustness comes from a second LLM as the completion adjudicator and verbatim-quoted verifyCommand output.
pi install npm:pi-until-done
/until-done finish migrating the auth tests to Vitest
/until-done judge anthropic/claude-sonnet-4-5
On the lockstep question we installed and loaded 0.3.1 on the current Pi 1.0.2 (and 0.99.2 for comparison) — no errors, although only Pi 0.81.1 is CI-tested. After Pi upgrades, pull the package along (pi update --extensions) and run one full cycle before relying on it.
If you prefer purely deterministic gates over an LLM adjudicator, look at untilgreen (exit codes decide, no model). @narumitw/pi-goal and pi-goal-x are leaner alternatives without a judge requirement.
Not in the shortlist but worth a look: pi-l1-cache (L1 response cache, already benchmarked on this blog), @narumitw/pi-statusline (rich footer bar), pi-sync (sync settings via S3/R2), pi-secret (keep API keys out of model context via {{sec:NAME}} refs), @narumitw/pi-firecrawl, pi-harness-runtime (Codex-style /usage view, still beta), and pi-durable-subagents (crash-safe child agents).
@narumitw has retired pi-retry (now built into Pi), pi-biome-lsp→pi-lsp, pi-codex-accounts→pi-accounts, and pi-google-genai (→ agent skill). Before installing, check whether the feature now lives in Pi itself.pi-until-done bind to exactly one Pi version. In practice 0.3.1 also loads cleanly on Pi 1.0.x (tested: 1.0.2) — still check after a pi update --self ("pi update --extensions") for a matching release.Starting from zero, begin with two packages: pi-web-access (research replaces the manual copy-paste path) and pi-subagents (a review speed-up). Then, as needed, pi-claude-marketplace for Context7 and pi-until-done for guarded long runs. Everything else follows from concrete pain — and that is precisely the strength of the Pi approach: the extension landscape has grown large enough that you build or find the right solution instead of accepting a monolithic agent.