loading…
Search for a command to run...
loading…
Persistent, searchable context storage across Claude Code sessions using SQLite FTS5. Save sessions with AI-generated summaries, two-tier full-text search, chec
Persistent, searchable context storage across Claude Code sessions using SQLite FTS5. Save sessions with AI-generated summaries, two-tier full-text search, checkpoint recovery, and a web dashboard.
License: MIT Python Latest Release CI Tests
Persistent, searchable context storage across Claude Code sessions using SQLite + FTS5.
Claude Code sessions are ephemeral - every conversation starts from zero. Close the terminal and everything you discussed, decided, and solved is gone. The only way to get that context back is to re-explain it or hope Claude reads the right files.
context-memory fixes this.
/recall authentication pulls up exactly what you did, what you decided, and why./recall retry pattern --detailed brings it back./recall --project scopes to whatever you're working in. Instant refresher on where you left off./recall CORS finds it regardless of which project it came from./remember and Claude does the rest: summarizes, extracts topics, identifies key code, stores it all. Add a note if you want, or don't.Without it, every session is a blank slate. With it, Claude Code has a long-term memory that grows more valuable the more you use it.
Core:
/remember generates rich summaries with brief/detailed text, key decisions, problems solved, technologies used, and outcome classification (success/partial/abandoned)Hooks:
/recall feature/auth-refactor finds sessions from that branchcontext_load_checkpoint MCP tool/remember save in the same project within a configurable window (default 5 minutes) and skips if one existsstop_hook_active to prevent recursive hook invocationExtras:
db_save.py, db_search.py, db_prune.py, db_init.py) have full argparse CLIs with --helpEngineering:
PRAGMA synchronous=NORMAL, PRAGMA temp_store=MEMORY.claude-plugin/plugin.json # Plugin manifest (version, metadata)
.mcp.json # MCP server config (project-level)
install.py # Installer (idempotent, selective flags)
uninstall.py # Uninstaller (copies itself to survive clone deletion)
hooks/hooks.json # Hook definitions (Stop + PreCompact)
commands/ # /remember and /recall command definitions
skills/context-memory/ # Skill definition (SKILL.md)
scripts/
__init__.py # Package init, version, public API re-exports
db_init.py # Schema creation, verification, stats, migrations
db_save.py # Session storage logic, deduplication
db_search.py # FTS5 search (tier 1 + tier 2)
db_prune.py # Database pruning (by age/count/checkpoints)
db_utils.py # Connection management, helpers, shared utilities
mcp_server.py # MCP server (FastMCP, stdio transport)
dashboard.py # Web dashboard (Flask REST API + SPA)
auto_save.py # Stop hook: cross-platform auto-save wrapper
pre_compact_save.py # PreCompact hook: saves full context before compaction
static/ # Dashboard frontend (~2,400 lines vanilla JS/CSS/HTML)
index.html # SPA entry point (Chart.js, Highlight.js CDN)
dashboard.css # Dual-theme CSS with custom properties
js/app.js # Router, theme toggle, navigation
js/api.js # REST API client
js/components/ # Charts, code blocks, modals, toasts, session cards
js/views/ # Search, sessions, detail, analytics, settings
references/
schema-reference.md # Full database schema reference
tests/ # 364 tests across 12 modules
.github/workflows/ci.yml # CI: lint (ruff) + test (Python 3.8, 3.11, 3.12)
git clone https://github.com/ErebusEnigma/context-memory.git
cd context-memory
python install.py
The installer copies the skill, commands, and hooks (Stop + PreCompact) to the correct Claude Code locations (~/.claude/) and initializes the database. It's idempotent — run it again to upgrade. On upgrade, the installer detects outdated hooks (old command paths, unexpanded ~ on Windows) and updates them in-place.
After installation, the cloned directory is no longer needed and can be deleted (or kept for future upgrades). The uninstaller is copied to ~/.claude/context-memory/uninstall.py so it works even after deleting the clone.
cd .. && rm -rf context-memory # optional cleanup
Installer flags:
| Flag | Description |
|---|---|
--symlink |
Symlink skill instead of copying (for development) |
--skip-skill |
Skip skill installation |
--skip-commands |
Skip command installation |
--skip-hooks |
Skip hook installation |
--skip-db |
Skip database initialization |
--skip-mcp |
Skip MCP server registration (useful if Python < 3.10) |
Note: The hooks use Python wrappers (
auto_save.py,pre_compact_save.py) and work cross-platform — Windows (CMD, PowerShell), macOS, and Linux.
python ~/.claude/context-memory/uninstall.py
This removes the skill, commands, hooks (both Stop and PreCompact), and MCP server registration. Your saved sessions are preserved by default. Use --remove-data to also delete the database, or --keep-data to skip the prompt. Use --force to remove command files even if they've been modified.
pip install mcppip install flask flask-cors/remember [note]Save the current session to context memory.
/remember
/remember "Fixed the auth bug with refresh tokens"
/remember "Important: OAuth2 implementation details"
Claude will automatically:
/recall <query> [options]Search past sessions.
/recall authentication
/recall "database migration" --project
/recall jwt --detailed --limit 5
Options:
--project - Limit search to the current project--detailed - Include full message content and code snippets--limit N - Maximum number of results (default: 10)Sessions are stored in a SQLite database at ~/.claude/context-memory/context.db with the following structure:
Search uses FTS5 (Full-Text Search 5) with two tiers:
Porter stemming is enabled, so "running" matches "run" and "authentication" matches "authenticate".
Performance is backed by SQLite tuning: WAL mode for concurrent access, 64MB cache, PRAGMA synchronous=NORMAL for balanced safety/speed, and PRAGMA temp_store=MEMORY for in-memory temp tables.
The plugin registers two hooks:
Stop hook (auto_save.py) — Automatically saves session context when Claude Code exits. Reads the JSON payload from Claude Code's stdin (session ID, transcript path) and parses the JSONL transcript to extract conversation messages. For long conversations, uses head+tail sampling (first 5 + last 10 messages) to keep the problem statement and resolution while trimming the middle. Detects the current git branch and adds it as a topic. Checks stop_hook_active to prevent recursive invocation. Skips saving if a rich /remember session already exists for the same project within a configurable dedup window (default 5 minutes) — identified by checking that the summary brief doesn't match the Auto-saved session pattern, which distinguishes /remember saves from thin auto-saves.
PreCompact hook (pre_compact_save.py) — Saves a full conversation checkpoint to the database before Claude Code compacts context. This preserves all messages without truncation or sampling. The recovery workflow: context gets compacted and detail is lost → Claude calls the context_load_checkpoint MCP tool → the full pre-compaction conversation is restored from the checkpoint.
The database schema auto-migrates forward on first access after an upgrade. Migrations are forward-only and preserve all existing data. The current schema version is 4:
| Version | Description |
|---|---|
| 1 | Core tables: sessions, messages, summaries, topics, code_snippets + FTS5 |
| 2 | Add schema_version table for migration tracking |
| 3 | Replace sessions_updated trigger with WHEN-guarded version |
| 4 | Add context_checkpoints table + indexes for pre-compact saves |
An optional MCP (Model Context Protocol) server exposes context-memory operations as tools that any MCP-compatible client can call directly — no shell commands or subprocess overhead required.
Tools provided:
context_search — Search past sessions (FTS5 + BM25)context_save — Save a session with messages, summary, topics, snippetscontext_stats — Database statisticscontext_init — Initialize/verify databasecontext_load_checkpoint — Load a pre-compact context checkpoint to restore full conversation after compactioncontext_dashboard — Launch the web dashboard (see Web Dashboard)Setup:
pip install mcp # Install the optional dependency
python install.py # Registers the MCP server automatically
To register manually (outside a Claude Code session), add an entry to ~/.claude/mcp_servers.json:
{
"context-memory": {
"command": "python",
"args": ["/full/path/to/.claude/skills/context-memory/scripts/mcp_server.py"],
"cwd": "/full/path/to/.claude/skills/context-memory/scripts"
}
}
The MCP server uses stdio transport and imports the existing Python modules directly (no subprocess calls). The mcp package is an optional dependency — the core plugin remains zero-dependency Python 3.8+. A project-level .mcp.json is also included for local development.
/remember "Implemented user authentication with JWT"
/recall database migration
/recall "API refactoring" --detailed
/recall authentication --project
/recall feature/auth-refactor
The context-memory skill also activates on natural language:
A full single-page application for browsing, searching, and managing your stored sessions. Built with ~2,400 lines of vanilla JS/CSS/HTML plus a 500-line Flask backend exposing 17 REST API endpoints.
pip install flask flask-cors
python skills/context-memory/scripts/dashboard.py
Then open http://127.0.0.1:5111.
Features:
/api/hints)Use --port to change the default port:
python skills/context-memory/scripts/dashboard.py --port 8080
The dashboard can also be launched via the MCP context_dashboard tool, which starts it in the background.
REST API: The dashboard backend exposes 17 endpoints under /api/ — sessions CRUD, search, analytics (timeline, topics, projects, outcomes, technologies), pruning, initialization, export, project listing, and search hints. These can be consumed by alternative frontends or external integrations.
Note: The dashboard requires
flaskandflask-cors(pip install flask flask-cors). These are not needed for the core plugin.
All core scripts have full argparse CLIs and can be run directly:
db_save.py — Save sessions from the command line:
python skills/context-memory/scripts/db_save.py --session-id abc123 --project-path /my/project \
--brief "Fixed auth bug" --topics "auth,jwt" --outcome success
python skills/context-memory/scripts/db_save.py --json session.json # or --json - for stdin
python skills/context-memory/scripts/db_save.py --auto --dedup-window 5 # auto-save mode with dedup
db_search.py — Search from the command line:
python skills/context-memory/scripts/db_search.py "authentication" --project /my/project --format json
python skills/context-memory/scripts/db_search.py "CORS" --detailed --limit 5
db_prune.py — Prune old data:
python skills/context-memory/scripts/db_prune.py --max-sessions 100 --dry-run
python skills/context-memory/scripts/db_prune.py --max-age 90 # delete sessions older than 90 days
python skills/context-memory/scripts/db_prune.py --prune-checkpoints --max-checkpoints-per-session 3
db_init.py — Database management:
python skills/context-memory/scripts/db_init.py # initialize database
python skills/context-memory/scripts/db_init.py --verify # verify schema integrity
python skills/context-memory/scripts/db_init.py --stats # show database statistics
python skills/context-memory/scripts/db_init.py --force # force recreation
Initialize or verify the database manually:
python skills/context-memory/scripts/db_init.py
python skills/context-memory/scripts/db_init.py --verify
python skills/context-memory/scripts/db_init.py --stats
The project has 364 tests across 12 test modules. CI runs on Python 3.8, 3.11, and 3.12 via GitHub Actions with ruff linting.
python -m pytest tests/ -v # run all tests
ruff check . # lint
See CONTRIBUTING.md for development setup, testing, and contribution guidelines.
MIT - See LICENSE for details.
ErebusEnigma
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"erebusenigma-context-memory": {
"command": "npx",
"args": []
}
}
}Query your database in natural language
Read-only database access with schema inspection.
Interact with Redis key-value stores.
Database interaction and business intelligence capabilities.