Persistent long-term memory for Claude Code via MCP — captures coding decisions, bugfixes, and context across sessions. Hybrid FTS5 + TF-IDF search with episode batching. Single SQLite DB, no external services. Alternative to claude-mem with 600x lower cost.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
mem_browse
claude-mem-lite browse
-
mem_compress
claude-mem-lite compress --preview
-
mem_defer
Mark work for a future session (v2.70+). First-class carry-forward signal, surfaced in SessionStart ### Deferred Work block.
-
mem_defer_drop
Drop a deferred item without fixing it; requires a reason for the audit trail.
-
mem_defer_list
List open deferred items for the current project.
-
mem_delete
claude-mem-lite delete <id>
-
mem_export
claude-mem-lite export
-
mem_fts_check
claude-mem-lite fts-check [--rebuild]
-
mem_get
Retrieve full details for specific observation IDs (includes importance and related_ids).
-
mem_maintain
claude-mem-lite maintain --action scan
-
mem_optimize
claude-mem-lite optimize --action preview
-
mem_recall
Recall observations related to a file. Use before editing to surface past bugfixes and context.
-
mem_recent
Show most recent observations, ordered by time. Quick snapshot of latest activity.
-
mem_registry
claude-mem-lite registry <action>
-
mem_save
Manually save a memory/observation. Accepts closes_deferred array for transactional closure of deferred work.
-
mem_search
FTS5 full-text search with BM25 ranking. Filters by type, project, date range, importance level.
-
mem_stats
claude-mem-lite stats
-
mem_timeline
Browse observations chronologically around an anchor point.
-
mem_update
claude-mem-lite update <id>
-
mem_use
_MCP only_
analyzed commit 609ed47 · analyzer v17 · 14h ago
skills & prompt files 2
filesystem 47
- fs sdsrss-claude-mem-lite-609ed47/adopt-cli.mjs :12
import { existsSync, readdirSync, statSync, mkdirSync, writeFileSync, unlinkSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/experiment/analyze-results.mjs :11
import { readFileSync } from 'node:fs'; - fs sdsrss-claude-mem-lite-609ed47/experiment/lib/real-deps.mjs :9
import { mkdtempSync, rmSync, mkdirSync, writeFileSync } from 'node:fs'; - fs sdsrss-claude-mem-lite-609ed47/experiment/run-experiment.mjs :14
import { readdirSync, readFileSync, writeFileSync, appendFileSync } from 'node:fs'; - fs sdsrss-claude-mem-lite-609ed47/haiku-client.mjs :9
import { readFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/hook-context.mjs :5
import { existsSync, readFileSync, writeFileSync, renameSync, unlinkSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/hook-episode.mjs :5
import { readFileSync, writeFileSync, unlinkSync, readdirSync, openSync, closeSync, writeSync, renameSync, statSync, constants as fsConstants } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/hook-llm.mjs :5
import { existsSync, readFileSync, unlinkSync, readdirSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/hook-optimize.mjs :5
import { readFileSync, writeFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/hook-semaphore.mjs :5
import { readFileSync, unlinkSync, readdirSync, openSync, closeSync, writeSync, constants as fsConstants } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/hook-shared.mjs :7
import { existsSync, readFileSync, writeFileSync, mkdirSync, renameSync, readdirSync, statSync, unlinkSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/hook-update.mjs :6
import { readFileSync, writeFileSync, copyFileSync, cpSync, readdirSync, existsSync, lstatSync, mkdirSync, rmSync, renameSync, chmodSync } from 'node:fs'; - fs sdsrss-claude-mem-lite-609ed47/hook.mjs :23
import { readFileSync, writeFileSync, unlinkSync, readdirSync, renameSync, statSync, existsSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/install.mjs :5
import { readFileSync, writeFileSync, existsSync, rmSync, mkdirSync, copyFileSync, cpSync, renameSync, symlinkSync, unlinkSync, readdirSync, statSync, lstatSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/citation-tracker.mjs :13
import { readFileSync, existsSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/cite-back-hint.mjs :15
import { readFileSync, existsSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/doctor-benchmark.mjs :12
import { readFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/doctor-drift.mjs :11
import { existsSync, lstatSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/err-sampler.mjs :18
import { appendFileSync, mkdirSync, existsSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/hook-telemetry.mjs :21
import { appendFileSync, mkdirSync, existsSync, readdirSync, readFileSync, statSync, unlinkSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/import-jsonl.mjs :17
import { readFileSync, statSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/metrics.mjs :19
import { appendFileSync, existsSync, mkdirSync, readdirSync, readFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/plan-reader.mjs :8
import { readdirSync, statSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/summary-extractor.mjs :12
import { readFileSync, existsSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/task-reader.mjs :28
import { readdirSync, readFileSync, statSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/tmp-fixture-sweep.mjs :15
import { readdirSync, statSync, rmSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/lib/upgrade-banner.mjs :7
import { writeFileSync, existsSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/mem-cli.mjs :29
import { readFileSync, existsSync, readdirSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/memdir.mjs :12
import { readFileSync, writeFileSync, existsSync, renameSync, unlinkSync, mkdirSync, readdirSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/plugin-cache-guard.mjs :15
import { readFileSync, writeFileSync, readdirSync, existsSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/registry-importer.mjs :9
import { mkdirSync, writeFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/registry-scanner.mjs :5
import { existsSync, readdirSync, readFileSync, statSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/registry.mjs :5
import { existsSync, mkdirSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/resource-discovery.mjs :4
import { existsSync, readdirSync, statSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/schema.mjs :8
import { existsSync, mkdirSync, readdirSync, renameSync, rmSync, chmodSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/convert-commands.mjs :5
import { readdirSync, readFileSync, writeFileSync, mkdirSync, rmSync, existsSync, statSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/extract-repos.mjs :8
import { readdirSync, readFileSync, statSync, existsSync, mkdirSync, copyFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/hook-launcher.mjs :21
import { existsSync, mkdirSync, writeFileSync, statSync } from 'node:fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/index-managed.mjs :7
import { readFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/launch-preflight.mjs :14
import { existsSync, readFileSync } from 'node:fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/launch.mjs :5
import { existsSync, lstatSync } from 'node:fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/p0-forward-probe.mjs :8
import { readdirSync, statSync, createReadStream, copyFileSync, unlinkSync } from 'node:fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/pre-skill-bridge.js :6
import { existsSync, readFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/pre-tool-recall.js :7
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/prompt-search-utils.mjs :4
import { readFileSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/scripts/user-prompt-search.js :10
import { writeFileSync, readFileSync, existsSync, renameSync } from 'fs'; - fs sdsrss-claude-mem-lite-609ed47/server.mjs :57
import { rmSync, existsSync, readFileSync, appendFileSync, mkdirSync } from 'fs';
shell / exec 10
- shell sdsrss-claude-mem-lite-609ed47/experiment/lib/real-deps.mjs :8
import { spawnSync, execFileSync } from 'node:child_process'; - shell sdsrss-claude-mem-lite-609ed47/haiku-client.mjs :8
import { execFileSync } from 'child_process'; - shell sdsrss-claude-mem-lite-609ed47/hook-shared.mjs :4
import { execFileSync, spawn } from 'child_process'; - shell sdsrss-claude-mem-lite-609ed47/hook-update.mjs :5
import { execSync, execFileSync } from 'node:child_process'; - shell sdsrss-claude-mem-lite-609ed47/install.mjs :4
import { execSync, execFileSync } from 'child_process'; - shell sdsrss-claude-mem-lite-609ed47/lib/binding-probe.mjs :9
import { execSync } from 'node:child_process'; - shell sdsrss-claude-mem-lite-609ed47/lib/git-state.mjs :5
import { execFileSync } from 'child_process'; - shell sdsrss-claude-mem-lite-609ed47/scripts/hook-launcher.mjs :22
import { spawnSync } from 'node:child_process'; - shell sdsrss-claude-mem-lite-609ed47/scripts/launch.mjs :4
import { execSync } from 'node:child_process'; - shell sdsrss-claude-mem-lite-609ed47/utils.mjs :6
import { execSync } from 'child_process';
network 5
- net sdsrss-claude-mem-lite-609ed47/haiku-client.mjs :275
const res = await fetch('https://api.anthropic.com/v1/messages', { - net sdsrss-claude-mem-lite-609ed47/hook-update.mjs :232
const res = await fetch(url, { signal: controller.signal, headers }); - net sdsrss-claude-mem-lite-609ed47/hook.mjs :1160
// background worker so SessionStart never blocks on a GitHub fetch (was an - net sdsrss-claude-mem-lite-609ed47/mem-cli.mjs :680
// Window fetch (access-count bump + project auto-scope) shared with MCP. - net sdsrss-claude-mem-lite-609ed47/server.mjs :522
// Window fetch (access-count bump + project auto-scope) shared with CLI.
secrets 2
- secrets sdsrss-claude-mem-lite-609ed47/haiku-client.mjs :81
if (process.env.ANTHROPIC_API_KEY) _mode = 'api'; - secrets sdsrss-claude-mem-lite-609ed47/registry-github.mjs :51
const token = process.env.GITHUB_TOKEN;
database 6
- db sdsrss-claude-mem-lite-609ed47/experiment/lib/seed-db.mjs :6
import Database from 'better-sqlite3'; - db sdsrss-claude-mem-lite-609ed47/registry.mjs :4
import Database from 'better-sqlite3'; - db sdsrss-claude-mem-lite-609ed47/schema.mjs :5
import Database from 'better-sqlite3'; - db sdsrss-claude-mem-lite-609ed47/scripts/index-managed.mjs :6
import Database from 'better-sqlite3'; - db sdsrss-claude-mem-lite-609ed47/scripts/p0-forward-probe.mjs :7
import Database from 'better-sqlite3'; - db sdsrss-claude-mem-lite-609ed47/scripts/user-prompt-search.js :12
import Database from 'better-sqlite3';
declared dependencies 9
- @modelcontextprotocol/sdk@^1.26.0
- better-sqlite3@^12.6.2
- zod@^4.3.6
- @eslint/js@^10.0.1
- @vitest/coverage-v8@^4.0.18
- eslint@^10.0.0
- fast-check@^4.5.3
- knip@^6.12.1
- vitest@^4.0.18