@caveman-ai/pi
Native Caveman extension for the Pi coding agent — proxy routing, exact-recovery caveman_retrieve tool, native lifecycle events, Core injection, and tool-output shrinking.
Package details
Install @caveman-ai/pi from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@caveman-ai/pi- Package
@caveman-ai/pi- Version
0.1.1- Published
- Sep 15, 2026
- Downloads
- 275/mo · 34/wk
- Author
- juliusbrussee
- License
- MIT
- Types
- extension
- Size
- 84.2 KB
- Dependencies
- 0 dependencies · 3 peers
Pi manifest JSON
{
"extensions": [
"./dist/index.mjs"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@caveman-ai/pi
Native Caveman extension for the Pi coding agent.
One extension, four jobs:
Proxy routing — points the selected model's provider at your local Caveman proxy (
/w/pi/...) by updating that model's endpoint and preserving the SDK's original URL-dependent compatibility settings. Pi keeps owning auth, model names, pricing, andmodels.json; the provider registry is unchanged. The extension routes only when the running proxy identifies the same destination: scheme, host, port, path, and API version must match. Custom providers need a publishedcompat.<provider>.base_urlmount. The proxy's live identity must also match its run-state file. Unknown endpoints and older proxies without this proof stay direct with a notice. Pi keeps its own provider identity, model catalog, auth registration, and custom stream handlers. OpenAI Chat Completions endpoints containingapi.openai.comstay direct: Pi derives their prompt cache key from the URL and exposes no reliable override for routed requests. OpenAI Responses routing remains supported. Pi also derives attribution/session headers from some URLs. OpenRouter, NVIDIA, Cloudflare, and OpenCode aliases stay direct when their original headers cannot be preserved; canonical provider IDs remain routable. An alias can route when explicit headers make the result identical, or whenPI_TELEMETRY=0disables the affected attribution (OpenCode session headers still require preservation). The extension does not reload or guess Pi's private active telemetry preference.Exact recovery — registers a single model-visible tool,
caveman_retrieve, backed by the localcaveman-mcpbinary and the shared CCR store. Compressed bytes are always recoverable, byte-exact.Native lifecycle — bridges Pi session/turn/tool events into the Caveman native runtime (Core injection, per-turn context, tool-output shrinking).
Honest fallback — routing activates only after the recovery gate holds (proxy alive, recovery contract matched, MCP child initialized). Anything else is a visible pass-through: direct provider, one notice, no savings claims. OAuth/subscription-authenticated models are never routed.
Install
Through the Caveman CLI (recommended — journaled, reversible):
caveman wrap pi # this session only
caveman enable pi # persistent; plain `pi` stays routed until `caveman disable pi`
Or as a plain Pi package:
pi install npm:@caveman-ai/pi
Requires the Caveman CLI (npm i -g @caveman-ai/cli) plus the local
caveman-proxy / caveman-mcp binaries (caveman setup). Without them the
extension loads, says so once, and stays out of the way.
Pinned against @earendil-works/pi-coding-agent 0.84.2.