claudeers.
// Developer Tools

pi-extensions

Nick Nisi's pi extensions — a pnpm monorepo of independently installable pi packages (@nicknisi/pi-*). TUI polish, side-channel LLM tools, Claude Code compat…

// Developer Tools[ cli ][ api ][ web ][ claude ]#claude#changesets#pi-coding-agent#pi-extensions#pi-package#pnpm-monorepo#devtoolsMIT$open-sourceupdated 11 days ago
Actively maintained
100/100
last commit 1 day ago
last release 1 day ago
releases 127
open issues 0

Install with your AI

Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.

Install and set up pi-extensions (git-clone project) into my current project.
Found on https://claudeers.com/pi-extensions
Repo: https://github.com/nicknisi/pi-extensions
Homepage/docs: —
Detected install method: git-clone → git clone https://github.com/nicknisi/pi-extensions
Category: devtools. Platforms: cli, api, web.
Read the repo's README for exact setup and env vars, then install it and wire it into my project.

Claudeers Health Verdict:
active; community-verified: false. Confirm the source before running anything.
// or clone
git clone https://github.com/nicknisi/pi-extensions

// compatibility

Platformscli, api, web
Operating systems
AI compatibilityclaude
LicenseMIT
Pricingopen-source
LanguageTypeScript

pi-extensions

Nick Nisi's pi extensions — a pnpm monorepo of independently installable pi packages. Each package under packages/ is a self-contained pi extension (or shared library) with its own pi manifest; install only the ones you want.

Install

Packages are private (not on npm). Install from a local checkout:

git clone <this-repo> ~/Developer/pi-extensions
pi install ~/Developer/pi-extensions/packages/statusline   # absolute
pi install ../pi-extensions/packages/btw                   # relative to the settings file

Local paths are added to pi's settings without copying — edits in the repo are live on next pi start. Remove with pi remove <path>.

Packages

Productivity

PackageWhat it doesAdds
answerExtracts questions from the last assistant message via a side LLM call, answers them in a tab-through overlay, sends one formatted reply/answer, ctrl+., Q&A overlay
btwSide-channel LLM chat in a floating window — sees branch context, never touches the main agent's context; promote or fork the thread/btw, overlay, btw-answer entry type
codemodeModel-written TypeScript orchestrates subagents compositionally (Promise.all fan-out, pipelines) — executed in-process, returns the module result; = console prefix and /cx named snippets run the same runtime inlinecodemode tool, = prefix, /cx command
handoffTransfers context to a new linked session with a model-generated, editable prompt instead of compacting/handoff <goal>
llm-councilMultiple models answer in parallel as in-process child sessions; a chairman synthesizesllm_council tool with live inline progress
relayBrokerless session-to-session messaging — file mailbox that outlives the process; drop-in pi-intercom replacementrelay tool, /relay
subagentsFirst-party subagent dispatch + fleet: fan out parallel hermetic child agents, inspect live/persisted runs — no pi-subagents dependencydispatch and fleet tools, /fleet
orchestrate/goal keeps working until a condition holds; /loop re-runs a prompt on a timer/goal, /loop
workflowsModel-facing front door to the first-party workflow engine: run JS workflow scripts over the subagent runtime with the old third-party tool's globals (agent, parallel, pipeline, phase, log, args, budget, cwd) — evicts @quintinshaw/pi-dynamic-workflowsworkflow tool, /wf
save-mdExport the latest assistant response to a markdown file/save-md <name>

UI & appearance

PackageWhat it doesAdds
composerConfig-driven boxed input editor; paste-again-to-expand for collapsed paste markers; tmux focus-aware bordercustom editor component
headerAnimated dashboard header (GIF-compiled truecolor frames or ASCII art) with session info, on fresh sessions/nicknisi-header, custom header
mgSeverance-style "100% File Completion" animation starring a pixelated Michael Grinich, with macOS audio/mg [name]
pin-last-promptSticky bar pinning the owning user prompt while scrolled back in fullscreen (pi ≥ 0.84)scrollback overlay bar
recapLLM "where was I" card injected into the transcript after idle minutes/recap, /recap-idle, recap entry type
spinner~1000 rotating joke/meme phrases for the working spinner
statuslineFooter: model, cost, context bar, lines changed, usage limits, git PR link; writes tmux status filescustom footer, ~/.cache/pi-status/
turn-timerDim per-turn elapsed-time row below each responseturn-duration entry type

Behavior & plumbing

