Solves the context loss problem between Claude Code sessions by parsing your JSONL conversation logs, extracting architectural decisions and bug fixes, then indexing them with embeddings for semantic retrieval. Exposes `memory_search`, `memory_recall`, `memory_save`, and `memory_stats` tools via MCP. You'd reach for this when you're tired of re-explaining your codebase's authentication setup or rediscovering why you configured CORS a certain way. Uses hybrid search combining vector similarity with SQLite FTS5 keyword matching. Supports Voyage, Anthropic, or fully local embeddings via sentence-transformers. Run `claude-memory ingest` to process your session history, then let Claude Desktop pull relevant context automatically when you start new conversations about the same project.
Cross-session memory for Claude Code — never lose context between sessions.
Claude Memory Manager automatically captures architectural decisions, code changes, bug fixes, and configuration choices from your Claude Code sessions, then intelligently retrieves relevant context when you start new sessions.
Every time you use Claude Code, valuable context is created and lost when the session ends:
Claude Memory Manager solves this by:
pip install claude-memory-manager
For local embeddings (no API key needed):
pip install claude-memory-manager[local]
For development:
pip install claude-memory-manager[dev]
claude-memory init
This creates the SQLite database at ~/.claude-memory/memory.db and saves a config file.
# Ingest all sessions from the default path (~/.claude/projects/)
claude-memory ingest
# Ingest from a specific path
claude-memory ingest /path/to/sessions
# Watch for new sessions and auto-ingest
claude-memory ingest --watch
# Search across all memories
claude-memory search "authentication setup"
# Filter by project
claude-memory search "database schema" --project /path/to/project
# Filter by category
claude-memory search "cors" --category config
# List all indexed projects
claude-memory context
# Generate summary for a specific project
claude-memory context /path/to/project
# With custom token limit
claude-memory context /path/to/project --max-tokens 3000
Add to your Claude Desktop config (see MCP Setup):
{
"mcpServers": {
"claude-memory": {
"command": "claude-memory-mcp",
"args": []
}
}
}
| Command | Description |
|---|---|
claude-memory init | Initialize the SQLite database |
claude-memory ingest [PATH] | Ingest session logs from path |
claude-memory ingest --watch | Watch and auto-ingest new sessions |
claude-memory search "query" | Hybrid semantic + keyword search |
claude-memory context [PROJECT] | Generate context summary |
claude-memory list | List all indexed sessions |
claude-memory stats | Database statistics |
claude-memory prune --older-than 90d | Remove old memories |
claude-memory export | Export memories as JSON |
claude-memory serve | Start MCP server mode |
| Option | Description |
|---|---|
--config PATH | Custom config file path |
--verbose / -v | Enable debug logging |
--version | Show version |
| Option | Description |
|---|---|
--project / -p | Filter by project path |
--category / -c | Filter by category |
--limit / -n | Max results (default: 5) |
Memories are classified into these categories:
decision — Architectural and design decisionscode_change — Significant code modificationsbug_fix — Bug identification and resolutionconfig — Configuration and environment changeserror_resolution — Errors encountered and solvedpreference — User preferences and conventionsdiscussion — General discussion summariesFind your Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAdd the memory server:
{
"mcpServers": {
"claude-memory": {
"command": "claude-memory-mcp",
"args": []
}
}
}
See examples/claude-desktop-config.json for a complete example.
Once connected, Claude Desktop can use these tools:
| Tool | Description |
|---|---|
memory_search | Search memories by query with optional filters |
memory_recall | Get a formatted context summary for a project |
memory_save | Save a new memory directly |
memory_stats | Get database statistics |
claude-memory-manager/
src/claude_memory/
cli.py # Click CLI commands
mcp_server.py # MCP stdio server
config.py # Configuration management
core/
extractor.py # Memory extraction from conversations
embedder.py # Embedding generation + caching
indexer.py # Pipeline: parse -> extract -> embed -> store
retriever.py # Hybrid semantic + keyword search
summarizer.py # Context summary generation
parsers/
jsonl_parser.py # Claude Code session log parser
diff_parser.py # Unified diff parser
storage/
database.py # SQLite + FTS5 operations
models.py # Pydantic data models
migrations.py # Schema versioning
integrations/
anthropic_embeddings.py # Voyage AI API
local_embeddings.py # sentence-transformers
utils/
formatting.py # CLI output formatting
license.py # License validation
Session Logs (.jsonl)
|
[JSONL Parser] -----> ParsedSession
|
[Extractor] --------> Memory objects (categorized, scored)
|
[Embedder] ----------> Embeddings (bytes for SQLite BLOB)
|
[Indexer] -----------> SQLite DB (with FTS5 index)
|
[Retriever] ---------> Search results (hybrid ranked)
|
[Summarizer] --------> Context summary (markdown)
Configuration is loaded from (in priority order):
~/.claude-memory/config.json)| Variable | Description | Default |
|---|---|---|
CLAUDE_SESSIONS_PATH | Path to session logs | ~/.claude/projects |
CLAUDE_MEMORY_DB_PATH | Database file path | ~/.claude-memory/memory.db |
CLAUDE_MEMORY_EMBEDDING_PROVIDER | anthropic, voyage, or local | local |
ANTHROPIC_API_KEY | Anthropic API key | — |
VOYAGE_API_KEY | Voyage AI API key | — |
CLAUDE_MEMORY_MAX_TOKENS | Max tokens for context | 2000 |
CLAUDE_MEMORY_LOG_LEVEL | Log level | INFO |
| Provider | Dimension | Requires |
|---|---|---|
voyage | 1024 | VOYAGE_API_KEY |
anthropic | 1024 | ANTHROPIC_API_KEY |
local | 384 | pip install claude-memory-manager[local] |
If no provider is available, a stub provider is used (keyword search still works, but semantic search is disabled).
Where are my memories stored?
In a SQLite database at ~/.claude-memory/memory.db. All data stays local.
Does this send my code to any API?
Only if you configure the Voyage or Anthropic embedding provider. In that case, only memory text content (not full session logs) is sent to generate embeddings. Use local for fully offline operation.
How does deduplication work? Each memory's content is hashed (SHA-256). If a memory with the same hash already exists, it is skipped during ingestion.
How does hybrid search work? Results from cosine-similarity vector search (70% weight) are combined with SQLite FTS5 keyword search results (30% weight). Memories appearing in both get combined scores.
Can I export my memories?
Yes: claude-memory export > memories.json or claude-memory export -o file.json.
How do I prune old memories?
claude-memory prune --older-than 90d removes memories older than 90 days. Supports d (days), w (weeks), m (months), y (years).
# Clone and install in development mode
git clone https://github.com/nyxtools/claude-memory-manager.git
cd claude-memory-manager
pip install -e ".[dev]"
# Run tests
pytest
# Type check
mypy src/
# Lint
ruff check src/ tests/
MIT License. Copyright (c) 2026 NyxTools.
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent