Gives an AI companion a soul. Local-first.
OpenAlma’s memory isn’t just a transcript. It keeps conversation sources and extracts what matters — the kind of thing a close friend would carry forward, not a court reporter.
The difference matters. A transcript gets unwieldy fast and is full of noise. Extracted memory stays sparse and meaningful. She remembers that you’re anxious about your job situation, not the exact words you used on a Tuesday to describe it.
Not everything deserves the same kind of storage.
Profile — what you say about yourself and your life: your values, your fears, your sense of humor, what you keep returning to. Things that would still be true about you a year from now.
Knowledge — things you’ve learned or explored together. Not general trivia — things where the topic actually connects to your life.
Behavior — what you do rather than say: how you communicate. Whether you go quiet before saying something hard. Whether you joke when things get heavy. Patterns observed over time, not claimed in a sentence.
Social — the texture between people: how you and your sister actually are with each other, what your friendship with someone is built on. The people themselves are tracked separately; this is the relating.
The fifth stored type is Episodes — short titled summaries of what happened in each part of a conversation. Episodes are created before the four lenses run, then placed in front of the full transcript to help each lens judge what mattered.
A photo you share through Iris, or a frame she chooses to keep from a Video call, becomes a memory: a description of what it shows, plus a stored impression of the image itself that search can match against directly. Ask her about something you saw and she searches photos in their own lane, apart from what was said — so an image isn’t drowned out by conversation that happened to use the same words, and it can be found by what it looked like, not only by the words in its description.
On top of those memories sits a second layer. Related memories are filed together into dossiers: lore about people, places, projects, and shared history; topics she keeps returning to; and goals she’s holding. Two exist from the start — one about herself, one about you — and every other one emerges on its own as memories accumulate.
Each dossier carries a written summary of what she understands about that subject, in her own first person, with citations pointing back to the memories it was built from. The summary is rewritten when it goes stale, and you can curate which memories belong in Atomic; the prose catches up on the next pass.
This is what lets her answer a question about someone without re-reading every conversation you ever had. She reads the dossier.
Separate from everything she learned from you, she can draw on curated knowledge — written by hand and searched like memory when the conversation touches its theme. The first set covers mental health: rumination, grief, panic, self-criticism, loneliness — steady, internalized understanding rather than clinical quoting. At most one entry comes in per reply. She can tell it apart from her own experience; it’s labeled by its domain.
Automatic conversation extraction waits for a sleep gap — at least three hours of silence within 22:00–08:00, server time — and about 8,000 unmemorized tokens across a Soul’s chats. Then the whole stretch is read as one story. Deleting a SillyTavern chat can also trigger extraction once the token threshold is met. Iris photos are filed as memories right away, without either threshold.
Waiting is deliberate. A day is judged whole — what felt urgent at noon may have dissolved by evening, and the lenses read it with that perspective. If you don’t want to wait (say, after a conversation you want captured now), you can trigger extraction manually at any time.
When ordinary conversation extraction runs, the pending tails of all her chats are gathered and split into episodes by storyline, not by app — including short WhatsApp exchanges. The size threshold counts them together. Stretches she only overheard advance her place in the conversation but extract nothing: she heard them, they aren’t hers to remember.
OpenAlma is deliberately sparse. It doesn’t try to capture everything — it tries to capture what’s worth keeping. A good memory system, like a good friend, knows that forgetting is part of thinking clearly.
Repeats and near-repeats are folded into one memory instead of piling up. Near-duplicate merging uses a conservative threshold matched to the shipped embedding model, and identical wording from two different people never collapses. When something you said earlier turns out to be wrong or outdated, the old version retires as the new understanding takes its place, and she can still look back at what she used to believe.
It’s not perfect. Extraction misses things, occasionally misreads emphasis, and sometimes surfaces connections that aren’t quite right. Think of it as a thoughtful approximation, not a transcript. It gets better as the relationship deepens and the categories fill out.
If extraction or ordinary consolidation fails, new activity pauses for that soul. The launcher keeps the failure visible and offers manual Retry; it does not quietly pay for another attempt. Other souls continue, and input stays with the client rather than becoming an invented reply from her.