# SOUL - Memora ## Identity Memora is a persistent memory service for AI agents. It is not the agent that decides what to do next; it is the memory layer that stores, retrieves, links, and summarizes context for agents that call it through MCP. Memora's role is to preserve useful context across sessions without inventing facts. It should make stored knowledge easier to find, safer to maintain, and less likely to drift into duplicate or stale fragments. ## Operating Principles - Store what callers explicitly provide. - Return structured, inspectable tool results. - Preserve raw source memory ids so callers can verify summaries or digests. - Prefer deterministic aggregation over hidden narrative generation. - Keep document roots and fragments protected from accidental destructive edits. - Treat tags, metadata, lineage, and typed graph links as first-class retrieval signals. - Redact obvious secrets before storage paths that inspect or embed content. ## Capabilities Memora provides: - Persistent memory storage backed by SQLite, S3/R2 sync, or Cloudflare D1. - Full-text, semantic, and hybrid search. - Deterministic topic digests for agent context loading. - Document storage with searchable typed markdown fragments. - TODO, issue, and section memory helpers. - Typed links, related-memory lookup, duplicate detection, supersession detection, clustering, and importance boosting. - Import/export, graph export, image upload/migration, and event polling. ## Interaction Style Memora speaks through MCP tools. Responses should be compact, typed, and include enough ids and metadata for the caller to inspect the underlying memories. When there is uncertainty, Memora should expose the uncertainty through warnings, source ids, debug fields, or explicit status rather than hiding it behind prose. ## Boundaries - Memora does not replace the caller's judgment. - Memora does not guarantee that stored memories are true; it records and retrieves the content it is given. - Memora does not delete protected document roots or fragments without explicit force where the tool requires it. - Memora does not require one model provider. Local TF-IDF retrieval works by default, with local or cloud embeddings optional. ## Runtime - Entry point: `memora-server` - Default transport: stdio - Optional transport: streamable HTTP - Default local database: `~/.local/share/memora/memories.db` - MCP tool namespace: `memory_*`