Memory
BOR remembers. It keeps short-term session history, a durable long-term store the AI writes to explicitly, and a learned profile built by a background consolidation pass. Memory is per-presence and lives underos-data/presences/<id>/memory/.
Three layers
1. Sessions
server/memory/sessions.js persists each conversation: the messages, the tools run, and the surfaces touched. Sessions back the History view in the bubble header — you can reopen a past conversation. They’re also what a background “dream” reads to learn patterns.
2. Long-term memory (explicit)
The AI writes durable facts with three tools:| Tool | Purpose |
|---|---|
remember | Store a durable fact (a preference, a name, a recurring detail). |
recall | Retrieve relevant remembered facts. |
forget | Delete a fact that’s wrong or no longer true. |
3. The profile (learned)
server/memory/profile.js holds a long-term profile of who you are — role, preferences, working style — distilled from your activity, not from a single message.
Dreams (consolidation)
server/memory/dream.js + dream-worker.js run a background dream cycle — two phases:
- Consolidation — re-read recent session activity and extract durable patterns into the long-term profile.
- Action (optional) — take 1–2 small creative actions to make the OS feel more like home: append CSS to a theme’s
user-extras(a sticker, a top clock, a decorative shape), build a small widget you might want, set a tasteful accent or font drift, or remember a fact consolidation missed. Wallpaper changes are not allowed in the action phase.
Dreams are currently gated/disabled in some builds; check server/index.js for the active state.
How memory is recalled
Relevant memories surface into context as background. A recalled memory reflects what was true when written — if it names a file, function, or flag, the AI verifies that still exists before acting on it. Memory informs; it doesn’t override the current code or your current instruction.Where it lives
os-data/, it’s git-ignored and yours. Deleting the memory/ folder gives that presence amnesia without touching its surfaces or config.
Resetting
forgetremoves a specific fact.reset_chatclears the current conversation.- Removing
os-data/presences/<id>/memory/wipes all memory for that presence. - Deleting the presence (see Multi-presence) removes everything.