Every package here is a Pi extension you can install individually from npm. Packages are tagged with the pi-package keyword so they appear in the pi.dev gallery.
They share the same bar: TypeScript, real smoke tests (no mocked external APIs), Conventional Commits, and a full quality gate on every PR. Secrets never reach the model — extensions that need credentials go through the shared @jmcombs/pi-1password credential API.
# Install any package globally
pi install npm:@jmcombs/pi-tavily-search
# Or try one for a single session
pi -e npm:@jmcombs/pi-tavily-searchSee the Pi packages documentation for git, local path, project-scoped install, and filtering options.
| Package | Description |
|---|---|
@jmcombs/pi-1password |
Transparent 1Password credential injection so bare gh, aws, and friends work inside Pi — tokens never reach the LLM. Shared credential API for other extensions. |
| Package | Description |
|---|---|
@jmcombs/pi-context7 |
Real-time, version-accurate library docs via Context7. |
@jmcombs/pi-tavily-search |
Real-time web search via the Tavily API. |
@jmcombs/pi-grok-search |
Real-time web search via the xAI Grok API. |
| Package | Description |
|---|---|
@jmcombs/pi-better-toolsy |
Drop-in replacements for ls / read / grep / find / edit / write — .gitignore awareness, path-traversal protection, injection-safe edits. |
@jmcombs/pi-prompt-enhancer |
Codebase-aware prompt rewriter: project tree, git context, referenced files, and an optional auto-enhance on Enter. |
@jmcombs/pi-notify |
Terminal notifications (OSC 777/9/99) when Pi finishes a turn. Ghostty, iTerm2, WezTerm, Kitty, and more — no OS binaries. |
| Package | Description |
|---|---|
@jmcombs/pi-headroom |
Whole-conversation context compression via a local Headroom proxy, with graceful passthrough when unreachable. |
@jmcombs/pi-relay |
Run any Pi subagent on an external coding agent (headless Claude / Grok) by setting its model — provider seam, no local model required. |
@jmcombs/pi-steward |
The llama.cpp control panel for Pi — local browser dashboard for service control, resident models, host health, and streamed logs. |
@jmcombs/pi-blue-psl-10k |
Powerline-styled status footer (Blue PSL 10K theme) — git, context usage, token counts, and cost. |
Extensions that need a user-provided secret resolve it through the shared
@jmcombs/pi-1password credential API. Developer docs:
- Integration guide — add 1Password to your extension, step by step
- API reference — the full credential-API surface
If these extensions save you time, tokens, or friction — a sponsorship is the single best way to keep them maintained and expanding. Every dollar goes to maintenance, new extensions, and keeping the quality bar high.
- GitHub Sponsors — one-time and monthly; 0% platform fee on personal sponsorships; shows up natively on the repo
- Ko-fi — simple one-time tips if you prefer a tip jar outside GitHub
- Node.js
>= 22.19.0(CI on Node 22 and Node 24; release pipeline on Node 24) - npm 10+ (Node 24 ships npm 11+, required for npm Trusted Publishing)
- Pi — see each package README for the minimum Pi version it needs
pi-extensions/
├── packages/
│ ├── _template/ # Scaffold for new extensions (see TEMPLATE.md)
│ └── <extension-name>/ # One directory per published package
├── assets/ # Per-package preview art used in READMEs + the gallery
├── docs/ # Shared developer docs (credential API, CI, …)
├── scripts/ # Version validation, typecheck, audits, …
├── .github/workflows/ # CI + Release Please
├── release-please-config.json
├── .release-please-manifest.json
└── …shared tooling (biome, vitest, husky, commitlint, secretlint)
Every PR runs the same npm run check gate:
npm ci
npm run checkLint + format, typecheck, tests, version validation, Dependabot-ignore hygiene, and security (secretlint + npm audit --omit=dev). All packages must pass.
See docs/ci.md for every CI check and what a green does — and does not — prove.
The main branch is protected by a GitHub Repository Ruleset that requires PR review from @jmcombs, all CI checks green on Node 22 and Node 24, Conventional Commits, and a linear history. The maintainer can push directly to main via the admin bypass; outside contributors must go through PR review. See CONTRIBUTING.md → Branch Protection for the full rule list and rationale.
- Read
CONTRIBUTING.md. - To add a package: copy
packages/_template/and followTEMPLATE.md. - Open a PR. Release Please opens a per-package release PR after merge.
Each package is versioned independently with semver. See VERSIONING.md for the full policy. Releases are automated via Release Please and published to npm using npm Trusted Publishing (OIDC).