PackageWhat it doesAdds
agent-urlsagent:// / history:// URIs for pi-subagents runs; list and read run outputs/transcripts/agent, list_agent_runs, read_agent_url tools
artifactsartifact tool: render markdown/HTML to styled browser pages from a lazy localhost server, with live reloadartifact tool, /artifacts
auto-themeSync pi theme with macOS system appearance (dark↔light pairs)
claude-compatClaude Code compatibility: CLAUDE_PLUGIN_ROOT path shimming + !`command` dynamic SKILL.md placeholders (allowlisted)two extension entry points
cloakRedact secrets from read tool results before they reach model context, via glob-scoped regex rules/cloak-status, cloak.json
model-switchCycle or fuzzy-pick from a machine-local, sectioned model list, skipping missing or unauthenticated entries/model-cycle, configurable shortcuts
session-nameAuto-name sessions (heuristic or LLM), mirror to terminal title, name-focused session picker/sn, /sessions
stashctrl+s parks the prompt draft on a LIFO stack; pop or auto-restorectrl+s, stash widget

Library

PackageWhat it does
shared@nicknisi/pi-shared — helper library (not an extension): getModelProvider for one-off LLM calls, TUI utilities (gradient text, tree section removal, two-column layout, escape sanitization, render dispatcher), SearchableSelectList, the in-process subagent runtime (createSubagentRuntime), and the declarative workflow engine (runWorkflow). Consumed via workspace:* by 7 packages.

Development

pnpm install
pnpm typecheck   # tsgo (TypeScript 7 native preview)
pnpm build       # compile each package to packages/<name>/dist/
pnpm lint        # oxlint
pnpm fmt         # oxfmt

Layout: one directory per package in packages/, each with index.ts + package.json carrying a pi manifest ("pi": { "extensions": ["./index.ts"] }). @earendil-works/* packages are peer dependencies: pi's runtime aliases them to its own modules at load time, and the root devDependencies provide one canonical copy for typechecking (autoInstallPeers: false keeps it that way).

Two entry points per package

Each package publishes its TypeScript sources and compiled JS, and they are used by different consumers:

FieldPoints atUsed by
pi.extensions./index.tspi, which transpiles extensions through jiti
exports./dist/index.js + ./dist/index.d.tseveryone else — bundlers, and anything tsc-built

The split exists because Node refuses to strip types inside node_modules (ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING), so a tsc-built consumer importing raw .ts from a package crashes at runtime. Keeping pi.extensions on the sources means local path installs (pi install ../pi-extensions/packages/statusline) still need no build step, which is the point of the rapid-testing loop.

Consequences worth knowing:

  • dist/ is git-ignored, so pnpm build runs in CI before publish (see release.yml) and from the root prepare script after pnpm install. That hook is load-bearing for local path installs: six packages depend on @nicknisi/pi-shared, which now resolves through its own exports into dist/, so a fresh clone with no build would fail to load them in pi. If you ever delete dist/ by hand, run pnpm build — a no-op pnpm install will not re-run prepare.
  • Relative imports use .js, never .ts (import { x } from './config.js'), the normal NodeNext convention — allowImportingTsExtensions is deliberately off so the typecheck catches any regression.
  • paths in the root tsconfig maps @nicknisi/pi-shared to its source, so a fresh clone typechecks without building first. The build turns that off (paths: {}) and resolves siblings through their real exports instead, which is what proves the declaration output is actually usable.

Cross-package helpers go in packages/shared, consumed as "@nicknisi/pi-shared": "workspace:*".

Notes

  • Runtime configs live outside the repo: ~/.pi/agent/configs/<name>.json for most packages. Example configs ship with the packages that need them.
  • Several extensions lean on pi internals (component tree shapes, editor privates, fullscreen renderer state) — each README's caveats section calls these out; a pi upgrade can break them.
  • macOS-centric: auto-theme, statusline's tmux integration, and btw's fork-to-window all assume macOS/tmux/ghostty.

// faq

What is pi-extensions?

Nick Nisi's pi extensions — a pnpm monorepo of independently installable pi packages (@nicknisi/pi-*). TUI polish, side-channel LLM tools, Claude Code compat, and session plumbing for the pi coding agent.. It is open-source on GitHub.

Is pi-extensions free to use?

pi-extensions is open-source under the MIT license, so it is free to use.

What category does pi-extensions belong to?

pi-extensions is listed under devtools in the Claudeers registry of Claude-compatible tools.

3 views
29 stars
unclaimed
updated 11 days ago

// embed badge

pi-extensions on Claudeers
[![Claudeers](https://claudeers.com/api/badge/pi-extensions.svg)](https://claudeers.com/pi-extensions)

// retro hit counter

pi-extensions hit counter
[![Hits](https://claudeers.com/api/counter/pi-extensions.svg)](https://claudeers.com/pi-extensions)

// reviews

// guestbook

0/500

// related in Developer Tools

🔓

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Curs…

// devtoolsaffaan-m/JavaScript240,305MIT[ claude ]
🔓

Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA

// devtoolsgarrytan/TypeScript128,278MIT[ claude ]
🔓

AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs,…

// devtoolssafishamsi/Python109,277MIT[ claude ]
🔓

Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

// devtoolsDietrichGebert/JavaScript104,762MIT[ claude ]
→ see how pi-extensions connects across the ecosystem