Memory#
A memory is a knowledge base of kind memory. Instead of documents it
keeps facts: short, dated statements about people, projects,
organisations, decisions, preferences and deadlines, each saying where it
came from. Facts change — someone changes team, a launch moves — so a
memory keeps what holds now apart from what held before, and
answers with the first while still finding the second.
A fact#
| Part | Example | What it is |
|---|---|---|
| Subject | Ana |
Who or what the fact is about, by name (up to 120 characters) |
| Attribute | role |
What about the subject: role, employer, deadline, preferred language, decision (up to 120 characters) |
| Fact | Ana works in research. | One sentence that stands on its own and names its subject (up to 2,000 characters) |
| Source | chat: Planning |
Where it came from: a conversation, added by hand, a file name |
| When said | 2026-10-12 | When the fact was said — given with the fact, else when it was kept; a date in the future is taken as now |
A fact also records when it was kept, when it was last edited, the facts it replaced, and — once replaced — which fact replaced it and until when it held.
Subject and attribute decide what replaces what#
Two facts are about the same thing when their subject and attribute are
the same, ignoring case and extra spaces: Ana / role and ana /
Role are one thing; Ana / role and Ana / job are two. When you
keep a fact:
| It is | It becomes |
|---|---|
| About a new thing | Current |
| About a thing with a current fact, said later | Current; the older one moves to the history, with until when it held (the new fact's date) and which fact replaced it |
| About a thing with a current fact, said earlier | History at once: an old message never overrules a newer one |
| The same sentence as the current fact | Nothing: it is not kept twice |
Editing a fact corrects its words, subject or attribute, keeps its id and its history, and replaces nothing. Forgetting a fact deletes it; with its history, the facts it replaced too, back to the first.
This is why the attribute matters: keep using the same word for the same
thing (role, not role one day and position the next), or a newer
fact will stand beside the older one instead of replacing it. The
extractor is told the subjects and attributes the memory already knows so
it names them the same way.
The history, and how search uses it#
Facts are notes of the memory — one Markdown file each, on the memory's own
drive on its machine: current ones under notes/memory/, replaced ones
under notes/memory/history/. Each is indexed like any document, its text
saying the fact, its date and source, and — for a replaced one — since
when it no longer holds. A search therefore finds facts by meaning and by
words, with citations, like any base.
After ranking, a memory puts current facts before replaced ones:
- What does Ana work on? — Ana works in research, current, first.
- What was Ana's role in September? — still found: Ana leads the data team (as of 1 September, until 12 October), after any current fact the search also found.
Proposed from a conversation you choose#
A memory may have an extractor (spec.extractor): an Eos chat
deployment that reads a conversation and proposes its facts. It runs only
when you ask — Remember this conversation in the app's chat or the
Playground, astra metis remember --from, or
POST …/memory/extract:
- The conversation is sent once to the memory's machine. Only the person's and the model's turns are read — the last 24,000 characters.
- The extractor is given the conversation, today's date and up to 80 of the memory's current facts, and is asked for durable facts as JSON: about people, projects, organisations, decisions, preferences, dates and deadlines, written in the conversation's language. It is told to leave out small talk, questions, guesses, what the assistant only suggested, and anything secret.
- Each proposal comes back with what it would replace, or marked as already known. Nothing is kept yet.
- You keep the ones you choose; they are saved by the rules above.
The extractor answers at temperature 0, with its thinking turned off for models that have one, and is given up to 10 minutes. A small model on a CPU — Qwen3 4B — takes from seconds to a couple of minutes.
What is never kept#
A fact that looks like a secret is refused when kept by hand
(FACT_SENSITIVE) and dropped from extraction's proposals, which say so
(a fact about Bruno looked like a password). Looks like a secret:
- the words password, senha, passwd, API key, secret key,
private key,
token:, or a PEM block (-----BEGIN); - a word starting like a known key or token and at least 16 characters
long:
sk-,ghp_,gho_,github_pat_,xoxb-,xoxp-,AKIA,AIza,glpat-,ast_,eyJ; - a run of 32 or more letters and digits mixed, with at least 4 digits;
- a card number: 13 to 19 digits (spaces and dashes allowed) that pass the Luhn check.
Keep secrets in your secret manager and refer to them by name.
Who reads a memory#
A memory belongs to its workspace, like any base: whoever may read the workspace's knowledge bases may read its facts, and whoever may add to them may keep, correct and forget facts. There is no per-person scope inside one memory: for a memory of your own, make one in a workspace of your own. Deleting the memory deletes every fact and its history.
Not yet#
- Remembering by itself. Nothing is extracted unless you ask, each time; there is no switch that remembers every conversation.
- A memory always in front of the model. A chat does not read the
memory by itself; an assistant searches it — Claude Code's skill, an
MCP assistant's
search_knowledge_base, or a search tool you give a deployment (A memory for your assistant). - Facts from documents. Facts come from conversations and by hand; facts and relations read out of a base's documents are planned next.
- Forgetting everything about one person at once across facts, other than forgetting their facts or deleting the memory.