Remora Memory Service
2026 - now
- Rust
- MCP
- Axum
- SQLite FTS5
- Qdrant
- ONNX
One memory plane I control
I wanted a memory service that could sit between Claude Code, Codex, and my own agents without treating each tool as a separate island. The thing I needed was simple to say and hard to find: self-hosted memory with explicit namespaces, good recall, active forgetting, and both app and agent interfaces.
Remora is the service I built for that. It runs as a Rust binary beside Qdrant and SQLite, exposes HTTP or MCP, and keeps the memory model scoped from the first API call.
Why I built it instead of using OSS
The open-source memory tools I looked at were useful, but none lined up with how I actually use agents. Some assumed a hosted platform. Some were tied to a single app flow. Others did not make namespace boundaries explicit enough for a setup where Claude Code, Codex, local agents, and future tools all need to share memory without stepping on each other.
Remora starts with scope. Every memory can be bound by user_id, agent_id,
run_id, actor_id, and role, and every read or write requires a primary
scope. That lets me share one memory plane while still separating tenants,
agents, tasks, and producers.
What improved
- Built a single memory surface for humans, apps, and agents through two transports: JSON HTTP for services and MCP Streamable HTTP for agent clients.
- Made shared memory safe to reuse across tools with explicit scope boundaries that prevent accidental cross-agent recall.
- Fused four recall signals at query time: dense vectors, SQLite FTS5 BM25, optional ColBERT late interaction, and entity graph proximity.
- Measured p50 scoped recall around 25 ms through the same MCP path my agents use, with hybrid search and ranking in the loop.
- Added active forgetting so stale or wrong memory can be removed by topic with dry-run support and audit history.
- Split the system into 18 Rust crates with typed boundaries for storage, recall, extraction, auth, MCP, history, graph, and retrieval.
Future plans
- Bind auth tokens to scopes so a token can only read and write the namespace it owns, instead of relying on one shared bearer token.
- Add a memory inspector UI for reviewing audit history, forget decisions, graph links, and dedup changes.
- Build recall quality evals so changes to embeddings, ColBERT, reranking, and graph boost can be compared against fixed agent-memory scenarios.
- Package first-class adapters and config snippets for Claude Code, Codex, LangGraph, and my local agents.
- Turn on ColBERT and reranking only where the extra storage and latency clearly improve recall quality.