Commands
Every command supports --help for its full flag list:
pmb <command> --help # e.g. pmb recall --help
pmb connect --help
Every command is fully offline unless tagged
LLM — the few commands that need an LLM
backend (Claude CLI / ANTHROPIC_API_KEY / Ollama, see
LLM-powered commands). A
LLM optional tag means the command runs
offline by default and only calls an LLM if you opt in.
Nothing leaves your machine except the workspace-sync commands you run on purpose.
Setup & connect
| Command |
What it does |
pmb setup [agent] |
Recommended one-command setup. Detect your agent, pick the memory model, wire MCP + rules + hooks, warm the engine, and start the shared daemon - in one guided flow. Omit agent to auto-detect. |
pmb setup --all |
Wire every detected agent at once (Claude Code + Codex + Cursor + …), all sharing the one warm daemon. |
pmb connect <agent> |
Wire PMB into an agent's MCP config + install its rules. Agents: claude-code, cursor, codex, windsurf, gemini, vscode, zed, opencode, continue. Points at the shared daemon by default (codex via the pmb mcp proxy bridge); --stdio keeps a per-client server. |
pmb connect <agent> --active |
Same, but installs proactive-logging rules: the agent records its own decisions / lessons / what it did during coding, without waiting for "remember". Recall stays lazy. |
pmb connect --list |
Show every supported agent and where its config lives. |
pmb connect <agent> --workspace NAME |
Point several agents at one shared workspace. |
pmb connect <agent> --probe |
After wiring, spawn pmb-mcp briefly to confirm it starts. |
pmb model [light\|balanced\|best] |
Switch the embedding model later: download + re-embed memory + restart the daemon in one step. Omit the arg for the interactive menu. |
pmb daemon start\|stop\|status\|restart |
Manage the ONE warm daemon (Engine + model + LanceDB) that N clients share for instant recall. |
pmb daemon kill-all |
Stop the daemon AND kill every registered PMB process, then clear the registry - the reset when stray/duplicate warm processes pile up. |
pmb mcp serve / pmb mcp status |
Run a shared HTTP MCP server (team mode) / list running PMB servers + their RAM. |
pmb mcp proxy |
(Advanced; auto-wired for codex.) Lightweight stdio↔daemon bridge so a stdio-only host shares the warm daemon instead of loading its own model. |
pmb doctor |
Diagnose the install + runtime state. --remote user@host:/path prints an SSH-tunneled MCP snippet. |
pmb warmup |
Pre-load the model + BM25 + LanceDB so the next recall is fast (avoids the ~1-2 s cold start). |
pmb init [--name NAME] |
Initialize a workspace in the current directory (optional - a workspace auto-detects from cwd). |
pip install pmb-ai # or: npx pmb-ai (then the command is `pmb-ai`)
pmb setup # guided: detect agent, pick model, wire + warm + daemon
# or wire everything you have at once (one shared warm daemon):
pmb setup --all
# restart the agent
Capture (write memory)
| Command |
What it does |
pmb note "..." |
Jot a memory from the terminal. --pin to keep it forever, --ttl 30d to auto-expire. |
pmb learn "..." |
Record a durable lesson ("this repo uses pnpm, never npm"). --failed records a failure to avoid repeating. |
pmb fact "..." |
Record a standalone fact. --ttl 30d optional. |
pmb remember "query" "response" |
Store a Q/A pair. |
pmb import <source> <path> |
Import existing history: chatgpt, claude, mem0, markdown (Obsidian vault). Rebuilds the graph after. |
pmb watch <file\|dir> |
Auto-capture new paragraphs from a notes file/folder. --once for cron. |
pmb note "decided to use Postgres for JSONB" --pin
pmb learn "always run make fmt before committing"
pmb import chatgpt ~/Downloads/conversations.json
Recall & explore (read memory)
| Command |
What it does |
pmb recall "query" [-k 5] |
Search memory. Each hit shows source, confidence, freshness, and markers for lessons and failures. |
pmb why "query" |
Explain the ranking - which of the 14 PAMVR rules fired and each multiplier. |
pmb overview "<topic>" |
Structured "what do I know about X?" - key facts & decisions, lessons, failures, goals, timeline, related topics. Also an MCP tool so the agent can get up to speed on a topic in one call. |
pmb timeline |
Chronological, day-grouped view (--days, --type, --newest-first). |
pmb insights |
Analytics: totals, type breakdown, weekly growth, top topics, lessons/goals counts. |
pmb digest [today\|week\|month] |
Recap of recent memories (--days N). |
pmb audit |
"What does PMB know about me?" - grouped, read-only view + memory-health signals. |
pmb lessons |
List the durable lessons & failures (procedural memory). |
pmb reminders |
Goals that are overdue or due soon (--within N, --all). |
pmb tags / pmb tagged <tag> |
List tags / list memories in a tag "collection". |
pmb list [-n 20] [--type T] |
Recent events. |
pmb stats |
Workspace stats. |
pmb graph stats\|top\|neighbors\|rebuild |
Inspect the entity/association graph. |
pmb recall "where do I live now" -k 5
pmb why "what port did we choose"
pmb timeline --days 7
pmb insights
Own-your-data & lifecycle
| Command |
What it does |
pmb export [--format markdown\|json] [--out FILE] |
Dump all memory to readable text (--include-archived). Plain/unencrypted. |
pmb tag <ulid> <tags...> / pmb untag |
Tag / untag a memory for local organization. |
pmb ttl <ulid> 30d\|clear |
Set / clear an expiry on a memory. |
pmb prune-expired |
Archive memories past their TTL (run from cron). |
pmb forget <ulid> |
Archive one memory (reversible). |
pmb delete <ulid...> |
Archive one or more memories after a preview and confirmation. Reversible. |
pmb delete <ulid...> --hard |
Permanently purge matching memories, vectors, and graph links after confirmation. |
pmb restore <ulid> |
Restore a soft-deleted or archived memory. |
pmb forget-topic <topic> |
Archive everything about a topic in one command (--dry-run, --yes, --in content\|tag\|source). |
pmb pin <ulid> |
Pin a memory (max importance, never auto-archived). |
pmb snapshot create\|list\|restore |
Local, offline, timestamped workspace snapshots. |
pmb decay |
Apply the forgetting curve (lowers importance, archives stale). |
pmb dedupe LLM optional |
Deduplicate. Offline cosine sweep by default; --run-pending uses an LLM for borderline pairs. |
pmb compact |
Move old archived events to cold storage + VACUUM. |
pmb export --format json --out memory.json
pmb delete 0193abc12345_deadbeef
pmb restore 0193abc12345_deadbeef
pmb forget-topic project-x --dry-run
pmb snapshot create --note "before refactor"
Sync & backup (only these touch the network - and only when you run them)
| Command |
What it does |
pmb workspace init [--remote URL] |
Turn the workspace into a git repo. |
pmb workspace push / pull / status |
Sync memory to/from a git remote (cross-device, team, backup). |
pmb workspace clone <url> <name> |
Clone a remote workspace locally. |
pmb workspace export <out> [--key-file] |
Encrypt the workspace into one portable bundle (scrypt + AES/HMAC) - safe even on a public remote. Needs pip install 'pmb-ai[crypto]'. |
pmb workspace import <bundle> <name> |
Decrypt a bundle into a local workspace. |
pmb workspaces |
List all known workspaces. |
Config & UI
| Command |
What it does |
pmb config list |
Every setting, its value, and where the value comes from (--only-overridden). |
pmb config get\|set\|reset <key> [value] |
Read / change / reset a setting (workspace or --global). |
pmb tune |
TUI to browse + edit all 67 settings live (needs textual). |
pmb tui |
Full 5-tab terminal workspace (Memory / Recall / Stats / Dedup / Tune). |
pmb dashboard |
Local web dashboard on 127.0.0.1:8765 (graph, events, perf, recall debugger). |
pmb config set recall.top_k 8
pmb config list --only-overridden
Pro: tune what --active logs
pmb connect --active builds the agent's rules from these toggles (all default
on). Change them, then re-run pmb connect <agent> --active to regenerate.
| Key |
Effect |
agent.active_mode |
When on, pmb connect / pmb setup install the proactive rules by default (no --active flag needed) |
agent.log_decisions |
Log design/code decisions |
agent.log_completed |
Log what was done (features / fixes) |
agent.log_lessons |
Log project conventions / corrections |
agent.log_failures |
Log failures (don't-repeat) |
agent.log_goals |
Log the user's goals / intents |
agent.apply_lessons |
Self-improvement loop - recall + apply past lessons/failures before a task, so the agent gets better at this project over time |
agent.context_continuity |
Tell the agent to call session_brief to re-orient after its own context compacts in a long session |
pmb config set agent.log_goals false # don't log goals
pmb connect codex --active # regenerate rules
The dashboard's memory graph and recall's graph-boost step both lean on the
entity extractor - the thing that turns event text into nodes
(file / tech / person / concept). PMB ships three backends; swap one
at runtime, no code changes:
| Backend |
What it does |
Cost |
Deps |
regex (default) |
Fast file/tech regex + improved stop-list + multi-word phrase detection ("Claude Code" → one node). Fully offline. |
~0 ms |
none |
spacy |
Adds POS-filter (noun/proper-noun only) and real NER (PERSON / ORG / GPE / PRODUCT). Cleanest no-LLM option. |
~3-10 ms |
pip install spacy + python -m spacy download en_core_web_sm |
llm:claude LLM |
One Claude Code CLI call per event - returns clean named-entity JSON. Same idea as graphify / Penpax. Falls back to regex on timeout / error. |
~1-3 s/event |
claude CLI on PATH |
llm:ollama LLM |
Same, but via a local Ollama model (default qwen2.5:3b). Fully offline if you have a model pulled. |
~1-4 s/event |
ollama CLI + a model |
llm:codex LLM |
OpenAI Codex CLI. |
~1-3 s/event |
codex CLI on PATH |
# default - leave it at regex unless the noise bugs you
pmb config set graph.extractor regex
# nicer no-LLM extraction
pip install spacy && python -m spacy download en_core_web_sm
pmb config set graph.extractor spacy
# cleanest knowledge graph (LLM at write time)
pmb config set graph.extractor llm:claude # uses your Claude Code login
pmb config set graph.llm_max_concepts 5
pmb config set graph.llm_timeout_s 30
# hide one-off noise in the dashboard graph (DB stays intact)
pmb config set graph.viz_min_mentions 2
LLM backends never block the write path: if the CLI times out or returns
malformed output, the record falls back to the regex extractor for that one
event. Recall still works exactly the same - the choice only changes WHICH
entities end up as graph nodes, not the recall pipeline.
Ollama (optional fully-local LLM)
| Command |
What it does |
pmb ollama status |
Health check + list installed models. |
pmb ollama use <profile> |
Select a model profile (tiny / balanced / quality). |
pmb ollama test |
Smoke-test the local model. |
Ollama is optional - PMB works fully offline without any LLM. It's only used
by the LLM-powered commands below (and only if you choose it over Claude
CLI / Anthropic).
LLM-powered commands
These are the only commands that need an LLM backend (Claude CLI in PATH /
ANTHROPIC_API_KEY / Ollama). They run off the recall hot path - recall
itself never calls an LLM.
| Command |
What it does |
pmb consolidate LLM |
Sleep-stage consolidation: cluster related memories, extract one rule per cluster. |
pmb reflect LLM |
For each event, an LLM asks "why does this matter?" and stores searchable bridges for multi-hop queries. |
pmb distill LLM |
Extract durable lessons/failures from a session's events automatically. |
pmb arcs cluster LLM |
Cluster events into narrative threads ("Postgres adoption journey"). |
pmb dedupe --run-pending LLM |
Resolve borderline duplicate pairs via LLM. |
pmb consolidate --backend auto # auto = Claude CLI > Anthropic > Ollama
pmb distill # turn a session into lessons
Maintenance
| Command |
What it does |
pmb regraph |
Rebuild the entity/edge graph from active events. |
pmb prune-graph |
Drop weak co-occurrence edges to keep recall fast on large workspaces. |
pmb reindex |
Re-embed all events (after switching the embedding model). |
pmb rehearse |
Spaced-repetition refresh of important-but-idle memories. |
pmb session start\|end\|current\|brief |
Session management. brief = digest of what was decided/done/learned this session (re-orient after a long session or context loss). Also an MCP tool session_brief the agent calls when it loses the thread. End can auto-distill lessons if enabled. |
pmb sync [--days N] |
Capture git commits into memory. |
pmb schedule |
Print OS scheduler config (cron / Windows schtasks) for background jobs. |
Hooks & ambient memory
Hooks force-feed PMB at the protocol level, so memory works without the
model remembering to call anything. pmb hooks install claude-code wires
all four lifecycle hooks; Codex and MCP-only hosts get the equivalent via
their own mechanisms (check pmb hooks capabilities).
| Command |
What it does |
pmb hooks install <agent> |
Wire the lifecycle hooks. Claude Code: UserPromptSubmit + PostToolUse + SessionStart + Stop. Codex: a notify → pmb codex-notify. |
pmb hooks list |
Show which hooks are installed. |
pmb hooks capabilities |
What ambient mechanism each agent supports: hooks (Claude Code) / rollout (Codex) / mcp-only (git observer). |
pmb hooks uninstall <agent> |
Remove the hooks. |
pmb auto-context "..." |
Preview the per-turn memory a UserPromptSubmit hook would inject. |
pmb session-restore [-m MIN] |
Preview the "where you left off" digest a SessionStart hook injects after a compaction. |
pmb lesson-followcheck --dry-run |
Preview deterministic follow-through scoring for surfaced lessons. |
pmb autowrite [--dry-run] LLM optional |
Ambient auto-write for the current turn: if the agent didn't call a record_* tool, synthesize ONE activity entry from observed actions. No-op unless autowrite.enabled. Uses an LLM only if autowrite.synthesizer is an LLM backend - the default template needs no model. |
pmb track-action |
(Hook-invoked.) Append one observed action to the ambient journal - the PostToolUse hot path (single SQLite INSERT, no model). |
pmb ambient-watch <dir> LLM optional |
Ambient auto-write for MCP-only hosts (Cursor/Zed/VS Code): poll git for changes, auto-write once the project goes idle. |
pmb codex-notify LLM optional |
(Hook-invoked by Codex on agent-turn-complete.) Parse the session rollout, then run ambient auto-write. |
pmb forget-auto [--minutes N] |
Archive memory the ambient layer wrote itself (source=autowrite). Reversible - archived, not hard-deleted. |
Ambient auto-write is ON by default and never duplicates the agent's
own record_* calls - it only fills the gap when the agent stays silent.
A turn is journaled only if it clears an outcome-based quality bar (tests
passed, a failure fixed, a deploy ran), so mechanical churn is dropped.
Tune everything via autowrite.* (pmb config list).
How it embeds into your workflow (no lock-in)
- Lazy by default. After
pmb connect, the agent ignores PMB for general
and coding questions and only touches it on explicit triggers (or, with
--active, when it finishes a meaningful unit of work). You can talk to the
agent normally and never trigger PMB.
- Nothing is forced. Use the agent's native abilities freely; PMB only
chimes in when asked.
- Remove it anytime. Delete the
pmb entry from the agent's MCP config to
disconnect - your stored memory stays on disk and is still readable via the
CLI.