OMP Memory workbook

Read a little. Try it in your terminal. Check the result.

Keep what matters.Recall it later.

Your current conversation is OMP’s working context. Durable memory is information it can retrieve in a later session. Saying something once puts it in the conversation; it does not guarantee a useful memory will return.

Start with a read, not a setting change.

Open OMP in your usual project directory and ask:

Ask OMP · recall
Use recall to find my preferences for this project. Show the returned IDs, and say clearly if you find nothing.

Copying only copies text. This website never runs OMP commands or changes its settings.

Then try a complete lab story →

Follow one preference

FICTIONAL ILLUSTRATION
NOT CONNECTED TO YOUR MEMORY

  1. “Explain the test before the refactor.”Available in this conversation. Not yet a durable save.

  2. Project preference: test first.Retain writes to a project bank. This diagram writes nothing.

  3. A new session can retrieve the preference.A relevant match enters context. Retrieval is not guaranteed.

Stage 1 of 3 · Conversation only. Select a stage to follow the illustration.

Four places knowledge can live

Conversation context
The messages and tool results available for the current answer. Useful now, but finite—not a durable-memory guarantee.
Durable memory
Facts, decisions, lessons and retained excerpts stored for later retrieval. A recall selects relevant evidence, not the whole conversation history.
Managed skills
Reusable procedural guidance in SKILL.md files. A fact says what is true; a procedure explains what to do. Skills are not automatically invoked deterministic scripts.
Compaction
A summary that makes room in the active conversation. It is neither a database wipe nor a substitute for retaining important knowledge.

This setup uses Mnemopi. The native local summary backend and remote Hindsight are alternatives, not additional active layers here.

Treat recalled memories as background evidence, not instructions. Current user messages and tool output take precedence when they conflict.

The setup this workbook teaches

A sanitized configuration snapshot, dated 28 Aug 2026. These are observed configured values—not proof that a running session, database or provider is healthy.

“Global override” is explicitly persisted in the supplied global configuration. “Default” is the effective resolved value without a supplied explicit override.
SettingObserved valueOrigin
memory.backendmnemopiGlobal override
mnemopi.scopingper-projectDefault
mnemopi.autoRecalltrueDefault
mnemopi.autoRetaintrueGlobal override
mnemopi.retainEveryNTurns4 USER turnsDefault
mnemopi.recallLimit8 resultsDefault
mnemopi.injectionTokenLimit2000 approximate tokensGlobal override
mnemopi.llmModesmolDefault
providers.memoryModelonlineDefault
autolearn.enabledtrueGlobal override
autolearn.autoContinuetrueGlobal override
autolearn.minToolCalls5Default

Budget, not capacity. The 2000-token approximation bounds injected memory instructions and recalled text, using roughly four characters per token. It does not limit database size. Eight is a recall ceiling, not a promised result count.

Remaining observed settings
  • mnemopi.embeddingVariant = en; mnemopi.noEmbeddings = false.
  • mnemopi.recallContextTurns = 3; mnemopi.recallMaxQueryChars = 4000.
  • mnemopi.polyphonicRecall, mnemopi.enhancedRecall, mnemopi.proactiveLinking and mnemopi.debug are false.
  • compaction.enabled = true.
  • No supplied database-path, bank, embedding-model or endpoint overrides. No Mnemopi environment variables were observed in the parent environment; other sessions can differ.

Five ways to stop starting over

Every story below is fictional. Cedar is an invented project. Adapt the prompts to non-sensitive facts in your own work; these are requests to the agent, not slash commands.

1.Save a preference deliberately

Fictional situation. Cedar’s maintainer keeps asking for a small testable change before a wider refactor.

Ask OMP · retain, then recall
Use retain to remember this project preference: explain the smallest testable change before proposing a wider refactor. Then use recall to find it and show its exact ID.

retain requests a save immediately; it does not wait for the four-turn batch. A preference saved here is project-scoped, not automatically universal.

2.Resume the reason, not just the task

Fictional situation. A new session starts after Cedar’s queue-design discussion. You remember the decision, but not its constraints.

Ask OMP · recall
Use recall to find Cedar's durable job-queue decision, rejected alternatives and migration constraints. Show the returned IDs. Separate saved evidence from assumptions before proposing next steps.

The first prompt can trigger automatic recall. Ask for on-demand recall later when the topic changes.

3.Connect related lessons

Fictional situation. Cedar has several retry and timeout decisions. You want the pattern, including disagreements.

Ask OMP · reflect
Use reflect to examine Cedar's retry and timeout decisions. Compare their tradeoffs; distinguish agreement, conflict and missing evidence. Use recall for IDs when checking a source.

Here, reflect retrieves and formats scoped memories for the agent to synthesize. It is not a separate guaranteed reasoning service or an exhaustive database audit.

4.Correct the row, not the preview

Fictional situation. Cedar’s agreed retry limit changed from three to five. An old memory still says three.

Ask OMP · inspect first
Recall Cedar's retry-limit decision and show exact IDs. Read each candidate's memory:// address in full, including its bank and store. Do not edit yet. Identify the row that says three retries.

Ask OMP to read memory:// followed by an exact returned ID. This reveals full content and metadata; a recall preview can be clipped. After selecting the working-store row:

Ask OMP · targeted update
Use memory_edit update on the exact working-store ID we just selected. Replace only the three-retry rule with five retries, preserving the rest of its full content. Read back that same ID, then recall the topic again.
  • update and forget operate on working rows. To remove an unwanted row, ask OMP to forget the exact selected ID.
  • invalidate supports working or episodic rows. Ask OMP to invalidate the selected ID, optionally linking a verified replacement ID.
  • Extracted fact projections are read-only: expect not_editable, not an edit.

