@bacnh85/pi-hub
v0.1.12
Published
Interactive installer for Pi coding agent packages — browse, search, and install pi extensions via npx pi-hub
Maintainers
Readme
pi-hub
Interactive installer for Pi coding agent packages — browse, search, and install pi extensions without typing pi install ....
Inspired by vercel-labs/skills: one command, interactive multi-select, sensible defaults.
Quick start
npx @bacnh85/pi-hubThat's it — you get the full catalog of @bacnh85 extensions with descriptions, navigate with arrow keys, press space to select, a to select all, then enter to install. Each selection runs pi install npm:<package> for you.
Requirements: Node ≥ 20 and the pi CLI on PATH (pi --version must work).
Commands
pi-hub (no arguments) — interactive browser
npx @bacnh85/pi-hub- Lists every curated
@bacnh85package with full-width descriptions ↑/↓move ·spacetoggle ·atoggle all ·enterconfirm ·qquit- The detail line under the list shows the full npm name + description of the highlighted package
- Confirming the picker installs immediately —
pi installruns per package (passes through pi's own output) -yinstalls quietly (suppresses the "Will install" list),-linstalls project-local instead of user-scope
add — install without browsing
npx @bacnh85/pi-hub add pi-plan # curated shorthand → npm:@bacnh85/pi-plan
npx @bacnh85/pi-hub add pi-plan pi-munin # multiple packages
npx @bacnh85/pi-hub add @bacnh85/pi-review # scoped npm name
npx @bacnh85/pi-hub add user/repo # any git repo → git:github.com/user/repo
npx @bacnh85/pi-hub add npm:@foo/pi-tools # passthrough, exactly as pi install expects
npx @bacnh85/pi-hub add pi-plan -l # -l = project-local (.pi/settings.json)Unknown first arguments are treated as add too: npx @bacnh85/pi-hub pi-plan works.
| Input | Resolves to |
|---|---|
| pi-plan | npm:@bacnh85/pi-plan (curated catalog lookup) |
| @scope/pkg | npm:@scope/pkg |
| owner/repo | git:github.com/owner/repo |
| npm:…, git:…, https://…, ssh://… | passthrough to pi install |
find — search
npx @bacnh85/pi-hub find memory # curated matches first, then npm at large
npx @bacnh85/pi-hub find plan --json # machine-readable outputSearches the curated catalog (name + description), then the npm registry for Pi's official keywords:pi-package convention. Offline or rate-limited? It gracefully falls back to the catalog only.
list — what's installed
npx @bacnh85/pi-hub listReads ~/.pi/agent/settings.json and shows installed package sources.
remove — uninstall
npx @bacnh85/pi-hub remove pi-plan # resolve shorthand → pi remove npm:@bacnh85/pi-plan
npx @bacnh85/pi-hub remove # no args: removes all user-scope npm: packagesupdate — update installed packages
npx @bacnh85/pi-hub update # runs pi update --extensionsFlags
| Flag | Description |
|---|---|
| -l, --local | project-local install (.pi/settings.json) instead of user scope |
| -y, --yes | quiet — suppress the "Will install" list (interactive mode) |
| --json | machine-readable output (find) |
| -h, --help | help |
Curated catalog
| Package | Description |
|---|---|
| pi-a2a | A2A Protocol v1.0 bidirectional — distribute tasks to remote agents, be called by them |
| pi-advisor | Automatic advisor: a second model reviews each settled turn and injects severity-routed notes |
| pi-agy | Google Antigravity CLI bridge — delegate bulk scaffolding, refactors, test generation |
| pi-attachments | Image and file attachments — pastes/drops become file references and inline images |
| pi-budget | Spend cap enforcement — halts the agent when session cost exceeds --budget USD |
| pi-checkpoint | Git-backed undo/redo — /undo rolls back a message AND its file changes |
| pi-commandcode | Connect to Command Code's OpenAI-compatible Provider API |
| pi-cron | Scheduled jobs — cron-style prompts fired into the live session, with crontab export |
| pi-evolve | Trajectory-based self-learning loop — captures tool calls, extracts and injects learnings |
| pi-fff | FFF-powered fuzzy file and content search |
| pi-init | Guided AGENTS.md generation — /init scans the repo and generates/updates AGENTS.md |
| pi-kicad | KiCad CAD-design extension — drive schematic capture and PCB layout |
| pi-model-tools | Unified tool-wrapping, argument repair, DeepSeek V4 guidance, apply_patch diff tool |
| pi-munin | Munin long-term memory as native Pi tools |
| pi-notebooklm | Google NotebookLM — notebooks, sources, chat, research, Studio artifacts |
| pi-notify | Desktop notifications and sounds on task completion, errors, questions |
| pi-obsidian | Obsidian vault integration — read, search, create notes via the Obsidian CLI |
| pi-permission | Granular permission system — config-driven allow/ask/deny rules per tool |
| pi-plan | Plan mode with read-only gating and plan → implement → verify → review workflow |
| pi-ponytail | Lazy senior dev mode — YAGNI/stdlib-first coding discipline |
| pi-references | External context roots — alias sibling dirs or git repos as @docs/@sdk |
| pi-review | Isolated read-only code review with corrected same-session fallback |
| pi-selfskills | Skill self-improvement — one skill_manage tool to patch, create, and restore skills |
| pi-router | Connect to any OpenAI-compatible AI router via its /v1 API |
| pi-rtk | Bash command token rewriting through RTK |
| pi-serena | Serena semantic code tools (find/replace/rename symbols, LSP diagnostics) |
| pi-sub | Subscription usage footer for OpenAI Codex, OpenCode Go, Z.ai |
| pi-subagent | Isolated in-process subagents with parallel/chain modes and git worktree isolation |
| pi-themes | Ayu variants (dark, mirage, light) + Catppuccin Mocha |
| pi-ux | Anti-slop UI/UX design discipline — DESIGN.md anchoring + deterministic slop-audit gates |
| pi-web | Web search, page extraction, Firecrawl scraping/crawling, Crawl4AI headless browser crawling, Gemini web-tier research, free upstream image generation, one-off gateway chat |
| pi-windows-tools | Windows-specific tools for Pi |
Install any of them by directory name: npx @bacnh85/pi-hub add pi-munin.
How it works
pi-hub is a thin discovery + selection layer on top of the pi CLI — pi install / pi remove do the actual package management, pi-hub never reimplements it. Sources:
- Curated catalog — the
@bacnh85monorepo packages, bundled ascatalog.json. - General discovery — npm registry search for
keywords:pi-package, Pi's official package convention. Falls back to catalog-only when offline.
@bacnh85/pi-hub itself is not a pi package (nothing registers into the agent); it's a standalone zero-dependency CLI.
Workflow examples
# Set up a new machine with the full @bacnh85 stack
npx @bacnh85/pi-hub # press 'a', then 'enter'
# Just the essentials for coding
npx @bacnh85/pi-hub add pi-plan pi-serena pi-subagent pi-review pi-munin
# Explore what the community published
npx @bacnh85/pi-hub find obsidian
npx @bacnh85/pi-hub find memory --json | jq '.[].name'
# Project-local install (shared with your team via .pi/settings.json)
npx @bacnh85/pi-hub add pi-permission -lTroubleshooting
pinot found on PATH — install Pi first:npm install -g @earendil-works/pi-coding-agent(see pi's README). pi-hub checkspi --versionbefore anything else.- Picker doesn't respond to keys — stdin must be a TTY. If you're piping input, use
addinstead of the interactive browser. - npm search returns nothing — you're offline or rate-limited; curated catalog still works.
- Install succeeded but extension not loaded — run
pi configto enable it, andpi listto verify the install.
Changelog
See CHANGELOG.md.
License
MIT
