{"_id":"@abarisain/pi-markdown-memory","name":"@abarisain/pi-markdown-memory","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@abarisain/pi-markdown-memory","version":"0.1.0","description":"No bullshit memory store for the pi coding agent. Folders & Markdown, global & project stores, that's it","license":"MIT","author":{"name":"Arnaud Barisain-Monrose"},"contributors":[{"name":"Mario Zechner","url":"pi-code memory, the index format this is based on"},{"name":"ilovepixelart","url":"pi-code"}],"type":"module","main":"index.ts","keywords":["pi-package","pi","pi-coding-agent","pi-extension","memory","markdown"],"repository":{"type":"git","url":"git+https://github.com/abarisain/pi-plugins.git","directory":"plugins/pi-markdown-memory"},"homepage":"https://github.com/abarisain/pi-plugins/tree/main/plugins/pi-markdown-memory","peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-ai":"*"},"peerDependenciesMeta":{"@earendil-works/pi-coding-agent":{"optional":true},"@earendil-works/pi-ai":{"optional":true}},"pi":{"extensions":["index.ts"]},"publishConfig":{"access":"public"},"_id":"@abarisain/pi-markdown-memory@0.1.0","gitHead":"14892777e6c060ce32bb8a7886436078e65ccc92","bugs":{"url":"https://github.com/abarisain/pi-plugins/issues"},"_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-xzvIBCDCx8yDOgZbjpmhV7aDvla4mtorA+w/p3d7L8gUmvxSyGvBaca4rvJkDcFd20EcnOO38C0fzAZI8fIn8A==","shasum":"6d4b2f4c1d0ae62e197e1010f580398969835238","tarball":"https://registry.npmjs.org/@abarisain/pi-markdown-memory/-/pi-markdown-memory-0.1.0.tgz","fileCount":4,"unpackedSize":28503,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDIXE5DUYeI8vnLxWJoh4KJ2kOmH7ATEVhAAjR9kj6WYwIgI74+2ZOY9ney3BieJVq0ma30JsdR6rz0Gxe0nulMFgQ="}]},"_npmUser":{"name":"arnaudbarisain","email":"abarisain@gmail.com"},"directories":{},"maintainers":[{"name":"arnaudbarisain","email":"abarisain@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-markdown-memory_0.1.0_1787131643188_0.2886975116050732"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-19T09:27:22.605Z","0.1.0":"2026-08-19T09:27:23.341Z","modified":"2026-08-19T09:27:23.683Z"},"maintainers":[{"name":"arnaudbarisain","email":"abarisain@gmail.com"}],"description":"No bullshit memory store for the pi coding agent. Folders & Markdown, global & project stores, that's it","homepage":"https://github.com/abarisain/pi-plugins/tree/main/plugins/pi-markdown-memory","keywords":["pi-package","pi","pi-coding-agent","pi-extension","memory","markdown"],"repository":{"type":"git","url":"git+https://github.com/abarisain/pi-plugins.git","directory":"plugins/pi-markdown-memory"},"contributors":[{"name":"Mario Zechner","url":"pi-code memory, the index format this is based on"},{"name":"ilovepixelart","url":"pi-code"}],"author":{"name":"Arnaud Barisain-Monrose"},"bugs":{"url":"https://github.com/abarisain/pi-plugins/issues"},"license":"MIT","readme":"# @abarisain/pi-markdown-memory\n\nNo bullshit memory store. Folders & Markdown, global & project stores, that's it.\n\nOne file per memory, one line per file in a `MEMORY.md` index. Only the index goes\ninto the prompt, so the store has no size limit — the agent reads a body when a line\nlooks relevant.\n\n```\n~/.pi/agent/memory/\n├── MEMORY.md                     # the index, loaded every turn\n├── user-prefers-tabs.md\n├── grafana-dashboards.md\n└── projects/\n    └── -home-you-code-app-3f2a1b9c/\n        ├── MEMORY.md             # loaded only while working in that repo\n        └── migration-plan.md\n```\n\n## Two layers\n\n**Global** is what stays true wherever the agent works: who you are, this machine,\nstanding preferences. **Project** is keyed to the repository root, so subdirectory\nsessions and worktrees share one store, and it is only in the prompt while the agent\nis in that repo.\n\nSaving defaults to project inside a repository and global outside one; the agent can\nsay which explicitly.\n\n## The index\n\n`MEMORY.md` is the point. It is the only thing loaded every turn, so each line is a\nhook — name, then a one-line description — and the body stays on disk until something\nreads it. Both indexes together are bounded at 200 lines / 25KB: the project layer\ngets what the global one leaves, so adding a second store never doubles the prompt.\n\nA save that would push an index past the bound is refused rather than silently\ndropped, which is the agent's cue to merge overlapping memories. Updating an existing\nentry is always allowed.\n\n## Tool\n\n`memory` — `save`, `read`, `delete`, `list`, `check`, `reindex`.\n\n`save` takes a `name`, a `description` (the index line), the `content`, an optional\n`type` (`user` / `feedback` / `project` / `reference`) and an optional `scope`.\nFrontmatter is written for you.\n\n`check` reports index lines with no file and files with no index line. `reindex`\nrebuilds an index from the files' own frontmatter. Both exist because an index that\ndrifts from its files is a store that has silently lost memories: reads fail one at a\ntime while the index still looks healthy.\n\n## Install\n\n```bash\npi install npm:@abarisain/pi-markdown-memory\n```\n\nRestart pi afterwards.\n\n| Variable | Effect |\n|---|---|\n| `PI_MEMORY_DIR` | Move the store root (absolute or `~/…`). Default `$PI_CODING_AGENT_DIR/memory` |\n| `PI_MEMORY_DISABLED` | `1` to load and write nothing |\n\n## Credit\n\nThe index format, the overflow rule and the tool shape come from the memory extension\nin [pi-code](https://github.com/ilovepixelart/pi-code) (MIT), which is worth using\nwhole if you want the rest of the Claude Code experience in pi. This packages that\nidea standalone and adds the second layer, the frontmatter contract and the index\nrepair.\n","readmeFilename":"README.md","_rev":"1-20d3171161c3d58b850e867a4d96c189"}