32 extensions that makes pi bananas, faster, and multi-agent.
pi-extensions is a flat monorepo of extension packages for pi. Each package does one thing. Install what you need, skip what you don't.
- Code mode β write JS that calls 8 (whatever, or 200) tools in parallel from a single block, with variable passthrough between blocks, session management- more whatever. Heavy work (cold builds, deploys, long pipelines) can run async β the TUI stays interactive while the result delivers as a follow-up turn.
- Mesh networking β P2P agent communication with zero servers (Zenoh via bun:ffi), between sessions or teams.
- Teams β spawn worker agents across different models, collect results, do work, more whatever β¨οΈπ
- Git safety β blocks destructive commands, tracks AI authorship
- Fast file search β Rust-native frecency-ranked search
- Code intelligence β semantic search, call graphs, dead code detection
- 32 packages total β UI, prompts, themes, workflow, and more
One package:
pi install ./packages/brave-search
pi install ./packages/pi-meshFull workspace (run once after changing dependencies):
pi install git:https://github.com/cygnusfear/pi-extensionsHeads up β this workspace is bun-only.
@ff-labs/fff-bundeclaresengines.bun >=1.0.0and ships a bun-specific postinstall, so the install fails under plainnpm install. Ifpi installshells out to npm and fails withBun's postinstall script was not run, clone manually and runbun installinstead:# pi install will still clone into ~/.pi/agent/git/... cd ~/.pi/agent/git/github.com/cygnusfear/pi-extensions bun install # then register the packages you want in ~/.pi/agent/settings.json: # "git/github.com/cygnusfear/pi-extensions/packages/<name>"Make sure bun is on your PATH (
bun --version).
If you're on nix-installed Node, also fix the npm global prefix first. Pi 0.74+ runs
npm install -g <pkg>for anynpm:-scoped entry insettings.jsonpackages: [...]. The default prefix on nix is read-only (/nix/store/...), so every spawn fails withEACCESand workers crash withnpm install -g <pkg> failed with code 243. Fix once per machine:mkdir -p ~/.npm-global echo 'prefix=/Users/<you>/.npm-global' >> ~/.npmrcThen restart any running pi coordinator β it caches
process.envat start, so the new prefix only takes effect for fresh processes.
Each package is independently installable, testable, and removable via ~/.pi/agent/settings.json or project .pi/settings.json.
| Package | Description |
|---|---|
| code-mode | execute_code sandbox β write JS calling tools as typed async functions |
| file-tools | apply_patch edits + readImage for image viewing |
| hashline-tools | Verified file editing with hashline anchors (rejects on file change) |
| fff | Fast file search via fff-bun subprocess (frecency-ranked) |
| background-bash | Run long-lived bash commands without blocking the agent |
| webfetch | Fetch URLs as text/markdown/HTML (max 5MB) |
| context7 | Up-to-date library docs via Context7 MCP |
| Package | Description |
|---|---|
| pi-mesh | P2P agent communication via Zenoh β peer discovery, direct messaging, channels |
| teams | Multi-agent delegation β spawn workers, assign tasks, collect results |
| Package | Description |
|---|---|
| ouija | Session-history search β raw conversations, dead sessions, BM25 recall |
| context | TUI view showing loaded extensions, skills, context usage |
| worktree-summaries | Injects current worktree path into context for compaction survival |
| Package | Description |
|---|---|
| model-shortcuts | Slash commands for quick model switching (/opus, /zai, etc.) |
| model-hints | Injects latest available models into system prompt |
| default-prompt | Default system prompt β always injected |
| prompt-templates | Bundled slash-command templates (/cmd.handoff, /cmd.wtf, etc.) |
| Package | Description |
|---|---|
| git-safety | Blocks destructive git commands, protects .git/ |
| git-ai | Tracks AI-authored code via git-ai agent-v1 protocol |
| Package | Description |
|---|---|
| powerline-footer | Powerline-style status bar + welcome overlay |
| lipgloss-theme | Custom TUI theme |
| core-edit-ui | Shiki syntax-highlighted diffs for the edit tool |
| core-read-ui | Collapsible UI + timing for the read tool |
| notify | Desktop notification when agent finishes (OSC 777) |
| session-tab-title | Tab title = stage icon + topic + agent identity (status()) |
| image-links | Clickable file:// links for images (OSC 8 hyperlinks) |
| Package | Description |
|---|---|
| lock-mode | /lock disables all write tools β read-only mode |
| reload | /reload-runtime to hot-reload extensions |
| fork-fixes | Extension-level fork patches (drops orphaned tool results) |
| Package | Description |
|---|---|
| skills | Skills package manager CLI wrapper |
| nested-skills | Discovers nested SKILL.md files pi's scanner missed |
| tldr-code | Semantic code search, call graphs, dead code detection via llm-tldr |
| Package | Description |
|---|---|
| defaults | Directory-aware read, AGENTS.md discovery, git rebase helper, auto naming |
| cwd | Change session base directory (/cwd <path>) |
| code-review-guard | Injects code health prompt after code-reading tool results |
| mid-mortem | Captures decisions/progress before compaction discards context |
