Ferrosa Memory is an MCP-native memory server for LLM agents. Instead of dumping text into a vector store, it keeps a typed entity graph, bi-temporal facts, raw context segments, and Datalog-derived knowledge — retrieved with hybrid search, consolidated automatically, and forgettable with a full audit trail.
That loses the things agents actually need: when a fact changed, how facts relate, why a memory exists, and how to safely remove it. Ferrosa Memory treats memory as structured, queryable data — not opaque text.
Record what changed over time instead of overwriting history. The current fact stays easy to retrieve, while superseded facts remain inspectable for audit, debugging, and time-travel queries.
Entities, folds, facts, skills, and tags are connected with typed edges (depends_on, contains, calls, references…) so an agent can follow relationships, not just match text.
Recall fuses lexical, vector, phonetic, graph, workspace, and recency signals with Reciprocal Rank Fusion, then expands around raw context or document chunks to recover neighboring evidence.
Datalog-style rules derive and explain higher-level facts from graph state, so memory behavior can be inspected and audited instead of trusted blindly.
The 0.15 forget flow shows the blast radius before anything changes, then retracts reversibly (or hard-deletes) with an append-only journal. Memory you can remove is memory you can trust.
Built on Ferrosa DB: CQL storage, HNSW vector indexes, a property graph, and S3-backed durability with hot/warm/cold tiering. Memory survives restarts and scales past one process.
Agents talk to Ferrosa Memory through a small set of MCP tools — ingest, retrieve, link, explain, and forget. The memory layer owns memory semantics: entities, folds, temporal facts, retrieval outcomes, intentions, skills, Datalog rules, and explanations.
Underneath, Ferrosa Database provides CQL storage, vector indexes, graph traversal, and durable S3-backed tiering. A background "dream cycle" consolidates new memories — discovering connections, scoring importance, and decaying stale recall — while you sleep.
Agent / IDE / runtime
│ MCP tools
▼
Ferrosa Memory service
├─ entities + typed graph
├─ bi-temporal facts
├─ context segments + folds
├─ hybrid retrieval (RRF)
├─ dream-cycle consolidation
├─ Datalog-derived facts
└─ auditable forget journal
│
▼
Ferrosa Database
CQL · HNSW vectors · graph · S3 tieringAgents see a focused Tier 1 set of everyday tools by default. The full Tier 2 surface — batch operations, folds, bi-temporal facts, memo & plan tracking, skills, consolidation, and the Datalog governance plane — unlocks with include_all when an operator needs it.
Ingest and recall: smart_ingest, hybrid_search, entity lookup, typed edges, chunk & turn context, intention checks, the full session-task surface, feedback, stats, configure, and forget. Everything an agent reaches for in a normal session.
Batch ingest/edit, trajectory folds, bi-temporal facts, memo & plans, the intention lifecycle, stored skills, dream-cycle consolidation & graph inference, the Datalog expert system (rules, claims, approvals, explanations), and config/introspection.
Propose candidates, see the blast radius (edges, temporal chains, derived facts), then confirm a reversible retraction or a hard delete — all recorded in an append-only forget journal with crash recovery.
Source-aware relevance guards, lexical-overlap checks, authority/PageRank adjustments, and workspace filtering so hooks prefer silence over noisy context. Native full-text indexing speeds lexical recall.
First-class task state — focus stack, working set, and recovery hints — survives restarts and supports multi-agent handoff, so an interrupted agent can resume where it left off.
Session-start recall derives stable, workspace-specific sessions instead of leaking process-global state, and fallback recall stays semantic/procedural — never raw episodic transcript.
Vector stores and most memory layers answer "what looks similar?" Ferrosa Memory also answers "what changed, what's connected, why does this exist, and can I safely remove it?"
| Capability | Ferrosa Memory | Vector store + RAG |
|---|---|---|
| Typed knowledge graph | Yes | No — similarity only |
| Bi-temporal fact history | Yes | Overwrite / append |
| Hybrid retrieval (lexical+vector+graph+recency) | Yes — RRF over ~11 signals | Vector (± keyword) |
| Explainable derived facts | Yes — Datalog | No |
| Auditable forgetting | Yes — blast radius + journal | Manual delete |
| Automatic consolidation | Yes — dream cycle | No |
| MCP-native tools | Yes | Framework-dependent |
Ferrosa Memory is product engineering, not a paper implementation — but the design draws on recent and classic work on agent memory, virtual context, graph retrieval, prompt compression, Datalog-style inference, and memory evaluation.
| Paper | arXiv | Theme |
|---|---|---|
| LoCoMo: Evaluating Very Long-Term Conversational Memory of LLM Agents | 2402.17753 | long-term conversational memory |
| LongMemEval: Benchmarking Chat Assistants on Long-Term Interactive Memory | 2410.10813 | memory evaluation |
| Memory in Large Language Models: Mechanisms, Evaluation and Evolution | 2509.18868 | memory taxonomy |
| Episodic Memory is the Missing Piece for Long-Term LLM Agents | 2502.06975 | episodic memory |
| Microstructures and Accuracy of Graph Recall by Large Language Models | 2402.11821 | graph recall |
| From Local to Global: A Graph RAG Approach to Query-Focused Summarization | 2404.16130 | GraphRAG |
| LongLLMLingua: Accelerating and Enhancing LLMs in Long Context Scenarios via Prompt Compression | 2310.06839 | long-context compression |
| InfLLM: Training-Free Long-Context Extrapolation for LLMs with an Efficient Context Memory | 2402.04617 | context memory |
Start local, inspect memory in the workbench, and watch raw context become linked, durable, queryable memory. Self-hosted today — from a single workgroup machine to a replicated cluster on the distributed Ferrosa store. A managed service is on the roadmap.