Vibe keeps memory scopes separate so runtime scratch state does not accidentally become durable user memory.

MemoryAPIPurpose
Eval stateVibe.Eval.*Per-session variables, aliases, imports, and helper results
Agent scratchVibe.Agent.MemoryEphemeral planning/runtime facts for a live agent process
Curated memoryVibe.Memory / Vibe.Memory.ManagerDurable user/global/session facts intentionally recalled later
Session historyVibe.Session.Store / Vibe.ContextSearchable conversation, tool, UI, and trajectory history

Examples:

Vibe.Memory.add(:user, "User prefers concise technical answers")
Vibe.Memory.add(:global, "For Vibe, run mix ci before commits")
Vibe.Memory.search("mix ci", scopes: [:user, :global])
Vibe.Memory.context_block("validation", scopes: [:user, :global])

Vibe.Agent.Memory.put(agent_id, :plan, "inspect docs")
Vibe.Agent.Memory.get(agent_id, :plan)
Vibe.Agent.Memory.clear(agent_id)

Recalled curated memory is inserted as background context, not direct user input. Session history can be searched, but important durable preferences should be promoted through Vibe.Memory.