Skip to content

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-content to 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.

$ astra eos add qwen3:4b
$ astra eos deploy qwen3-4b-q4-k-m --name qwen3-4b --cpu --min 1 --max 1
$ 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#

  1. In Assistant, in a conversation, open the chat's menu and tap Remember this conversation.
  2. 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.
  3. 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.
  4. 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