Persistent memory system for Claude Code - Transform your AI coding sessions from isolated conversations into continuous knowledge.
claude-mem is a Claude Code plugin that captures, compresses, and recalls knowledge across sessions. It automatically:
- Extracts observations from every tool use (file reads, edits, searches)
- Generates summaries at session end
- Injects context into new sessions via CLAUDE.md files
- Enables semantic search across your project's history
| Feature | Description |
|---|---|
| Observation Extraction | AI-powered extraction of insights from tool outputs |
| Session Summaries | Compressed session history with request/learned/completed |
| Auto CLAUDE.md | Generates context files in your project directories |
| MCP Search Tools | Semantic search across observations and memories |
| Multi-Provider | Supports Anthropic, Mistral, OpenAI, Gemini for AI tasks |
| Web UI | Browse sessions, observations, and summaries |
| Document Caching | Caches Context7/WebFetch results for reuse |
| SSE Real-Time Updates | Live updates to CLAUDE.md files during sessions |
| Code Snippets | Automatic extraction and storage of code examples |
| Insights Dashboard | Daily stats, technology usage tracking, achievements |
| Auto-Spawn Workers | Automatic worker spawning on backend startup |
| Task Deduplication | Prevents duplicate task processing via SHA-256 hashing |
Observations are AI-extracted insights from tool usage. Each observation captures:
- Title & Text: Concise summary of what happened
- Type: One of 18 categories (see below)
- Facts: Extracted factual statements
- Concepts: Related patterns and ideas
- Files: Read and modified file paths
Observation Types:
| Category | Types | Emoji |
|---|---|---|
| Work | bugfix, feature, refactor, change |
π΄ π£ π π’ |
| Docs & Config | docs, config |
π βοΈ |
| Quality | test, security, performance |
π§ͺ π β‘ |
| Infrastructure | deploy, infra, migration |
π ποΈ π¦ |
| Knowledge | discovery, decision, research |
π΅ π‘ π |
| Integration | integration, dependency, api |
π π π |
session-start β user-prompt-submit β post-tool-use (repeated) β stop
β β β
βΌ βΌ βΌ
Inject context Extract observations Generate summary
Spawn SSE writer Queue AI extraction tasks Update CLAUDE.md
Background workers process AI tasks with priority-based scheduling:
| Task Type | Priority | Description |
|---|---|---|
observation |
50 | Extract insights from tool output |
summarize |
40 | Compress session observations |
embedding |
30 | Generate vector embeddings |
claude-md |
20 | Generate CLAUDE.md content |
The SSE Writer is a standalone Node.js process that handles real-time CLAUDE.md updates:
- Spawned per session at
session-starthook - Connects to
/api/streamvia EventSource API - Validates session/project/directory before every write (security boundary)
- Listens for events:
claudemd:ready,session:ended - Preserves user content outside
<claude-mem-context>tags - Auto-exits after 10 minutes if no relevant events
- PID management for cleanup via
~/.claude-mem/sse-writer-*.pid
βββββββββββββββ SSE βββββββββββββββ
β Backend β βββββββββββββΆ β SSE Writer β
β (Express) β claudemd:readyβ (Node.js) β
βββββββββββββββ ββββββββ¬βββββββ
β
βΌ
βββββββββββββββ
β CLAUDE.md β
β files β
βββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Claude Code β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β SessionStartβ βPostToolUse β β Stop β β
β β Hook β β Hook β β Hook β β
β ββββββββ¬βββββββ ββββββββ¬βββββββ ββββββββ¬βββββββ β
βββββββββββΌβββββββββββββββββΌβββββββββββββββββΌββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Backend (Express) β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Session β β Task β β SSE β β
β β Service β β Service β β Broadcaster β β
β ββββββββ¬βββββββ ββββββββ¬βββββββ ββββββββ¬βββββββ β
βββββββββββΌβββββββββββββββββΌβββββββββββββββββΌββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ
β Database β β Worker β β SSE Writer β
β(SQLite/Postgres)β β (AI Agent) β β (CLAUDE.md files) β
βββββββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ
# Install from Claude Code marketplace
claude mcp install claude-mem# Clone the repository
git clone https://git.customable.host/customable/claude-mem.git
cd claude-mem
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Build plugin for marketplace
pnpm build:plugin
# Sync to Claude installations
pnpm sync-marketplacepackages/
βββ types/ # Shared TypeScript types
βββ shared/ # Utilities, logging, settings
βββ database/ # SQLite/PostgreSQL + MikroORM repositories
βββ backend/ # Express API server
βββ worker/ # AI agents for observation extraction
βββ hooks/ # Claude Code hook handlers
βββ ui/ # React web interface
Settings are stored in ~/.claude-mem/settings.json:
{
"BACKEND_PORT": 37777,
"AI_PROVIDER": "anthropic",
"ANTHROPIC_API_KEY": "sk-ant-...",
"CLAUDEMD_ENABLED": true,
"CLAUDEMD_OBSERVATION_INTERVAL": 10,
"LOG_LEVEL": "info"
}claude-mem exposes search tools via MCP:
// Search observations
mcp__plugin_claude-mem_mcp-search__search({
query: "authentication implementation",
limit: 10
})
// Get observation details
mcp__plugin_claude-mem_mcp-search__get_observations({
ids: [123, 456]
})
// Save a memory
mcp__plugin_claude-mem_mcp-search__save_memory({
text: "Important decision about architecture",
type: "decision"
})# Restart dev server (backend + UI)
pnpm run dev:restart
# Type check all packages
pnpm run typecheck
# Build plugin
pnpm run build:pluginSQLite (default) or PostgreSQL database, managed by MikroORM. See docs/DATABASE.md for detailed setup instructions.
# Default (SQLite)
claude-mem-backend start
# With PostgreSQL
claude-mem-backend start --db postgres://user:pass@localhost:5432/claudemem
# Or via environment variable
DATABASE_URL=postgres://user:pass@localhost:5432/claudemem claude-mem-backend startSQLite database at ~/.claude-mem/claude-mem.db:
| Table | Description |
|---|---|
sessions |
Claude Code sessions with metadata |
observations |
AI-extracted insights from tool use |
summaries |
Compressed session summaries |
claudemd |
Generated CLAUDE.md content |
tasks |
Worker task queue with deduplication |
documents |
Cached external documentation (Context7/WebFetch) |
prompts |
User prompts with urgency tracking |
code_snippets |
Extracted code examples from sessions |
achievements |
User achievements and milestones |
daily_stats |
Aggregated daily statistics |
technology_usage |
Technology usage tracking |
observation_links |
Links between related observations |
repositories |
Git repository metadata |
Current high-priority items:
- Endless Mode (#109) - Real-time context compression for unlimited session length
- β Documents Search (#115) - MCP tool for searching cached documentation
- β Process/Memory Leaks (#101) - Fix orphaned worker processes
- β Database Schema Redesign (#197) - Modernized table structure with MikroORM
See all open issues for the full list.
Originally based on thedotmack/claude-mem. This project has since evolved into an independent implementation with:
- Modular monorepo architecture
- Multi-provider AI support (Anthropic, Mistral, OpenAI)
- Auto-generated CLAUDE.md files per subdirectory
- Document caching for Context7/WebFetch
- Forgejo integration
- Claude Code - Anthropic's agentic coding tool
MIT