OpenAlma

Gives an AI companion a soul. Local-first.

View the Project on GitHub

How memory works

It’s not a transcript

OpenAlma doesn’t store what you said. It reads your conversations 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.

Four extraction lenses, plus episodes

Not everything deserves the same kind of storage.

Profile — who you are as a person. 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 — how you communicate. Whether you go quiet before saying something hard. Whether you joke when things get heavy. Patterns that are distinctly you.

Social — the people in your life. Friends, family, coworkers, anyone you talk about. The relationship texture that makes your conversations make sense.

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.

Photos are memories too

A photo you share becomes a memory like anything else — held as what it shows rather than as pixels. Ask her about something you saw and she searches those separately from what was said, so an image isn’t drowned out by conversation that happened to use the same words.

Dossiers

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. Each dossier carries a written summary of what she understands about that subject, and the summary gets rewritten as new memories land in it.

This is what lets her answer a question about someone without re-reading every conversation you ever had. She reads the dossier.

When memories get extracted

Extraction runs on its own as you talk. Each turn the system checks whether enough unmemorized conversation has piled up, and when it has, it reads that stretch, pulls out what matters, and stores it.

A long gap also triggers it — end a conversation, come back the next morning, and what you talked about has already been processed.

If you don’t want to wait for either, you can force extraction manually at any time.

What gets forgotten on purpose

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.

Exact repeats can be reinforced rather than duplicated. Broader semantic deduplication is currently disabled while its Gemini threshold is calibrated, so similar memories may remain separate. When something you said earlier turns out to be wrong or outdated, the old version can be retired as the new understanding takes its place.

Honest limitations

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.