Memory
What he remembers, where he heard it, and who may change it.
The store
Every memory is a row in your PostgreSQL database with an embedding from a small local model (all-MiniLM-L6-v2, 384 dimensions, run on your Mac). Retrieval blends 70 % vector similarity (pgvector) with 30 % BM25 keyword matching: the first finds “dog” when you asked about pets, the second finds “Biscuit” when you named her.
A memory has a type:
| Type | Example |
|---|---|
fact | “Biscuit is a beagle, born in 2019” |
preference | “Prefers window seats” |
context | “Is in Springfield until Friday” |
instruction | “Don’t reply in the family chat without asking” |
intention | Something Edward decided to do or watch, with a horizon |
Provenance: where he heard it
Every row also records where it came from, so he can tell what you said from what he read or concluded:
- Origin:
heard(you said it),read(he read it in a message, a page or a screen),thought(he concluded or decided it) ordid(an action and its outcome). - About: you, a contact, Edward himself, or the world.
- Tier: observation → belief → knowledge, climbing as it is confirmed. A dated episode (“the flight on 3 June 2026 was late”) stops at belief.
- Source: the conversation, turn, message or page it came from.
Ask “how do you know that?” and he answers from that record, and only from it. The Memory room shows the same record for every row.
Only your words are yours
A memory counts as something you said only when it came from your own turn: your chat, your voice, the widget, Alexa, your self-chat, or your own words in an @Edward ping. A wake, a scheduled reminder, someone else’s message or the household hub’s voice can’t write a memory as yours. And only you can change or forget what you said: from a turn that isn’t yours, his memory tools refuse to touch it. An instruction you want kept for good can be pinned as confirmed, and nothing retires or rewrites a pin.
Standing instructions are your own instructions about yourself. They ride along in every wake, ahead of everything else.
After each turn
- Extraction. A small model (the
backgroundroute, Haiku 5.5) reads the turn and files what is worth keeping with its type, importance, tier and source. A near-duplicate reinforces the existing row instead of adding one. - Use is citation. A memory counts as used only when the answer actually drew on it, not whenever it was retrieved, so popular rows can’t entrench themselves.
- Reflection looks for related memories in the background and hands them to the next turn.
- Search tags make the conversation findable later.
Before a turn, deep retrieval runs a few rewritten queries alongside yours when the message is short or the conversation has run on, and memories linked to the people and places you mention come along too.
Horizons
Some things are meant to lapse. A one-off preference (“no onions in tonight’s order”) or a temporary instruction gets a 30-day horizon; an intention from a wake gets 72 hours unless a scheduled follow-up holds it. Telling him a taste is lasting takes the horizon off.
Upkeep that never deletes
- Weekly decay (Sunday’s nightly) retires stale rows by stamping an end date. It never deletes, and one command undoes a pass. It never retires anything sensitive (pets, health, family, money, someone in distress, and the names in
EDWARD_SENSITIVE_NAMES), stated timeless facts, or your own instructions. - Hourly consolidation links related memories and merges true duplicates, never your own words.
- Contradictions: at most five new flags an hour, one per pair. If neither side is your own word, he keeps both. If one is, he asks you, one “Which is right?” at a time, on Today.
Documents
Beside memories he keeps whole documents: recipes, notes, lists, reference pages, and his own Edward: state page, which he rewrites on Sundays. Documents are searched the same way, and their titles come up in conversation when relevant. Browse them in Memory → Documents.
Forgetting
Ask him to forget something and he first shows the plan: the memories that match (whole words, linked entities, close meanings) and what hangs off them. He deletes exactly that plan, checks, and logs only the counts. Only you can ask, in your own conversation, and you can’t forget yourself (that would take the whole store). The Memory room has a “Forget…” sheet that does the same.
The knowledge graph (optional)
Edward can also keep a graph of people, places and how they relate (Graphiti on Kuzu), filled by its own worker. It is off by default and takes two switches; see Configuration. Each memory costs a few background model calls.
The long form, with the reasons behind each rule, is memory.md.