Monorepo for Pi coding agent extensions.
This repository currently contains local extensions for web research and Executor integration. Packages share one Bun workspace, one lockfile, and root-level TypeScript, lint, and format tooling.
| Package | Description |
|---|---|
@pi-ext/web |
web_search and web_fetch tools with a pluggable provider layer. Supports Exa and Parallel. |
@pi-ext/executor |
Native Pi extension for Executor search, execution, elicitation, rendering, and project-aware Executor configuration. |
@pi-ext/kit |
Preset that installs the ask tool and permission modes together in one package. |
@pi-ext/ask |
An ask tool letting the model pose multiple-choice questions to the user (mirrors Claude Code's AskUserQuestion). |
@pi-ext/permission-modes |
Claude-Code-style permission modes (Shift+Tab) with a merged allow/deny/ask rule engine and an approval overlay. |
@pi-ext/ui |
Shared terminal UI primitives: a reusable choice overlay (options, multi-select, notes, preview) + a question shell. |
Install one package:
pi install /path/to/pi-extensions/packages/web
pi install /path/to/pi-extensions/packages/executorOr add packages to ~/.pi/agent/settings.json:
{
"packages": ["/path/to/pi-extensions/packages/web", "/path/to/pi-extensions/packages/executor"]
}Credentials are read from ~/.pi/agent/auth.json under provider ids exa and/or
parallel.
{
"exa": {
"type": "api_key",
"key": "..."
},
"parallel": {
"type": "api_key",
"key": "..."
}
}Use /web config in Pi for provider/default settings.
Executor project behavior comes from executor.jsonc in the active project.
Pi-specific display and render settings live in:
- Global:
~/.pi/agent/executor-pi.json - Project override:
.pi/executor-pi.json
Use /executor config in Pi to edit display density, search defaults, and render
limits.
Install dependencies from the workspace root:
bun installRun all package typechecks and tests plus root lint/format checks:
bun run checkRun package-specific checks:
bun run --filter @pi-ext/web check
bun run --filter @pi-ext/executor checkRoot-owned tooling:
bun run typecheck
bun run test
bun run lint
bun run format:check
bun run formatPackage-level oxlint and oxfmt configs are intentionally not duplicated.
Root oxlint.config.ts and
oxfmt.config.ts apply to all packages.
- Root
bun.lockis authoritative. packages/executorvendorsfumadbunderpackages/executor/vendor/. The workspace root owns the dependency and override so Executor SDK resolves the patched package.