@geohar/pi-cribsheet
Pi extension: run the crib (cribsheet) memory + code-index MCP server via sharedserver, inject the reach-for-crib directive, and ship the /crib recall command. Pairs with pi-mcp-adapter.
Package details
Install @geohar/pi-cribsheet from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@geohar/pi-cribsheet- Package
@geohar/pi-cribsheet- Version
0.10.1- Published
- Aug 21, 2026
- Downloads
- 446/mo · 446/wk
- Author
- georgeharker
- License
- MIT
- Types
- extension
- Size
- 99.4 KB
- Dependencies
- 0 dependencies · 0 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@geohar/pi-cribsheet
A Pi extension that makes cribsheet (the crib memory +
code-index MCP server) available to Pi: it starts crib (supervised by
sharedserver), injects the
reach-for-crib directive into the system prompt, and ships the /crib recall command.
It is the Pi counterpart of cribsheet's
Claude Code and
OpenCode
plugins, and shares the same crib server and sharedserver instance — so Pi, Claude
Code, OpenCode, and Neovim all talk to one refcounted process.
How it fits together
Pi has no MCP of its own. Two pieces give it crib:
pi-mcp-adapter— the Pi package that speaks MCP. It reads its ownmcp.jsonand connects tocribover HTTP. Install it too (pi install npm:pi-mcp-adapter).- This extension — the process + directive + command half:
- Run crib on
session_startviasharedserver use … -- crib --mcp --http …, refcounted and shared across clients; released onsession_shutdownwhenreason === "quit". - Inject the directive on
before_agent_start(analogue of CC'sadditionalContextand OpenCode'ssystem.transform). /crib <topic>— shells out to the crib CLI (note apropos+code lookup) and steers the model to summarise, mirroringcommands/crib.md.
- Run crib on
Stand-down when combiner-served
If a combiner already serves crib (the global MCP_COMBINER switch, or the
per-backend MCP_COMBINER_SERVES_CRIBSHEET override, which wins), the extension does
not launch a standalone backend — the combiner owns crib's lifecycle. The directive
and /crib command still apply, since crib's tools are present via the combiner too. In
that setup you register the combiner with pi-mcp-adapter (see the mcp-companion Pi
extension), not crib directly.
Install
# build
npm --prefix plugins/pi install && npm --prefix plugins/pi run build
# install into Pi (symlink the package dir; uses "main": dist/index.js)
ln -sfn "$PWD/plugins/pi" ~/.pi/agent/extensions/cribsheet
# MCP transport (skip the mcp.json when crib is combiner-served)
pi install npm:pi-mcp-adapter
cp plugins/pi/mcp.json.example ~/.config/mcp/mcp.json # standalone only
Build-free live dev: pi -e ./plugins/pi/src/index.ts.
Configuration
PI_CRIBSHEET_* env namespace (mirrors the OpenCode plugin's OPENCODE_CRIBSHEET_*):
| Variable | Default | Effect |
|---|---|---|
PI_CRIBSHEET_PORT |
7732 |
HTTP port crib serves on. |
PI_CRIBSHEET_HOST |
127.0.0.1 |
HTTP host crib binds. |
PI_CRIBSHEET_COMMAND / _ARGS |
(auto: crib on PATH) |
Override the crib invocation. |
PI_CRIBSHEET_CHECKOUT |
— | Checkout for uv run --project <checkout> crib. |
PI_CRIBSHEET_NAME |
cribsheet |
sharedserver instance name. |
PI_CRIBSHEET_GRACE |
1h |
sharedserver grace period. |
PI_CRIBSHEET_LOG |
— | Capture crib's stdout/stderr (sharedserver --log-file); "none"/unset disables. |
PI_CRIBSHEET_MANAGE |
true |
false → don't launch (assume crib runs elsewhere). |
PI_CRIBSHEET_INSTRUCTIONS |
true |
false → don't inject the directive. |
PI_CRIBSHEET_COMMAND_ENABLE |
true |
false → don't register /crib. |
PI_CRIBSHEET_NOTIFY |
true |
false → don't surface messages via the Pi UI. |
MCP_COMBINER / MCP_COMBINER_SERVES_CRIBSHEET |
— | Combiner serves crib → don't launch a standalone backend. |
SHAREDSERVER_BIN / SHAREDSERVER_LOCKDIR |
(auto) | sharedserver binary / lock dir. |
Development
npm install && npm run typecheck && npm run build
src/sharedserver-resolve.ts is vendored byte-identical from
georgeharker/sharedserver via
scripts/sync-vendored.sh — edit upstream, re-sync here.
License
MIT © George Harker