Documentation Index
Fetch the complete documentation index at: https://docs.claude-mem.ai/llms.txt
Use this file to discover all available pages before exploring further.
Architecture Overview
System Components
Claude-Mem operates as a Claude Code plugin with the following core components:
- Plugin Hooks - Lifecycle events (Setup version-check + 5 lifecycle hooks: SessionStart, UserPromptSubmit, PreToolUse for
Read, PostToolUse, Stop)
- Worker Service - Express HTTP API on a per-user port; processes observations via the Claude Agent SDK (or Gemini / OpenRouter)
- Database Layer - SQLite + FTS5 (and optional Chroma for semantic search)
- Search Tools - HTTP API + the
mem-search skill / MCP server for progressive disclosure search
- Viewer UI - React-based real-time memory stream served by the worker
Technology Stack
| Layer | Technology |
|---|
| Language | TypeScript (ES2022, ESNext modules) |
| Runtime | Node.js 20+ and Bun β₯ 1.0 |
| Database | SQLite 3 with bun:sqlite driver |
| Vector Store | Chroma (optional, for semantic search) |
| HTTP Server | Express.js 5 |
| Real-time | Server-Sent Events (SSE) |
| UI Framework | React + TypeScript |
| AI SDK | @anthropic-ai/claude-agent-sdk (or Gemini / OpenRouter) |
| Build Tool | esbuild (bundles TypeScript) |
| Process Manager | Bun |
| Testing | bun test |
Data Flow
Memory Pipeline
Hook (stdin) β Database β Worker Service β SDK Processor β Database β Next Session Hook
- Input: Claude Code sends tool execution data via stdin to hooks
- Storage: Hooks write observations to SQLite database
- Processing: Worker service reads observations, processes via SDK
- Output: Processed summaries written back to database
- Retrieval: Next sessionβs context hook reads summaries from database
Search Pipeline
User Query β MCP Tools Invoked β HTTP API β SessionSearch Service β FTS5 Database β Search Results β Claude
- User Query: User asks naturally: βWhat bugs did we fix?β
- MCP Tools Invoked: Claude recognizes intent and invokes MCP search tools
- HTTP API: MCP tools call HTTP endpoint (e.g.,
/api/search/observations)
- SessionSearch: Worker service queries FTS5 virtual tables
- Format: Results formatted and returned via MCP
- Return: Claude presents formatted results to user
Uses 3-layer progressive disclosure: search β timeline β get_observations
Session Lifecycle
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 0. Setup Hook Fires (version-check.js) β
β Sub-100ms read of .install-version; on mismatch prints β
β "run: npx claude-mem repair" to stderr. Always exits 0. β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 1. Session Starts β Worker-start, then Context Hook β
β Starts Bun worker if needed, injects context from previous β
β sessions (configurable observation count) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 2. User Types Prompt β UserPromptSubmit Hook Fires β
β Creates session in database, saves raw user prompt for FTS5 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 3. Claude Uses Tools β PostToolUse Hook Fires (100+ times) β
β Captures tool executions, sends to worker for AI compression β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 4. Worker Processes β Claude Agent SDK Analyzes β
β Extracts structured learnings via iterative AI processing β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 5. Claude Stops β Summary Hook Fires β
β Generates final summary with request, completions, learnings β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 6. Session Ends β Cleanup Hook Fires β
β Marks session complete (graceful, not DELETE), ready for β
β next session context. Skips on /clear to preserve ongoing β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Directory Structure
claude-mem/
βββ src/
β βββ hooks/ # TypeScript hook implementations (built via esbuild)
β βββ sdk/ # Claude Agent SDK integration
β βββ services/
β β βββ worker-service.ts # Express HTTP + SSE service (worker entry point)
β β βββ sync/ChromaSync.ts # Optional Chroma vector index
β β βββ sqlite/ # SQLite + FTS5 storage layer
β βββ ui/viewer/ # React + TypeScript web viewer
β βββ shared/ # Shared utilities (paths, settings defaults)
β βββ utils/ # Logging, platform, tag-stripping helpers
β
βββ scripts/ # Build + utility scripts
β
βββ plugin/ # Plugin distribution (synced to marketplace)
β βββ .claude-plugin/plugin.json
β βββ hooks/hooks.json # Hook registration (Setup + 5 lifecycle hooks)
β βββ scripts/ # Built executables
β β βββ version-check.js # Setup-phase marker check (sub-100ms)
β β βββ bun-runner.js # Resolves Bun and runs worker-service.cjs
β β βββ worker-service.cjs # Worker daemon + lifecycle hook dispatcher
β β βββ worker-cli.js # CLI shim
β β βββ worker-wrapper.cjs # Process wrapper
β β βββ mcp-server.cjs # MCP search server
β β βββ statusline-counts.js
β β βββ context-generator.cjs
β βββ skills/ # Agent skills (mem-search, make-plan, do, etc.)
β βββ ui/viewer.html # Self-contained React bundle
β
βββ tests/ # Test suite (`bun test`)
βββ docs/ # Mintlify documentation
βββ openclaw/ # OpenClaw integration plugin
Component Details
1. Plugin Hooks
The plugin registers a Setup-phase version-check.js plus five lifecycle hooks. Each lifecycle event invokes bun-runner.js to spawn worker-service.cjs with a hook claude-code <event> argument; the worker process is the single dispatcher for all hook logic. Events:
- Setup β
version-check.js (sub-100ms marker check; never installs anything)
- SessionStart β start worker, then
hook claude-code context (context injection)
- UserPromptSubmit β
hook claude-code session-init
- PreToolUse (matcher
Read) β hook claude-code file-context
- PostToolUse (matcher
*) β hook claude-code observation
- Stop β
hook claude-code summarize (summary generation)
The actual runtime install (Bun, uv, bun install) is performed by npx claude-mem install / npx claude-mem repair with a visible installer spinner; the Setup hook itself only reads the .install-version marker.
See Plugin Hooks for detailed hook documentation.
2. Worker Service
Express.js HTTP server on a per-user port (default 37700 + (uid % 100), override via CLAUDE_MEM_WORKER_PORT) with:
- Search HTTP API endpoints
- Viewer UI HTTP/SSE endpoints
- Async observation processing via the Claude Agent SDK (or Gemini / OpenRouter)
- Real-time updates via Server-Sent Events
- Auto-managed by Bun
See Worker Service for HTTP API and endpoints.
3. Database Layer
SQLite3 with bun:sqlite driver featuring:
- FTS5 virtual tables for full-text search
- SessionStore for CRUD operations
- SessionSearch for FTS5 queries
- Location:
~/.claude-mem/claude-mem.db
See Database Architecture for schema and FTS5 search.
4. mem-search Skill (v5.4.0+)
Skill-based search with progressive disclosure providing 10 search operations:
- Search observations, sessions, prompts (full-text FTS5)
- Filter by type, concept, file
- Get recent context, timeline, timeline by query
- API help documentation
Token Savings: ~2,250 tokens per session vs MCP approach
- Skill frontmatter: ~250 tokens (loaded at session start)
- Full instructions: ~2,500 tokens (loaded on-demand when invoked)
- HTTP API endpoints instead of MCP tools
Skill Enhancement (v5.5.0): Renamed from βsearchβ to βmem-searchβ for better scope differentiation. Effectiveness increased from 67% to 100% with enhanced triggers and comprehensive documentation.
See Search Architecture for technical details and examples.
5. Viewer UI
React + TypeScript web interface served by the worker on its configured port (default http://127.0.0.1:<worker-port>) featuring:
- Real-time memory stream via Server-Sent Events
- Infinite scroll pagination with automatic deduplication
- Project filtering and settings persistence
- GPU-accelerated animations
- Self-contained HTML bundle (viewer.html)
Built with esbuild into a single file deployment.