Lifecycle states
From conversation to memory
add() is asynchronous. After a request passes the quality gate, extraction can produce:
Weak candidates protect the system from storing uncertain one-off statements as permanent memory.
Reinforcement
A weak candidate can later be promoted when MemoryOS sees stronger evidence, for example:- the same signal appears again in a later conversation
- retrieval feedback confirms the signal was useful
- a user correction produces a stronger replacement memory
Retrieval feedback
After retrieval, your agent can report whether returned memories were useful. Feedback can:- increment useful-memory signals
- mark a memory as ignored or not useful
- queue an async correction job when the user corrects the agent
- help operators see extraction quality problems in the dashboard
Lifecycle manager
The lifecycle manager runs during off-peak hours and performs these jobs:- Decay - reduce
importance_scorefor stale memories when appropriate. The original score stays inoriginal_importance_score. - Auto-archive - soft-remove stale low-value memories from search without deleting them from PostgreSQL.
- Hot promotion - move high-value, frequently used memories into Redis for faster retrieval.
- Score recompute - recalculate baseline importance when needed.
- Payload retention - redact old extraction payloads while preserving source hashes for audit.
is_archived = true and system_archived = true. They stay in the database and appear in GDPR exports. Hard delete is a separate explicit action.
Version history
Every meaningful change creates an append-only row inmemory_versions.
Version rows are never updated or deleted.