Repository overview
Pi extensions for pull requests, subagents, memory, Herdr panes, and other agent workflows. These extensions use strong workflow preferences, so read each package guide before you install it. The guides are at pi.henry.wang.
Install
curl -fsSL https://pi.henry.wang/install.sh | sh
The installer does these steps:
- Installs Pi and Herdr if they are missing, and stops if a version is below the minimum.
- Shows the installed Pi and Herdr versions and asks before it updates either tool.
- Asks which extensions to install: all (the default), a selection, or none.
- Installs the selected extensions from npm.
Without an interactive terminal, the installer installs all extensions and does not update Pi or Herdr.
| Option | Effect |
|---|---|
--all |
Install all extensions without a prompt. |
--update |
Approve available Pi and Herdr updates without a prompt. |
curl -fsSL https://pi.henry.wang/install.sh | sh -s -- --update
To install one extension, use Pi directly, for example pi install npm:@henryqw/pi-pr.
Config files
An extension that you can configure keeps its files in ~/.pi/agent/config/<package>/. ~/.pi/agent is the default Pi agent directory. If you set PI_CODING_AGENT_DIR, Pi uses that directory.
Each config file is optional, unless its package guide says otherwise. These rules apply to each file:
- The file must be a JSON object in valid UTF-8, at most 64 KiB.
- Pi shows each problem one time in each session, with the file path and the reason. Without a UI, the warning goes to stderr.
- Pi ignores unknown keys.
- A misspelled key, such as
maxTokenwhenmaxTokensis missing, makes that setting invalid. - An invalid setting uses its default.
- A file problem makes the whole file invalid: malformed JSON, invalid UTF-8, a file larger than 64 KiB, an unreadable file, or a non-object root. All settings then use their defaults.
- Reading a file never changes it. Only the commands that a package guide names write the file.
Some settings disable a feature when they are invalid, and do not use a default. Each package guide gives these settings, what a file problem does, and when edits apply. For the exact rules, see the pi-config-store load rules.
Extension dependencies
Each row shows an active extension. A filled square marks a direct runtime or peer dependency on the package above its column. Empty rows have no internal dependencies. Column counts show how many extensions depend directly on that package.
The matrix excludes development and transitive dependencies, deprecated extensions, and @deprecated/.
Development
The repository is a pnpm workspace. Extensions are in extensions/, support libraries are in packages/, and the documentation website is in website/. Archived packages are in deprecated/ and are not part of the workspace.
pnpm install
pi -e ./extensions/pi-undo/extensions/undo.ts
pnpm install also builds the support libraries. Use pi -e with an extension entry file to test that extension from source.
CI runs these checks on each pull request:
| Command | Check |
|---|---|
pnpm test |
Repository script tests, eval tests, and the tests of each workspace package. |
pnpm run typecheck |
TypeScript types in each package. |
pnpm run pack:check |
The npm artifact of each published package. |
pnpm run docs:validate |
The installer list, README structure, Simplified Technical English rules, and the website. |
pnpm run check:package-versions |
Version bumps for changed published files. |
To release a package, follow the release runbook.