Repository

pi-extensions

A TypeScript monorepo of Pi Coding Agent extensions for automation, planning, language tooling, browser control, web research, Git workflows, and configuration sync.

Package
Use it for
pi-codex-compact
Use OpenAI Codex Remote Compaction V2 to persist and replay bounded opaque checkpoints, with /codex-compact manual controls and safe Pi-native fallback.
pi-lsp
Language-server diagnostics and code actions across JavaScript, TypeScript, Python, Rust, Go, Ruby, C/C++, JVM, .NET, Swift, shell, infrastructure formats, and more.
pi-plan-mode
Codex-like, read-only /plan collaboration before implementation begins.

Specs

  • PackageUse it for
  • pi-codex-compactUse OpenAI Codex Remote Compaction V2 to persist and replay bounded opaque checkpoints, with /codex-compact manual controls and safe Pi-native fallback.
  • pi-lspLanguage-server diagnostics and code actions across JavaScript, TypeScript, Python, Rust, Go, Ruby, C/C++, JVM, .NET, Swift, shell, infrastructure formats, and more.
  • pi-plan-modeCodex-like, read-only /plan collaboration before implementation begins.
  • pi-subagentsDelegate isolated work in single, parallel, or chained execution modes.
  • PackageUse it for
  • pi-chrome-devtoolsInspect tabs, navigate pages, evaluate JavaScript, and capture screenshots through Chrome DevTools Protocol.
  • pi-firecrawlScrape pages, crawl websites, discover URLs, and search the web with Firecrawl.
  • PackageUse it for
  • pi-btwAsk a quick /btw side question without adding it to the main conversation.
  • pi-caffeinatePrevent system sleep while Pi processes a long-running prompt.
  • pi-goalKeep the agent working until a goal is verified complete; optionally enable an experimental ordered queue.
  • pi-worktreeCreate, switch, remove, and prune Git worktrees while carrying the Pi session into another workspace.
  • PackageUse it for
  • pi-accountsSwitch named OpenAI Codex, Anthropic, and GitHub Copilot subscription OAuth accounts with /account .
  • pi-usageView current-account Codex subscription limits or OpenRouter API-key spend limits with /usage .
  • pi-syncSync allowlisted Pi settings and optional sessions through Cloudflare R2 or S3-compatible storage.
  • PackageUse it for
  • pi-github-prShow current-branch pull request checks, reviews, and comment counts through the authenticated gh CLI.
  • pi-langfuseSend agent runs, generations, token usage, costs, and tool activity to Langfuse.
  • pi-stampShow configurable timestamps with opt-in assistant metadata, response timing, and tool timing in the TUI transcript.
  • pi-starshipUse a native Starship-style TOML footer with Pi-specific modules and no Starship binary dependency.
  • pi-statuslineShow model, tools, Git state, context usage, tokens, cost, and time in a preset or JSON-configured footer.
  • pi-toolBrowse every configured tool and inspect its active state, source, parameter schema, and prompt guidelines with /tool .
  • PackageUse it for
  • pi-image-dropStage an ordered, memory-only image batch in a private loopback page for the next Pi message.
  • PackageUse it for
  • pi-tui-kitExtend @earendil-works/pi-tui with reusable navigation helpers and declarative action, detail, settings, and multi-select flows.
  • PackageUse it for
  • pi-analyticsReview private, content-free local metrics for model calls, skills, tools, response cycles, and observed provider reliability through /analytics .
  • pi-webuiUse a private loopback browser companion for the current terminal session with live activity and text/image input.
  • pi-workflowCombine /plan and /goal in one experimental package with an integrated, recoverable Plan-to-Goal handoff.

README

🧩 Pi Extensions for the Pi Coding Agent

npm scope License: MIT

Independently installable Pi Coding Agent extensions and reusable extension
libraries for coding, research, browser automation, workflow management, observability, and terminal
ergonomics.

Install only what you need. Every package is published separately under the @narumitw npm scope.

🚀 Quick start

Install an extension permanently:

pi install npm:@narumitw/pi-goal

Try one without adding it permanently:

pi -e npm:@narumitw/pi-statusline

Combine multiple extensions:

pi -e npm:@narumitw/pi-goal \
  -e npm:@narumitw/pi-statusline \
  -e npm:@narumitw/pi-lsp

