Skip to main content

Dual-layer ChromaDB + Mem0 Git commit index for Claude Code

Project description

claudememory

PyPI version Python License: AGPL v3

Give Claude Code a long-term memory of your Git history.


The problem

Claude Code is great at reading your current codebase — but it has no memory of why things were built the way they are.

Every session starts fresh. Ask it why a module was refactored, which bugs have hit the payment service before, or what architectural decision introduced the current state machine — and it has no answer. That context lives in your Git history, but it's inaccessible to the AI.

claudememory solves this. It indexes your entire Git commit history into a dual-layer semantic store and exposes it to Claude Code via MCP. Claude can now answer:

  • "Has the auth module had bugs before?"
  • "Why was this abstraction introduced?"
  • "What changed in PaymentService over the last year?"
  • "What commits touched this file?"

How it works

Two storage layers work together on every indexed commit:

Layer Technology Purpose
Facts layer ChromaDB 1 document per commit — cosine similarity search, metadata filters, zero LLM overhead
Context layer Mem0 LLM-extracted interpretation — the why behind each change, cross-session learned context

ChromaDB acts as the ground truth (fast, accurate, deduplicated). Mem0 enriches results with learned context over time. Claude sees both merged together.


Install

pip install claudememory

PyPI

No external services required. Ollama is optional — if it's not running, claudememory falls back to ChromaDB-only mode automatically.

Mode Setup Cost
ChromaDB only (no setup) Nothing Free, works immediately
Ollama ollama pull nomic-embed-text Free, fully local, adds semantic layer
sentence-transformers pip install "claudememory[sentence-transformers]" Free, fully local, no Ollama
OpenAI pip install "claudememory[openai]" + OPENAI_API_KEY ~$0.0001/commit

Quick start

cd /your/repo

# 1. Index your repository (run from inside the repo)
claude-memory index

# 2. Install Claude Code skills + MCP config
claude-memory install

# 3. Restart Claude Code — then use /claude-memory-search, /claude-memory-debug etc.

After setup, Claude Code automatically has access to your commit history. No prompting required — it calls the tools proactively based on what you're working on.


MCP tools exposed to Claude

Tool What Claude can ask
search_git_history(query) "Find commits related to discount logic"
latest_commits(limit) "What changed while I was away?"
commits_touching_file(filename) "What's the history of PaymentService?"
bug_fix_history(component) "Has auth had bugs before?"
architecture_decisions(topic) "Why was the state machine introduced?"

Claude Code skills

Skill Trigger
/claude-memory-search Search commit history for a topic
/claude-memory-index Index a new repository
/claude-memory-status Check what's indexed
/claude-memory-debug Debug a regression with full history

CLI reference

claude-memory index                    # bulk index all commits (run from repo root)
claude-memory install                  # install Claude Code plugin (run from repo root)
claude-memory status                   # show indexed coverage
claude-memory serve                    # start MCP server (stdio)
claude-memory store HEAD               # store single commit (post-commit hook)

# Optional flags
claude-memory index --repo-path /other/repo --user-id myapp
claude-memory status --repo-path /other/repo

Configuration

All settings via environment variables:

Variable Default Description
CLAUDE_MEMORY_REPO_PATH . Repository to index
CLAUDE_MEMORY_USER_ID claude_memory_system Mem0 namespace (use per-repo names)
CLAUDE_MEMORY_CHROMA_DIR ~/.cache/claude_memory/chroma_commits ChromaDB storage path
CLAUDE_MEMORY_EMBED_PROVIDER ollama Embedding backend: ollama, openai, sentence-transformers
CLAUDE_MEMORY_EMBED_MODEL (provider default) Override embedding model name
CLAUDE_MEMORY_LLM_MODEL (provider default) Override LLM model name (Mem0 layer)
OPENAI_API_KEY (empty) Enables OpenAI embeddings + LLM automatically
MEM0_API_KEY (empty) Use Mem0 cloud instead of local inference
OLLAMA_URL http://localhost:11434 Ollama endpoint

Better with conventional commits

claudememory automatically categorizes every commit by scanning its message for keywords. If you already use Conventional Commits (fix:, feat:, refactor:, etc.), the tool works out of the box with near-perfect accuracy.

Here's why it matters:

# Without conventional commits
"updated payment stuff"         → category: general (no signal)
"fixed the thing"               → category: fix ✓

# With conventional commits
"fix(payments): race condition" → category: fix ✓
"feat(auth): add OAuth2 flow"  → category: feat ✓
"refactor: extract BaseService" → category: refactor ✓
"perf(queries): add index"     → category: perf ✓

The categorizer maps directly to these prefixes:

Commit prefix claudememory category Queryable via
fix:, hotfix:, patch: fix bug_fix_history()
feat:, feature: feat search_git_history(category="feat")
refactor: refactor architecture_decisions()
perf: perf search_git_history(category="perf")
security: security bug_fix_history(include_security=True)
revert: revert bug_fix_history()

Commits without any recognized keyword are still indexed but categorized as general. The relevance filter also uses these keywords to decide which commits are worth indexing at all, so well-written conventional commit messages mean higher coverage and better search results.

You don't need conventional commits to use claudememory. But if you adopt them, every tool gets smarter automatically.


Works great alongside GitNexus

These two tools answer different questions and are better together:

Question Tool
What does this function call? GitNexus
Why was this function written this way? claudememory
What will break if I change this? GitNexus
Has this area had bugs before? claudememory
What changed recently? claudememory

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

claudememory-0.1.11.tar.gz (44.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

claudememory-0.1.11-py3-none-any.whl (47.0 kB view details)

Uploaded Python 3

File details

Details for the file claudememory-0.1.11.tar.gz.

File metadata

  • Download URL: claudememory-0.1.11.tar.gz
  • Upload date:
  • Size: 44.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for claudememory-0.1.11.tar.gz
Algorithm Hash digest
SHA256 f6bee020c3c2526eb75305e61bad3064800f3bf07ac6561e86b388a0981cc9e7
MD5 6c8115ff2304c3e03a5b186cde680808
BLAKE2b-256 0f8721c1f8195d6e7e0c1860904593cccfeb1c4d5cb24d9257adde90dd248c39

See more details on using hashes here.

File details

Details for the file claudememory-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: claudememory-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 47.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for claudememory-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 69cf6459f4446358bcb35a65072c9a7aef166c92a8f9b047381c991789ce8f88
MD5 e495d44776bbc16fc3ecc785ed305d27
BLAKE2b-256 539662e2ed5e0bb9c014a82b37a4822c6c5838f117bdc7a3f56fa80fb6e6d38a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page