Show HN: Local RAG memory system that AI can write directly to
local-memory-mcp is a local MCP server that gives AI assistants like Claude and ChatGPT persistent memory using ChromaDB. Data stays on your machine, no cloud or subscription required. It solves the problem of AI forgetting everything after a session ends.
Notifications You must be signed in to change notification settings
Fork 0
Star 4
BranchesTags
Open more actions menu
Folders and files
NameName
Last commit message
Last commit date
Latest commit
History
17 Commits
17 Commits
docs
docs
examples
examples
src
src
.dockerignore
.dockerignore
.env.example
.env.example
.gitignore
.gitignore
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
CONTRIBUTING.md
Dockerfile
Dockerfile
LICENSE
LICENSE
README.md
README.md
SECURITY.md
SECURITY.md
config.example.json
config.example.json
demo.gif
demo.gif
docker-compose.yml
docker-compose.yml
requirements.txt
requirements.txt
run_mcp_v1_http_sse.py
run_mcp_v1_http_sse.py
run_mcp_v1_stdio.py
run_mcp_v1_stdio.py
Repository files navigation
AI assistants forget everything when the conversation ends. This fixes that - locally.
No cloud. No subscription. No account. Your data stays on your machine.
local-memory-mcp gives 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.
The problem it solves
Every new Claude or ChatGPT session starts blank. Your preferences, your project context, your decisions - gone. You re-explain yourself constantly.
local-memory-mcp is a local MCP server that lets your AI assistant:
Store things worth remembering ("my deep work block is 6:30–9 AM")
Retrieve relevant context at the start of any new session
Version and supersede memories as your situation changes
Never send your data anywhere
It's the memory layer AI assistants should have built in, but don't.
Quickstart (Docker - 2 minutes)
git clone https://github.com/ptobey/local-memory-mcp.git cd local-memory-mcp docker compose up --build -d
Then point your MCP client at http://localhost:8000/mcp. Done.
→ Claude Desktop setup · ChatGPT setup · Manual Python install
How it works
[Assistant via MCP Client] | v [run_mcp_v1_stdio.py | run_mcp_v1_http_sse.py] | v [src/mcp_server_v1.py] / | \ v v v [vector_store.py] [reconciliation.py] [health_monitor.py] | | v v [Local ChromaDB] [Reconciliation Log]
Write path: store/update writes a chunk → reconciliation checks for overlap/conflict → returns warnings and self-heal hints when a write looks risky.
Read path: search runs semantic retrieval → ranking blends similarity with lightweight lexical/recency signals → deprecated chunks stay hidden unless explicitly requested.
Features
MCP tools: store, search, update, delete, get_chunk, get_evolution_chain
Versioned updates (strategy="version") with supersedes chains
Soft delete by default (history retained), optional hard delete
Heuristic reconciliation and conflict logging
Warning-first write responses with structured warnings[] and self-heal fields
Health checks for oversized chunks and unresolved conflicts
Local backup/restore for the persisted vector DB
Stdio and SSE transports
Optional SSE auth: none (local-only), bearer, or oauth
The design idea behind it (AIX)
AIX (AI eXperience) means designing for how LLMs actually consume context, not how humans file documents:
Prefer clear text chunks over rigid document schemas
Keep metadata minimal but useful: timestamps, confidence, supersedes links, deprecation flags
Preserve history with version chains instead of destructive overwrites
Return warning-rich tool responses so the model can self-correct
The goal is practical retrieval quality and reliable AI behavior, not perfect human taxonomies.
Example workflow
Store a memory:
tool: store input: { "text": "Weekday focus block is 6:30-9:00 AM, current default schedule." }
Retrieve it later:
tool: search input: { "query": "current deep work schedule", "top_k": 5 }
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/.
Privacy & deployment
Local-first and user-controlled by default
Data stored in local ChromaDB files under the configured persist directory
No cloud backend required; optional remote access via user-managed tunneling
Never commit real secrets - use local config/env values
Documentation
Setup guide
Integrations (Claude Desktop + ChatGPT)
Architecture
AIX notes
Docker guide
Limitations
Roadmap
License
MIT. See LICENSE.
About
Persistent local memory for Claude and ChatGPT. No cloud, no subscription. Self-hosted RAG over MCP.
Topics
python
memory
mcp
self-hosted
claude
rag
local-first
llm
chatgpt
chromadb
Resources
Readme
License
MIT license
Code of conduct
Code of conduct
Contributing
Contributing
Security policy
Security policy
Uh oh!
There was an error while loading. Please reload this page.
Activity
Stars
4 stars
Watchers
0 watching
Forks
0 forks
Report repository
Releases
1 tags
Packages 0
Uh oh!
There was an error while loading. Please reload this page.
Contributors 1
ptobey Patrick Tobey
Languages
Python 99.1%
Dockerfile 0.9%