Oktapod Docs

Memory and personality

See what Oktapod remembers and where it came from, correct or remove memories, and shape how it talks to you.

Oktapod remembers useful facts, preferences, and context between conversations. Every memory records where it came from, so you can check it, correct it, or remove it.

How memory works

You can chat in any language. If you start using more than English, Oktapod may offer to improve how it finds your saved memories. Choose Switch or Keep current. Switching uses more memory on your computer and restarts Oktapod once while search updates in the background. Your saved memories stay. It remembers your answer and does not keep asking.

  • It learns as you go. Tell it things ("I prefer afternoon meetings") and it keeps them. Facts from connected apps, uploaded documents, and finished work can also become memory. Tell it a goal and ask it to keep it ("I have a new goal: run a 10k before December") and it appears under Goals on the web and on your phone.
  • It cites its sources. When an answer relies on memory, it can point to the memory and the original message, document, or app record behind it.
  • It keeps things for a set time. Each memory has a retention class, from a week for short-lived context to a year or more for lasting facts. Active goals and knowledge you saved on purpose do not expire on their own. A quiet month alone does not erase a lasting fact or preference.
  • It stays in its lane. A memory from one person or group chat is only used where it is allowed to be used. That check happens when memories are looked up, not afterwards.
  • It lives on your machine, in Oktapod's local database.

Memory is helpful, not infallible. A memory can be out of date, and a missing result does not prove something never happened. For anything important, follow the citation to the source.

Finding a memory repeatedly does not confirm that it is true. Oktapod keeps your feedback separate from how often it retrieves a memory, and preserves the original source when it reinforces confidence. Memories belonging to different people, sessions, or private contexts remain separate even when their text is identical.

Review what it remembers

Under Advanced settings → Memory search, the local options appear in this order:

  1. Small and fast (XS): the default for lightweight English text search.
  2. Multilingual (E5): recommended for mixed-language text, including English and Albanian.
  3. Multimodal (Gemma): an optional shared model for text, photos, audio, and video.

If you write in another language, Oktapod may offer Switch or Keep current in chat. It first checks that the computer running Oktapod has at least 4 GB of RAM and supports local models. The prompt explains that multilingual search uses about 600 MB more RAM. Switch selects E5 for multilingual text. Oktapod only changes after you choose Switch. It restarts once and updates search in the background. Your saved memories stay, and Keep current is remembered.

On supported computers, media search uses Gemma automatically. With XS, it loads when needed alongside the small text model. With E5, it handles media alongside multilingual text search. With Gemma selected explicitly, text and media share one loaded model. Recordings have timestamped intervals so a match can point to the relevant part. The Memory search card shows its separate indexing progress.

You can also choose an online service or word matching only. An explicit choice stays in effect across updates. Changing models rebuilds the search index; your memories stay.

Open Settings → Apps & permissions → Saved context. You can:

  • search your memories in plain words, such as "my time zone";
  • open a memory to see its source, confidence, and how long it is kept;
  • Edit memory to correct it, with an optional note explaining why;
  • Revoke a memory so it stops being used; and
  • review contradictions, where two memories disagree.

You can also just ask in chat:

What do you remember about my travel preferences?

That is wrong. I moved to Berlin in June.

Forget what I told you about the old project name.

Personal memory and your library

Oktapod keeps two collections apart:

  • Personal memory: your facts, preferences, and work context. Everyday answers use this.
  • Library: reference material saved on purpose for keeps, such as a handbook uploaded with library retention. It is only searched when you ask for it.

This keeps a long reference document from crowding out what Oktapod knows about you. Large documents are split into passages, so an answer can cite the exact part that matched.

People and contacts

When you connect contacts, email, or calendars, Oktapod builds a private map of the people you deal with, so it can answer "how do I know this person?" or "who at Acme did I meet last month?".

It is careful about identity. Records from different sources stay separate, exact matches such as the same email address are linked, and look-alike names are never merged on their own: Oktapod asks you to review the match instead. Casual mentions in a message never create a contact.

Personality

Open Settings → General → Edit personality and describe how Oktapod should work with you, in your own words:

Keep replies short. Use examples. Ask before changing files. Call me Sam.

Your words are added to Oktapod's default instructions in their own section. Edit full instructions opens the complete document for full control. You can discard a draft or undo your last save.

The iPhone and Android apps can edit the same personality and give your agent a name.

Manage memory from the terminal

oktapod memory search "time zone"
oktapod memory list --limit 50 --verbose
oktapod memory review --verbose
oktapod memory correct <memory_id> --value-json '{"timezone":"Europe/Berlin"}' --reason "Moved in June"
oktapod memory revoke <memory_id> --reason "No longer true"
oktapod memory export

memory review also lists contradictions. memory export writes a file of your memories; treat it as sensitive.

Search a specific collection with --corpus personal, --corpus library, or --corpus all. The broader choice never shows memories you are not allowed to see.

Retention in detail

ClassKept forUsed for
ephemeral7 daysShort-lived context.
default30 daysOrdinary working memory.
long_term365 daysLasting facts and preferences.
compliance3,650 daysRecords that need a long audit trail.
manualNo limitKnowledge you saved on purpose.

When a memory expires or is revoked, the passages, search index entries, and links derived from it are removed with it. Revoking a memory does not delete the original email or document in the source app; do that at the source if you need to.

When memory seems wrong

SymptomTry
It forgot somethingSearch Saved context. It may have expired, been revoked, or never been saved. Tell it again.
A wrong fact keeps coming backCorrect or revoke every copy, then check whether a connected app keeps bringing it back.
Search seems incompleteRun oktapod memory status --verbose. Search may be degraded while the index rebuilds.
Two people were mergedAsk Oktapod to explain the contact, or use oktapod memory graph explain and split.

Meeting transcripts and private summaries

Open Meetings to import a VTT, SRT, text, Markdown, or JSON transcript (up to 4 MiB), or attach the file in chat and ask Oktapod to import it. The imported meeting keeps speaker names and ordered lines. Importing the same transcript again opens the existing meeting.

Under Private summaries, review the exact model and where it runs, then allow it to read private content. This permission also covers private email and calendar observations. You can stop summaries there at any time. If the model changes, summaries stop until you approve the new model. From chat, Oktapod can check this permission, propose enabling it through an approval card, or turn it off.

From the CLI:

oktapod meetings import --input /path/to/transcript.vtt
oktapod meetings summaries status
oktapod meetings summaries allow --model <exact-model-ref> --confirm ALLOW_RESTRICTED_MODEL
oktapod meetings summaries stop

Use the exact model shown by status. Each command accepts --json for scripts.