On this page you will learn:
- which fields a memory record has and where they come from;
- what the
unverified,staleandconflictstatuses mean; - how records relate to each other: versions of one fact, summaries and the graph.
Running example: the team agreed that staging is deployed through the app-staging systemd unit, and the rule is written down in docs/deploy.md.
A memory record
Section titled “A memory record”A record is one fact, decision or agreement. The agent creates it with remember and finds it with search. This is a record as it appears in search results:
{ "id": "4d428a41-e7b0-4f81-a886-f40c6f6c766c", "workspace": "default", "scope": "shared", "content": "staging is deployed through the app-staging systemd unit", "source": "agent", "source_id": "docs/deploy.md", "source_hash": "sha256:9f2c…", "source_revision": "a1b2c3d", "fact_key": "deploy.staging.method", "confidence": 0.8, "status": "unverified", "derived_from": [], "score": 2, "graph_relations": [], "created_at": "2026-10-05T09:12:00+00:00", "updated_at": "2026-10-05T09:12:00+00:00"}| Field | Set by | Meaning |
|---|---|---|
id | server | Unique record ID. Used by forget and derived_from. |
workspace | agent | Workspace — a named collection inside a project. Defaults to default. |
scope | agent | A filter label, shared by default. It does not restrict access (see below). |
content | agent | The record text. Secrets are replaced with placeholders before saving. |
source | agent | Who saved it: owner by default; you will also see agent, telegram and others. |
source_id, source_hash, source_revision | agent | Provenance: the document, a hash of its content, its version. See Source and freshness. |
fact_key | agent or archivist | Topic key. Records with the same key are compared with each other. |
confidence | agent, archivist | Confidence from 0 to 1, default 0.5. |
status | server | unverified, stale or conflict — computed on every search. |
derived_from | agent | IDs of the records this one summarizes. |
score | server | Relevance to the query in this search. |
graph_relations | archivist | Links to other records. |
created_at, updated_at | server | Creation and last-change time (ISO 8601). |
remember never deletes or overwrites existing records: every call adds a new one. Only forget deletes, and softly — the record disappears from search and the graph, while the fact of deletion is kept for audit.
Statuses
Section titled “Statuses”There is no verified status in MMW. The server records where a fact came from; it does not claim the fact is true.
| Status | When | What the agent should do |
|---|---|---|
unverified | The normal state of every new record, even one with a source_hash. | Use it, keeping the source and confidence in mind. |
stale | The source changed: search or validate_memory received a current_source_hash different from the stored one; or the archivist marked the record as contradicted by a newer one. | Re-read the source and update the fact. |
conflict | Other records in the same workspace share the fact_key but differ in content or source hash. | Do not pick one silently — show the disagreement to a person. |
If several statuses apply, the more alarming one wins: conflict over stale, stale over unverified. A summary takes the worst status of the records it was built from.
scope is a label, not access control
Section titled “scope is a label, not access control”scope (shared by default; private is common) is just a tag you can filter search and validate_memory by. A record with scope: "private" is visible to everyone with access to the project.
Who sees what is decided elsewhere:
- in a personal account — by the key’s project (see Workspaces and projects);
- in an organization — by the record’s visibility: author only, department, project or the whole organization (see Visibility).
confidence
Section titled “confidence”A number from 0.0 (unsure) to 1.0 (certain), default 0.5. Values outside the range are rejected. The agent sets it when saving; the archivist may lower an older record’s confidence when a newer one refines or contradicts it.
A good habit: 0.9 and up for what was read in a document or confirmed by a person; 0.5 for the agent’s own conclusions; lower for guesses.
fact_key and fact versions
Section titled “fact_key and fact versions”fact_key is a stable name for a topic, such as deploy.staging.method. Saving again with the same key adds a new version; earlier ones are kept and nothing is deleted.
fact_key = deploy.staging.method ─────────────────────────────────────────────────────────── v1 "through the app-staging systemd unit" ─┐ v2 "through Docker Compose, staging service" ├─ both have status conflict ─┘ until the wrong one is removed with forgetIf the versions are identical (same text and same source hash), there is no conflict. Details: Conflicts and summaries.
If you did not set a fact_key, the archivist may assign a service key of the form archivist:shelf:short-summary.
derived_from: summaries
Section titled “derived_from: summaries”When the agent condenses several records into one (“this week’s deployment summary”), it passes their IDs in derived_from (up to 50 existing records). The summary remembers what it was built from and inherits the conflict and stale status of its sources, so condensing never hides unresolved contradictions.
Graph relations
Section titled “Graph relations”After a record is saved, the archivist compares it with recent records in the same workspace and may create links. Search results show them in graph_relations:
"graph_relations": [ { "relation": "supersedes", "direction": "outgoing", "weight": 0.9, "target_id": "0b7e…", "preview": "staging is deployed manually with scp" }]Relation types: relates_to, fixes_issue and supersedes. preview is the first 120 characters of the linked record. Links to deleted records, or records you cannot see, are not shown.