[!IMPORTANT]
Pi extensions run with your full user permissions. Review an extension before installing it from any third party.

📦 Choose an extension

Coding and delegation

Package Use it for Install
pi-codex-compact Use OpenAI Codex Remote Compaction V2 to persist and replay bounded opaque checkpoints, with /codex-compact manual controls and safe Pi-native fallback. pi install npm:@narumitw/pi-codex-compact
pi-lsp Language-server diagnostics and code actions across JavaScript, TypeScript, Python, Rust, Go, Ruby, C/C++, JVM, .NET, Swift, shell, infrastructure formats, and more. pi install npm:@narumitw/pi-lsp
pi-plan-mode Codex-like, read-only /plan collaboration before implementation begins. pi install npm:@narumitw/pi-plan-mode
pi-subagents Delegate isolated work in single, parallel, or chained execution modes. pi install npm:@narumitw/pi-subagents

Browser and research

Package Use it for Install
pi-chrome-devtools Inspect tabs, navigate pages, evaluate JavaScript, and capture screenshots through Chrome DevTools Protocol. pi install npm:@narumitw/pi-chrome-devtools
pi-firecrawl Scrape pages, crawl websites, discover URLs, and search the web with Firecrawl. pi install npm:@narumitw/pi-firecrawl

Task and workspace workflows

Package Use it for Install
pi-btw Ask a quick /btw side question without adding it to the main conversation. pi install npm:@narumitw/pi-btw
pi-caffeinate Prevent system sleep while Pi processes a long-running prompt. pi install npm:@narumitw/pi-caffeinate
pi-goal Keep the agent working until a goal is verified complete; optionally enable an experimental ordered queue. pi install npm:@narumitw/pi-goal
pi-worktree Create, switch, remove, and prune Git worktrees while carrying the Pi session into another workspace. pi install npm:@narumitw/pi-worktree

Accounts and data

Package Use it for Install
pi-accounts Switch named OpenAI Codex, Anthropic, and GitHub Copilot subscription OAuth accounts with /account. pi install npm:@narumitw/pi-accounts
pi-usage View current-account Codex subscription limits or OpenRouter API-key spend limits with /usage. pi install npm:@narumitw/pi-usage
pi-sync Sync allowlisted Pi settings and optional sessions through Cloudflare R2 or S3-compatible storage. pi install npm:@narumitw/pi-sync

Status and observability

Package Use it for Install
pi-github-pr Show current-branch pull request checks, reviews, and comment counts through the authenticated gh CLI. pi install npm:@narumitw/pi-github-pr
pi-langfuse Send agent runs, generations, token usage, costs, and tool activity to Langfuse. pi install npm:@narumitw/pi-langfuse
pi-stamp Show configurable timestamps with opt-in assistant metadata, response timing, and tool timing in the TUI transcript. pi install npm:@narumitw/pi-stamp
pi-starship Use a native Starship-style TOML footer with Pi-specific modules and no Starship binary dependency. pi install npm:@narumitw/pi-starship
pi-statusline Show model, tools, Git state, context usage, tokens, cost, and time in a preset or JSON-configured footer. pi install npm:@narumitw/pi-statusline
pi-tool Browse every configured tool and inspect its active state, source, parameter schema, and prompt guidelines with /tool. pi install npm:@narumitw/pi-tool

Choose either pi-starship or pi-statusline; do not enable both footer extensions together.

Browser companions

Package Use it for Install
pi-image-drop Stage an ordered, memory-only image batch in a private loopback page for the next Pi message. pi install npm:@narumitw/pi-image-drop

🧱 Extension libraries

Package Use it for Install
pi-tui-kit Extend @earendil-works/pi-tui with reusable navigation helpers and declarative action, detail, settings, and multi-select flows. npm install @narumitw/pi-tui-kit

Libraries are runtime dependencies for extension authors, not standalone Pi extensions. New standard
manager menus should use @narumitw/pi-tui-kit; extensions continue to own domain state,
commands, settings persistence, confirmations, and specialized UI.

🧪 Experimental extensions

[!WARNING]
Experimental extensions are published and installable, but their interaction models and package APIs may change between releases.

