Complete context stack for pi — persistent memory, session history, and knowledge search in one install.
TypeScript
83
32 commits
updated May 12, 2026
Complete context stack for pi. One install gives your agent persistent memory, session history, and local knowledge search.
| Layer | Package | What it does |
|---|---|---|
| Memory | @samfp/pi-memory | Learns preferences, project patterns, and corrections. Injects relevant facts into every session. |
| Session history | pi-session-search | Indexes past coding sessions. Search by topic to find previous work, decisions, and debugging context. |
| Knowledge base | pi-knowledge-search | Indexes local files (markdown, text, docs). Semantic search over your notes, documentation, and vault. |
Together, these give pi three layers of context about you:
pi install npm:pi-total-recall
That's it. All three extensions are active immediately.
Requires Node 24+.
pi-session-searchandpi-knowledge-searchuse SQLite FTS5 vianode:sqlite, which is compiled into Node 24 but not Node 22. On Node 22 you'll seeError: no such table: sessionsat startup — upgrade Node and restart pi.
After installing, your agent gets these tools:
| Tool | Description |
|---|---|
memory_search | Search stored facts and preferences |
memory_remember | Store a fact or lesson |
memory_forget | Remove a stored fact or lesson |
memory_lessons | List learned corrections |
memory_stats | Show memory statistics |
| Tool | Description |
|---|---|
session_search | Semantic search over past sessions |
session_list | Browse sessions by date, project, or status |
session_read | Read the full conversation from a past session |
| Tool | Description |
|---|---|
knowledge_search | Semantic search over local files |
Each component has its own configuration in ~/.pi/agent/settings.json. See the individual package READMEs for details:
{
"memory": {
"lessonInjection": "selective"
}
}
Point it at your notes directory:
{
"knowledge-search": {
"paths": ["~/Documents/Notes"]
}
}
Works out of the box — indexes your existing pi sessions automatically.
By default, all three components write to user-global locations under ~/.pi/ — which is usually what you want, because memory, sessions, and a notes index are normally global across projects.
If you want a project's memory/index to be isolated — e.g. a throwaway prototype, a client repo, or an experimental agent setup — drop a pi-total-recall.localPath key into {project}/.pi/settings.json:
{
"pi-total-recall": {
"localPath": ".pi/total-recall"
}
}
Path resolution: relative paths are resolved against the project root (where you run pi), not the .pi/ directory. So ".pi/total-recall" above resolves to {project}/.pi/total-recall/, and "./data" would resolve to {project}/data/. Use an absolute path (e.g. "/Users/you/shared-index") if you want to pin outside the project.
The key is case-sensitive (localPath, lowercase l). A misspelled key like LocalPath is silently ignored — v1.3.2+ of the bundled packages will log a console.error warning when this happens.
That single key cascades to all three packages:
| Package | Cascaded path |
|---|---|
@samfp/pi-memory | {project}/.pi/total-recall/memory/memory.db |
pi-session-search | {project}/.pi/total-recall/session-search/ |
pi-knowledge-search | {project}/.pi/total-recall/knowledge-search/ |
You can also override any single package independently — package-specific keys win over the cascade:
{
"pi-total-recall": { "localPath": ".pi/total-recall" },
"pi-knowledge-search": {
"localPath": "/some/other/path" // overrides just this one
}
}
Resolution order (highest priority first) for every package:
KNOWLEDGE_SEARCH_CONFIG, etc.)pi-<package>.localPath in {cwd}/.pi/settings.jsonpi-total-recall.localPath cascade~/.pi/pi-session-search relocates only its own config and index — the session source directories (~/.pi/agent/sessions, ~/.pi/agent/sessions-archive) are pi's own files and remain global. That's where pi writes sessions, so making them project-local would point the tool at an empty directory. Use the project filter on session_search and session_list if you want to scope results to one project.
When using pi-total-recall.localPath:
rm -rf {project}/.pi/total-recall # nukes memory, session-search config+index, knowledge-search config+index
If you only want one or two components, install them directly:
pi install @samfp/pi-memory
pi install pi-session-search
pi install pi-knowledge-search
MIT
TypeScript
100.0%
Complete context stack for pi — persistent memory, session history, and knowledge search in one install.
TypeScript
83
32 commits
updated May 12, 2026
Complete context stack for pi. One install gives your agent persistent memory, session history, and local knowledge search.
| Layer | Package | What it does |
|---|---|---|
| Memory | @samfp/pi-memory | Learns preferences, project patterns, and corrections. Injects relevant facts into every session. |
| Session history | pi-session-search | Indexes past coding sessions. Search by topic to find previous work, decisions, and debugging context. |
| Knowledge base | pi-knowledge-search | Indexes local files (markdown, text, docs). Semantic search over your notes, documentation, and vault. |
Together, these give pi three layers of context about you:
pi install npm:pi-total-recall
That's it. All three extensions are active immediately.
Requires Node 24+.
pi-session-searchandpi-knowledge-searchuse SQLite FTS5 vianode:sqlite, which is compiled into Node 24 but not Node 22. On Node 22 you'll seeError: no such table: sessionsat startup — upgrade Node and restart pi.
After installing, your agent gets these tools:
| Tool | Description |
|---|---|
memory_search | Search stored facts and preferences |
memory_remember | Store a fact or lesson |
memory_forget | Remove a stored fact or lesson |
memory_lessons | List learned corrections |
memory_stats | Show memory statistics |
| Tool | Description |
|---|---|
session_search | Semantic search over past sessions |
session_list | Browse sessions by date, project, or status |
session_read | Read the full conversation from a past session |
| Tool | Description |
|---|---|
knowledge_search | Semantic search over local files |
Each component has its own configuration in ~/.pi/agent/settings.json. See the individual package READMEs for details:
{
"memory": {
"lessonInjection": "selective"
}
}
Point it at your notes directory:
{
"knowledge-search": {
"paths": ["~/Documents/Notes"]
}
}
Works out of the box — indexes your existing pi sessions automatically.
By default, all three components write to user-global locations under ~/.pi/ — which is usually what you want, because memory, sessions, and a notes index are normally global across projects.
If you want a project's memory/index to be isolated — e.g. a throwaway prototype, a client repo, or an experimental agent setup — drop a pi-total-recall.localPath key into {project}/.pi/settings.json:
{
"pi-total-recall": {
"localPath": ".pi/total-recall"
}
}
Path resolution: relative paths are resolved against the project root (where you run pi), not the .pi/ directory. So ".pi/total-recall" above resolves to {project}/.pi/total-recall/, and "./data" would resolve to {project}/data/. Use an absolute path (e.g. "/Users/you/shared-index") if you want to pin outside the project.
The key is case-sensitive (localPath, lowercase l). A misspelled key like LocalPath is silently ignored — v1.3.2+ of the bundled packages will log a console.error warning when this happens.
That single key cascades to all three packages:
| Package | Cascaded path |
|---|---|
@samfp/pi-memory | {project}/.pi/total-recall/memory/memory.db |
pi-session-search | {project}/.pi/total-recall/session-search/ |
pi-knowledge-search | {project}/.pi/total-recall/knowledge-search/ |
You can also override any single package independently — package-specific keys win over the cascade:
{
"pi-total-recall": { "localPath": ".pi/total-recall" },
"pi-knowledge-search": {
"localPath": "/some/other/path" // overrides just this one
}
}
Resolution order (highest priority first) for every package:
KNOWLEDGE_SEARCH_CONFIG, etc.)pi-<package>.localPath in {cwd}/.pi/settings.jsonpi-total-recall.localPath cascade~/.pi/pi-session-search relocates only its own config and index — the session source directories (~/.pi/agent/sessions, ~/.pi/agent/sessions-archive) are pi's own files and remain global. That's where pi writes sessions, so making them project-local would point the tool at an empty directory. Use the project filter on session_search and session_list if you want to scope results to one project.
When using pi-total-recall.localPath:
rm -rf {project}/.pi/total-recall # nukes memory, session-search config+index, knowledge-search config+index
If you only want one or two components, install them directly:
pi install @samfp/pi-memory
pi install pi-session-search
pi install pi-knowledge-search
MIT
TypeScript
100.0%