{"slug": "show-hn-local-rag-memory-system-that-ai-can-write-directly-to", "title": "Show HN: Local RAG memory system that AI can write directly to", "summary": "A developer released local-memory-mcp, an open-source local MCP server that gives AI assistants like Claude and ChatGPT persistent memory using ChromaDB vector search, enabling them to store and retrieve information across sessions without cloud dependency or data leaving the user's machine.", "body_md": "**AI assistants forget everything when the conversation ends. This fixes that - locally.**\n\nNo cloud. No subscription. No account. Your data stays on your machine.\n\n`local-memory-mcp`\n\ngives Claude, ChatGPT, and other MCP-compatible assistants a persistent memory layer powered by local vector search (ChromaDB). Tell it something once. It remembers across sessions.\n\nEvery new Claude or ChatGPT session starts blank. Your preferences, your project context, your decisions - gone. You re-explain yourself constantly.\n\nlocal-memory-mcp is a local MCP server that lets your AI assistant:\n\n- Store things worth remembering (\"my deep work block is 6:30–9 AM\")\n- Retrieve relevant context at the start of any new session\n- Version and supersede memories as your situation changes\n- Never send your data anywhere\n\nIt's the memory layer AI assistants should have built in, but don't.\n\n```\ngit clone https://github.com/ptobey/local-memory-mcp.git\ncd local-memory-mcp\ndocker compose up --build -d\n```\n\nThen point your MCP client at `http://localhost:8000/mcp`\n\n. Done.\n\n→ [Claude Desktop setup](/ptobey/local-memory-mcp/blob/main/docs/integrations.md) · [ChatGPT setup](/ptobey/local-memory-mcp/blob/main/docs/integrations.md) · [Manual Python install](/ptobey/local-memory-mcp/blob/main/docs/setup.md)\n\n```\n[Assistant via MCP Client]\n            |\n            v\n[run_mcp_v1_stdio.py | run_mcp_v1_http_sse.py]\n            |\n            v\n      [src/mcp_server_v1.py]\n        /          |          \\\n       v           v           v\n[vector_store.py] [reconciliation.py] [health_monitor.py]\n       |                   |\n       v                   v\n [Local ChromaDB]   [Reconciliation Log]\n```\n\n**Write path:** `store`\n\n/`update`\n\nwrites a chunk → reconciliation checks for overlap/conflict → returns warnings and self-heal hints when a write looks risky.\n\n**Read path:** `search`\n\nruns semantic retrieval → ranking blends similarity with lightweight lexical/recency signals → deprecated chunks stay hidden unless explicitly requested.\n\n- MCP tools:\n`store`\n\n,`search`\n\n,`update`\n\n,`delete`\n\n,`get_chunk`\n\n,`get_evolution_chain`\n\n- Versioned updates (\n`strategy=\"version\"`\n\n) with supersedes chains - Soft delete by default (history retained), optional hard delete\n- Heuristic reconciliation and conflict logging\n- Warning-first write responses with structured\n`warnings[]`\n\nand self-heal fields - Health checks for oversized chunks and unresolved conflicts\n- Local backup/restore for the persisted vector DB\n- Stdio and SSE transports\n- Optional SSE auth:\n`none`\n\n(local-only),`bearer`\n\n, or`oauth`\n\nAIX (AI eXperience) means designing for how LLMs actually consume context, not how humans file documents:\n\n- Prefer clear text chunks over rigid document schemas\n- Keep metadata minimal but useful: timestamps, confidence, supersedes links, deprecation flags\n- Preserve history with version chains instead of destructive overwrites\n- Return warning-rich tool responses so the model can self-correct\n\nThe goal is practical retrieval quality and reliable AI behavior, not perfect human taxonomies.\n\n**Store a memory:**\n\n```\ntool: store\ninput: { \"text\": \"Weekday focus block is 6:30-9:00 AM, current default schedule.\" }\n```\n\n**Retrieve it later:**\n\n```\ntool: search\ninput: { \"query\": \"current deep work schedule\", \"top_k\": 5 }\n```\n\n**Bootstrap a new session** by running a few focused retrievals, then synthesizing only active, non-deprecated chunks into a short brief for the new model instance. More flows in [ examples/](/ptobey/local-memory-mcp/blob/main/examples).\n\n- Local-first and user-controlled by default\n- Data stored in local ChromaDB files under the configured persist directory\n- No cloud backend required; optional remote access via user-managed tunneling\n- Never commit real secrets - use local config/env values\n\n[Setup guide](/ptobey/local-memory-mcp/blob/main/docs/setup.md)[Integrations (Claude Desktop + ChatGPT)](/ptobey/local-memory-mcp/blob/main/docs/integrations.md)[Architecture](/ptobey/local-memory-mcp/blob/main/docs/architecture.md)[AIX notes](/ptobey/local-memory-mcp/blob/main/docs/aix.md)[Docker guide](/ptobey/local-memory-mcp/blob/main/docs/docker.md)[Limitations](/ptobey/local-memory-mcp/blob/main/docs/limitations.md)[Roadmap](/ptobey/local-memory-mcp/blob/main/docs/roadmap.md)\n\nMIT. See [ LICENSE](/ptobey/local-memory-mcp/blob/main/LICENSE).", "url": "https://wpnews.pro/news/show-hn-local-rag-memory-system-that-ai-can-write-directly-to", "canonical_source": "https://github.com/ptobey/local-memory-mcp", "published_at": "2026-06-13 19:23:48+00:00", "updated_at": "2026-06-13 19:47:35.962329+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "large-language-models", "ai-agents", "artificial-intelligence"], "entities": ["local-memory-mcp", "ChromaDB", "Claude", "ChatGPT", "MCP"], "alternates": {"html": "https://wpnews.pro/news/show-hn-local-rag-memory-system-that-ai-can-write-directly-to", "markdown": "https://wpnews.pro/news/show-hn-local-rag-memory-system-that-ai-can-write-directly-to.md", "text": "https://wpnews.pro/news/show-hn-local-rag-memory-system-that-ai-can-write-directly-to.txt", "jsonld": "https://wpnews.pro/news/show-hn-local-rag-memory-system-that-ai-can-write-directly-to.jsonld"}}