Package Use it for Install
pi-analytics Review private, content-free local metrics for model calls, skills, tools, response cycles, and observed provider reliability through /analytics. pi install npm:@narumitw/pi-analytics
pi-file-context Browse project files, preview text, select exact lines or Git diff hunks, and attach immutable snapshots with Git provenance to the next prompt. Open it with configurable F8 or /file-context. pi install npm:@narumitw/pi-file-context
pi-webui Use a private loopback browser companion for the current terminal session with live activity and text/image input. pi install npm:@narumitw/pi-webui
pi-workflow Combine /plan and /goal in one experimental package with an integrated, recoverable Plan-to-Goal handoff. pi install npm:@narumitw/pi-workflow

🔧 Advanced installation

<details>
<summary>Install this repository directly from GitHub</summary>

Install the repository as one Pi package:

pi install git:github.com/narumiruna/pi-extensions

The repository root Pi manifest explicitly lists every stable extension under packages/, so this enables all of them. Packages marked with the experimental lifecycle are intentionally excluded from the root Git package.

To load only selected extensions, replace the installed package entry in ~/.pi/agent/settings.json with a resource filter:

{
  "packages": [
    {
      "source": "git:github.com/narumiruna/pi-extensions",
      "extensions": [
        "packages/pi-accounts/src/index.ts",
        "packages/pi-usage/src/index.ts"
      ]
    }
  ]
}

Filters use resource paths relative to the repository root. A package directory such as packages/pi-accounts is not enough; select its src/index.ts entrypoint.

Restart Pi or run /reload after changing the filter. Update the checkout later with:

pi update --extensions

</details>

🧑‍💻 Local development

From the repository root:

npm install
npm test
npm run check

npm test typechecks the test sources and runs the root and workspace suites with Vitest.

Use the generic Just recipes with an unscoped extension name:

just try goal
just pack goal

# Experimental packages use the same recipes
just try file-context
just pack file-context

# Libraries use the same generic pack recipe
just pack tui-kit

Run just --list to see all development, install, pack, and release recipes. Pull requests that
change published package behavior should add release intent with npm run changeset; packages version
independently.

<details>
<summary>Publishing a new scoped package</summary>

just npm-public @narumitw/pi-new-extension only changes visibility for an existing npm package. If npm returns 404 for a brand-new package, publish it once with public access:

npm publish --workspace @narumitw/pi-new-extension --access public

After the initial publication, Changesets handles stable extensions, experimental extensions, and
libraries through independent package versions.

</details>

🦋 Releases

A behavior-changing package pull request records its affected packages and SemVer bumps with:

npm run changeset

After changesets reach main, the release workflow creates or updates one version pull request. That
pull request changes only selected package versions, dependency ranges where configured, changelogs,
and the lockfile. Merging it publishes the new versions with npm provenance and creates
package-specific tags and GitHub releases such as @narumitw/[email protected].

Repository-only documentation, tests, tooling, and path migrations may omit a changeset. Use
npm run changeset:status to inspect pending releases. Versioning and publication run through the
release workflow; initial publication remains the manually approved exception described above.

@narumitw/pi-tui-kit remains independently versioned. Publish a new Kit API before raising an
extension's compatibility floor to consume it; do not release an unpublished Kit API and its first
consumer together.

🗂️ Repository structure

packages/                Stable extensions, experimental extensions, and reusable libraries
deprecated/              Reference packages excluded from active workspace scripts
docs/                    Repository conventions and plans
scripts/                 Shared checks, tests, versioning, and release helpers
test/                    Root integration and repository tests

Each active package contains its own package.json, README.md, LICENSE, tsconfig.json, and
TypeScript source under src/. Extension src/index.ts files are thin Pi entrypoints and declare a
stable or experimental lifecycle; reusable libraries publish built ESM and declarations from dist/.

<details>
<summary>Deprecated packages</summary>

The following packages remain available as source references but are excluded from active workspace scripts:

  • pi-biome-lsp and pi-python-lsp — replaced by pi-lsp
  • pi-codex-accounts — replaced by pi-accounts
  • pi-codex-usage — replaced by pi-usage
  • pi-retry — replaced by Pi's built-in provider retry and timeout behavior
  • pi-google-genai — replaced by the grounding-with-google-genai agent skill
  • pi-jupyter — deprecated without a replacement
  • pi-auto-thinking
  • pi-sidebar
  • pi-telegram-bot
  • pi-telegraph
  • pi-wait-what

</details>

📄 License

MIT. See LICENSE.