Save decisions, insights, preferences, and procedures as durable memories. Fires when the conversation produces knowledge worth keeping across sessions.
Save proactively when the conversation produces knowledge worth keeping. Do not wait to be asked.
Decision with rationale: Compared options, chose with reasoning, trade-off resolved.
Repeatable procedure: Step-by-step workflow the user will need again.
Lesson from debugging: Root cause found, unexpected behavior explained, prevention identified.
Durable preference: Coding style, tooling choice, naming convention, architectural stance.
Plan for future sessions: Agreed next steps, phased approach, deferred work items.
Skip: Routine fixes, work in progress, simple Q&A, generic information.
nmem --json m add "content" -t "Title" --unit-type <type> -i <importance>
fact, preference, decision, plan, procedure, learning, context, event
| Range | Meaning | Examples |
|---|---|---|
| 0.8-1.0 | Major | Architecture decisions, production incident fixes, core preferences |
| 0.5-0.7 | Useful | Debugging insights, workflow improvements, project conventions |
| 0.3-0.4 | Minor | Small tips, one-off observations, context notes |
# High-value decision
nmem --json m add "Chose PostgreSQL over MongoDB: need ACID for transaction integrity and complex joins across order/inventory tables" \
-t "Database: PostgreSQL for ACID" \
--unit-type decision -i 0.9
# Procedure
nmem --json m add "Deploy sequence: run migrations first, then canary at 5%, watch error rate for 10 min, promote to full rollout" \
-t "Production Deploy Procedure" \
--unit-type procedure -i 0.7
# Preference
nmem --json m add "Prefer named exports over default exports in TypeScript. Makes refactoring and IDE navigation faster." \
-t "TS: Named Exports Preferred" \
--unit-type preference -i 0.6
Search first to avoid duplicates. If a memory already captures the same concept and the new information refines it, update instead of creating a new entry:
nmem --json m update <memory_id> -c "updated content"
One strong memory is better than three weak ones.
At the end of a substantial task, explicitly review whether one durable memory should be added or updated.
Good (atomic, actionable):
Poor: Vague "fixed some bugs", conversation transcript dumps, overly broad summaries.
Do not distill routine work. If the user wouldn't miss it when it's gone, it shouldn't exist. Quality over quantity: 1-3 distilled memories per session is typical.