A memory for your assistant#
Conversations hold things worth keeping: who leads what, a deadline that moved, which language a customer prefers. A memory keeps them as dated facts. When you choose Remember this conversation, a small model on your machines reads that conversation and proposes the facts in it; you keep the ones you want. A newer fact replaces an older one on the same thing, and the older one stays in the memory's history. You review and correct every fact in Metis ▸ Memory, and your assistants search the memory like any knowledge base — current facts first.
What you need:
- An embedding model deployed with Eos,
bge-m3, kept at one replica (step 2 of Your company handbook). - A machine with a data location and, free, 4 more CPU cores and about 4 GB more memory for the extractor.
- The editor role (or
knowledge-bases:write-contentto keep facts) and the variables in How the recipes are written.
1. Serve the extractor on a CPU#
The extractor is a small chat model that reads a conversation and answers
the facts in it as JSON. Qwen3 4B (qwen3:4b, 2.5 GB at Q4_K_M,
Apache-2.0) runs on a CPU beside the embedding model, answers in valid
JSON reliably and reads many languages; facts are written in the
conversation's language. A larger chat model you already serve works too.
Eos → Models → Library, open Qwen3, choose 4B at Q4_K_M
and press Deploy. Name: qwen3-4b. Runs on: CPUs only.
Clear Scale to zero when idle: the memory calls it on the
workspace's network, which does not wake a deployment at zero.
$ curl -fsS -X POST "$ASTRALYX_API/eos/catalog-models" -H "Authorization: Bearer $ASTRALYX_TOKEN" \
-H 'content-type: application/json' -d '{"catalog": "qwen3:4b-q4_k_m"}' | jq -r .metadata.name
qwen3-4b-q4-k-m
$ curl -fsS -X POST "$ASTRALYX_API/eos/deployments" -H "Authorization: Bearer $ASTRALYX_TOKEN" -H 'content-type: application/json' \
-d '{"metadata": {"name": "qwen3-4b"}, "spec": {"model": "qwen3-4b-q4-k-m", "accelerator": "cpu", "replicas": {"min": 1, "max": 1}}}' > /dev/null
2. Make the memory#
A memory is a knowledge base of kind memory: it needs no drive. It is
made in the console or the API (astra metis create makes bases of
documents).
Metis → Memory → New memory. Name: team. Embedding
model: bge-m3. Extractor (a chat model): qwen3-4b. Press
Make it.
$ curl -fsS -X POST "$ASTRALYX_API/metis/knowledge-bases" -H "Authorization: Bearer $ASTRALYX_TOKEN" -H 'content-type: application/json' \
-d '{"metadata": {"name": "team"},
"spec": {"kind": "memory", "sources": [],
"embedding": {"deployment": "bge-m3"},
"extractor": {"deployment": "qwen3-4b"}}}' > /dev/null
It becomes Ready in a minute, with no facts.
One memory is the workspace's
Everyone who may read the workspace's knowledge bases reads this memory. For a memory of your own, make it in a workspace of your own.
3. Remember a conversation#
- In Assistant, in a conversation, open the chat's menu and tap Remember this conversation.
- Choose the memory (
team) and tap Find facts to remember. The extractor reads the conversation — a minute or two on a CPU for a long one. - Each proposed fact shows its subject, attribute and sentence; one that would replace a fact says replaces "…" (kept in its history); one already known is unticked. Untick what you do not want.
- Tap Remember N facts. N facts kept in team; 1 older one moved to its history.
Under the conversation, Remember this conversation; the same steps.
From a conversation saved as JSON ([{"role": "user", "content": "…"}, …])
or as plain text:
$ astra metis remember team --from standup.json
reading the conversation for facts (a small model on a CPU takes a minute or two)…
new Ana — role: Ana works in research. (2026-10-12, conversation: standup.json)
replaces: Ana leads the data team.
new Launch — date: The launch moved to Friday 16 October. (2026-10-12, conversation: standup.json)
Keep 2 fact(s) in team? [y/N] y
kept 2; 1 replaced an older fact
POST …/memory/extract proposes; nothing is kept until you post the
facts you chose to POST …/memory
(Keep a memory of facts).
Only that conversation is sent, once, to the memory's machine; the app keeps its chats on your phone and the Playground in your browser. Only the person's and the model's turns are read (the last 24,000 characters), and nothing of the conversation is kept but the facts you choose. A fact that looks like a secret — a password, a key or token, a card number — is left out, and the dialog says so (Left out: a fact about … looked like a password).
4. Review, correct and forget#
Metis → Memory, the memory team:
- Facts are grouped by subject, each as attribute: the fact, with as of its date and from its source (chat: Planning, added by hand).
- show what was replaced adds Replaced: what held before, with until when (as of 2026-09-01, until 2026-10-12).
- Edit corrects a fact's subject, attribute or sentence; its history is kept.
- Forget deletes it from the memory's machine — ticked by default, and the N older facts it replaced too.
- Add a fact keeps one by hand. The Attribute is what a newer fact
must match to replace it: use the same word each time (
role,deadline,preferred language).
The same from a terminal:
$ astra metis memory team --history
f_9b2c4d6e8f0a1b3c Ana — role: Ana works in research. (2026-10-12, conversation: standup.json)
f_1d3e5a7c9b0f2468 Launch — date: The launch moved to Friday 16 October. (2026-10-12, conversation: standup.json)
-- replaced --
f_7a8b9c0d1e2f3a4b Ana — role: Ana leads the data team. (2026-09-01, chat: Planning)
$ astra metis remember team --subject Bruno --attribute city --fact "Bruno lives in Recife."
$ astra metis forget team f_1d3e5a7c9b0f2468
forgot f_1d3e5a7c9b0f2468
5. Let your assistant answer from it#
A memory is searched like any base, with citations, current facts before the history: "What does Ana work on?" finds Ana works in research first, and "What was Ana's role in September?" still finds the older fact.
| Assistant | How it uses the memory |
|---|---|
| Claude Code with the Astralyx skill | Reads astra metis memory team --json and searches it; keeps a fact with astra metis remember … --yes after your yes (Search your knowledge from Claude Code) |
| An assistant connected over MCP | search_knowledge_base with knowledge_base: team (Connect your AI assistant) |
| A chat deployment of yours | A search function pointed at the memory, given as a tool: the function of Chat with your documents in Eos, deployed as search-team with -e METIS_URL=http://metis-team:7700, Run next to metis-team, and a docstring that says it searches facts about the team |
Not yet: a memory that is put in front of every chat by itself, and remembering conversations on its own. Remember this conversation is asked each time; nothing is extracted without it.
Footprint and cost#
| What | Default |
|---|---|
| Qwen3 4B (extractor) | 2.5 GB of weights; 4 CPU cores reserved, idle cores used beyond; busy only while it reads a conversation |
| The memory's index service | 1 CPU core, 2 GiB of memory |
| Facts | One small Markdown note each on the memory's own drive (metis-team); a replaced fact moves to the history folder |
Reading a conversation takes from seconds to a couple of minutes on a CPU and blocks nothing else; at most 10 minutes. The cores and memory are metered like any work of the workspace.
Clean up#
Deleting the memory (astra metis delete team, or Delete on its
page) deletes every fact and its history; it cannot be undone. Export them
first if you want to keep them:
astra metis memory team --history --json > team-facts.json.
Troubleshooting#
| Symptom | Cause | Fix |
|---|---|---|
team has no extractor model (409 NO_EXTRACTOR) |
The memory was made without one | Change it in its Settings: Extractor (a chat model), or add facts by hand |
503 EXTRACTOR_UNAVAILABLE |
qwen3-4b is not serving |
Check it in Eos → Deployments; keep it at one replica |
502 EXTRACTOR_UNREADABLE |
The model did not answer with facts | Read it again; a larger chat model is steadier |
| Nothing durable to remember in this conversation. | Small talk, questions, guesses | Add a fact by hand |
400 FACT_SENSITIVE |
The fact looks like a password, key, token or card number | A memory never keeps secrets: keep them in your secret manager |
| An old fact still holds beside a newer one | The two have different subjects or attributes (job and role), so neither replaced the other — editing one does not make it replace the other |
Forget the stale one; keep later facts on that thing under the same subject and attribute |