@josephakern/pi-memory
Persistent file-based memory for the pi coding agent: a capped always-injected MEMORY.md index per scope (global and in-repo project) plus on-demand topic files.
Package details
Install @josephakern/pi-memory from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@josephakern/pi-memory- Package
@josephakern/pi-memory- Version
0.3.0- Published
- Jun 14, 2026
- Downloads
- 273/mo · 273/wk
- Author
- josephakern
- License
- MIT
- Types
- extension
- Size
- 146.2 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./extensions/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-memory
Persistent, file-based memory for the pi coding agent. The agent accumulates durable learnings (corrections, build commands, decisions, preferences) across sessions in plain markdown you can read, edit, and diff.
Design rationale and research: docs/design.md, docs/research/.
How it works
Two scopes, mirroring pi's own global/project convention:
~/.pi/agent/memory/ # global: this user, all projects (machine-local)
<repo>/.pi/memory/ # project: committed to the repo, shared with the team
├── MEMORY.md # concise index — injected into every session (capped)
├── <topic>.md # detail files — the agent reads them on demand
└── archive/ # stale content is moved here, never injected
On every prompt, the extension appends a memory block to the system prompt: a short usage preamble plus each scope's MEMORY.md, capped at 200 lines / 8 KiB per scope. The agent saves and updates memories by editing these files with pi's built-in edit/write tools — every change is visible in the tool log and (for project scope) in version control.
Project memory is only read in trusted projects, and the extension never creates directories on its own — files appear the first time the agent saves something.
Install
pi install npm:@josephakern/pi-memory # global, from npm
pi install git:github.com/josephkern/pi-memory # global, from git
pi install -l npm:@josephakern/pi-memory # project-local (.pi/settings.json)
Or for development:
pi -e ./src/index.ts
Usage
There is nothing to set up. Tell pi things like "remember that we use pnpm here" — or just work; the agent saves what seems durable.
/memory— show both scopes: files, sizes, what's injected vs. capped, trust state./memory pages— preview ClawVM-style typed pages derived fromMEMORY.mdand page-table sidecar status./memory verify— rebuildpage-table.jsonlsidecars from currentMEMORY.mdfiles./memory remember global|project <text>— stage an append-only memory write inwriteback-journal.jsonl./memory flush— validate/commit pending writeback operations and rebuild page tables./memory faults//memory traces//memory trace <id>— inspect memory faults and residency/writeback traces./memory off//memory on— toggle injection for the current session.pi --no-memory— start with injection disabled.
Memory files are plain markdown: edit or delete them in your editor any time.
Configuration
Optional config.json in either memory directory (project overrides global, like pi settings):
{
"enabled": true,
"maxInjectLines": 200,
"maxInjectBytes": 8192,
"pageTableInjection": true,
"maxMemoryTokens": 4096,
"traceEnabled": true,
"strictWriteback": true
}
Development
npm install
npm run typecheck
npm test
Provider-backed memory smoke tests are opt-in because they call real pi agents:
npm run test:provider