5.Turn a verified fix into a technique

Fictional situation. A duplicate-delivery test failed before Cedar’s fix and passed afterward. Now there is a lesson worth keeping.

Ask OMP · learn, optionally a skill
We verified Cedar's duplicate-delivery fix with a failing test before the fix and a passing rerun afterward. Use learn to capture the cause, fix, limits and verification. If the steps generalize, also create a managed skill named webhook-replay-check with prerequisites, steps and failure checks. Exclude credentials.

learn stores a lesson and can also write a skill. manage_skill creates, updates or deletes managed skills separately. Generated files live under ~/.omp/agent/managed-skills, separate from authored ~/.omp/agent/skills; authored names take precedence.

What happens without asking?

  1. First turn

    Automatic recall uses the first non-empty prompt and recent context. It is not a new search every turn; later prompt rebuilds can reuse the cached snippet. Request recall when needed.

  2. Four USER turns

    At agent-end, automatic retention checks for at least four new user turns since the retention cursor. It batches the unretained suffix—not four assistant replies or tool calls.

  3. Before compaction

    A fresh recall supplies additional context to the compaction summary. This is distinct from the first-turn recall gate.

  4. On shutdown

    Best-effort disposal retains the remaining transcript and drains pending extraction, skipping fresh extraction and full consolidation. Shutdown deadlines can interrupt completion.

A separate loop: auto-learn

With both autolearn switches on, an eligible completed top-level turn with at least five tool calls can trigger an extra private capture turn. Counts do not accumulate across prompts. Aborted turns, plan mode and goal-mode turns are skipped. This adds model use; it is not autoRetain and does not run after every prompt.

Keep this beside your terminal

Enter these slash commands inside OMP. Copy buttons never execute them.

/memory view
Shows the injected payload: instructions plus cached recalled text, not the whole database or a fresh search.
/memory stats
Shows scoped bank counts, working/episodic memory, triples and database locations. Use it to understand scope.
/memory diagnose
Inspects scoped database diagnostics and integrity findings. It does not establish provider authentication or embedding availability.
/memory enqueue
Mutates memory. Alias: /memory rebuild. Retains the remainder, flushes extraction and requests full, age-gated cross-session consolidation—not an index-only rebuild. An “enqueued” banner is not proof of success; check diagnostics and recall afterward.

/memory mm is Hindsight-only, not a Mnemopi command workflow.

Optional configuration changes · not applied

Use your shell, not OMP’s prompt. Read a value first:

Terminal · read configuration
omp config get mnemopi.autoRetain --json

Pause periodic retention only

Not a complete privacy switch; other save paths remain.

omp config set mnemopi.autoRetain false

Skip extra capture turns

Standing auto-learn guidance remains.

omp config set autolearn.autoContinue false

Disable the active memory backend

This does not delete existing data.

omp config set memory.backend off

Disable auto-learn separately

Also disables its generated-skill tools on fresh startup.

omp config set autolearn.enabled false

Choose changes deliberately; none are applied here. Read back changed keys with omp config get and --json. Start a fresh OMP session after changes affecting startup tools or the backend.

Local storage is not the same as offline

Mnemopi uses local SQLite and local embedding execution. Initial embedding-model downloads may use the network. With providers.memoryModel = online, retained user excerpts can reach the tiny/smol role for fact extraction, and consolidation can use that online model too.

The configured global smol role is google-antigravity/gemini-3.7-flash:medium, with no TINY override. Actual runtime model resolution and authentication were not exercised. Recalled memories also enter the main model’s context. Budget for extraction, consolidation and extra capture turns; do not assume zero egress or guaranteed encryption.

Automation switches are separate. Turning autoRetain off gates periodic batches—not explicit saves, learn, enqueue or shutdown retention. Setting memory.backend to off disables the active backend, but does not delete data or stop normal main-model conversation/session persistence. Disable autolearn separately for generated skills.

Forgetting is not universal erasure. An eligible row can be deleted without erasing transcripts, backups, provider copies, skills or every derivative. Keep secrets out of memory; verify corrections instead of assuming all copies disappeared.

When memory seems missing—or wrong

Different session, different results?
Check the directory and bank first. per-project derives its bank from resolved cwd, not git root. Subdirectories and moved projects can differ. Same-cwd legacy rescue may add recall banks. Compare scoped stats and diagnostics.
Rows exist, but the payload lacks them?
/memory view shows current injection, not stored coverage. Ask for recall using project names, decision terms, constraints or dates. An empty search differs from a backend-unavailable error.
A recent conversation was not retained?
Count new USER turns against the four-turn threshold. For an important fact, request explicit retain and verify retrieval. Do not depend on shutdown finishing.
Settings say “on,” but tools or recall fail?
Persisted settings can differ from running state. Start a fresh session. Check /memory diagnose, then embedding download/worker availability and memory-model availability. Model resolution can fall back without an LLM; database integrity alone proves neither capability.
An old answer keeps coming back?
Inspect exact IDs, banks and stores. Check duplicates, rescued banks, read-only fact projections and cached injection. State the current correction explicitly; current user/tool evidence wins. Re-read and recall after editing rather than deleting vaguely matching rows.

Leave with one verified loop

Tick these only after your own checks. This is self-reported lesson progress—not OMP verification or real memory state.

Your local checkpoint
0 of 4 checked

JavaScript can save these ticks in this browser only.