github JavaScript analyzed cf81df8

sdsrss/claude-mem-lite

github

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.

maintainer
sdsrss
license
MIT
first seen
2026-06-01
last seen
2026-07-24
releases · 30d
37
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit cf81df8 · analyzer v28 · 1d ago

skills & prompt files 2

code evidence vv3.59.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 400

filesystem 47

  • fs sdsrss-claude-mem-lite-cf81df8/adopt-cli.mjs :16 import { existsSync, readdirSync, statSync, mkdirSync, writeFileSync, unlinkSync, readFileSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/claudemd.mjs :19 import { readFileSync, writeFileSync, existsSync, renameSync, unlinkSync, mkdirSync, rmdirSync, readdirSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/experiment/analyze-results.mjs :11 import { readFileSync } from 'node:fs';
  • fs sdsrss-claude-mem-lite-cf81df8/experiment/lib/real-deps.mjs :9 import { mkdtempSync, rmSync, mkdirSync, writeFileSync } from 'node:fs';
  • fs sdsrss-claude-mem-lite-cf81df8/experiment/run-experiment.mjs :14 import { readdirSync, readFileSync, writeFileSync, appendFileSync } from 'node:fs';
  • fs sdsrss-claude-mem-lite-cf81df8/haiku-client.mjs :12 import { readFileSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/hook-context.mjs :9 import { existsSync, readFileSync, writeFileSync, renameSync, unlinkSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/hook-episode.mjs :5 import { readFileSync, writeFileSync, unlinkSync, readdirSync, openSync, closeSync, writeSync, renameSync, statSync, constants as fsConstants } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/hook-llm.mjs :5 import { existsSync, readFileSync, unlinkSync, readdirSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/hook-optimize.mjs :9 import { readFileSync, writeFileSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/hook-semaphore.mjs :5 import { readFileSync, unlinkSync, readdirSync, openSync, closeSync, writeSync, constants as fsConstants } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/hook-shared.mjs :7 import { existsSync, readFileSync, writeFileSync, mkdirSync, renameSync, readdirSync, statSync, unlinkSync, chmodSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/hook-update.mjs :6 import { readFileSync, writeFileSync, copyFileSync, cpSync, readdirSync, existsSync, lstatSync, mkdirSync, mkdtempSync, rmSync, renameSync, chmodSync } from 'node:fs';
  • fs sdsrss-claude-mem-lite-cf81df8/hook.mjs :23 import { readFileSync, writeFileSync, unlinkSync, readdirSync, renameSync, statSync, existsSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/install.mjs :5 import { readFileSync, writeFileSync, existsSync, rmSync, mkdirSync, mkdtempSync, copyFileSync, cpSync, renameSync, symlinkSync, unlinkSync, readdirSync, statSync, lstatSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/atomic-write.mjs :11 import { writeFileSync, renameSync, existsSync, copyFileSync, mkdirSync, lstatSync, realpathSync } from 'node:fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/citation-tracker.mjs :13 import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/cite-back-hint.mjs :15 import { readFileSync, existsSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/db-backup.mjs :10 import { readdirSync, unlinkSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/doctor-benchmark.mjs :12 import { readFileSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/doctor-drift.mjs :11 import { existsSync, lstatSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/edge-attribution.mjs :17 import { readFileSync, existsSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/err-sampler.mjs :18 import { appendFileSync, mkdirSync, existsSync, readdirSync, statSync, unlinkSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/file-intel.mjs :13 import { statSync, openSync, readSync, closeSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/hook-telemetry.mjs :21 import { appendFileSync, mkdirSync, existsSync, readdirSync, readFileSync, statSync, unlinkSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/import-jsonl.mjs :17 import { readFileSync, statSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/metrics.mjs :19 import { appendFileSync, existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/native-binding-hint.mjs :22 import { readFileSync, writeFileSync, mkdirSync, renameSync } from 'node:fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/persist-reminder.mjs :14 import { readFileSync, existsSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/plan-reader.mjs :8 import { readdirSync, statSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/proc-lock.mjs :19 import { writeFileSync, readFileSync, unlinkSync, mkdirSync } from 'node:fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/release-digest.mjs :26 import { readFileSync, existsSync } from 'node:fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/reread-guard.mjs :14 import { statSync, openSync, readSync, closeSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/summary-extractor.mjs :12 import { readFileSync, existsSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/task-reader.mjs :28 import { readdirSync, readFileSync, statSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/tmp-fixture-sweep.mjs :15 import { readdirSync, statSync, rmSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/lib/upgrade-banner.mjs :7 import { writeFileSync, existsSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/mem-cli.mjs :38 import { readFileSync, existsSync, readdirSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/memdir.mjs :12 import { readFileSync, writeFileSync, existsSync, renameSync, unlinkSync, mkdirSync, readdirSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/plugin-cache-guard.mjs :15 import { readFileSync, writeFileSync, readdirSync, existsSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/registry-importer.mjs :9 import { mkdirSync, writeFileSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/registry-recommend.mjs :6 import { readFileSync, writeFileSync, renameSync, existsSync, mkdirSync, appendFileSync, readdirSync, unlinkSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/registry-scanner.mjs :5 import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/registry.mjs :5 import { existsSync, mkdirSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/resource-discovery.mjs :4 import { existsSync, readdirSync, statSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/schema.mjs :8 import { existsSync, mkdirSync, readdirSync, renameSync, rmSync, chmodSync } from 'fs';
  • fs sdsrss-claude-mem-lite-cf81df8/server.mjs :69 import { existsSync, readFileSync, writeFileSync, appendFileSync, mkdirSync, readdirSync, chmodSync } from 'fs';

shell / exec 12

  • shell sdsrss-claude-mem-lite-cf81df8/claudemd.mjs :160 // Function replacer (not a string): a `$`-sequence in `section` (a future template with
  • shell sdsrss-claude-mem-lite-cf81df8/experiment/lib/real-deps.mjs :8 import { spawnSync, execFileSync } from 'node:child_process';
  • shell sdsrss-claude-mem-lite-cf81df8/haiku-client.mjs :8 import { execFileSync, spawn } from 'child_process';
  • shell sdsrss-claude-mem-lite-cf81df8/hook-shared.mjs :4 import { execFileSync, spawn } from 'child_process';
  • shell sdsrss-claude-mem-lite-cf81df8/hook-update.mjs :5 import { execSync, execFileSync } from 'node:child_process';
  • shell sdsrss-claude-mem-lite-cf81df8/hook.mjs :251 // suppresses the detached enrichment spawn (test determinism; sibling of
  • shell sdsrss-claude-mem-lite-cf81df8/install.mjs :4 import { execSync, execFileSync } from 'child_process';
  • shell sdsrss-claude-mem-lite-cf81df8/lib/binding-probe.mjs :9 import { execSync } from 'node:child_process';
  • shell sdsrss-claude-mem-lite-cf81df8/lib/file-intel.mjs :9 // child_process/nlp/scoring-sql.) estimateContentTokens is therefore a hand-
  • shell sdsrss-claude-mem-lite-cf81df8/lib/git-state.mjs :5 import { execFileSync } from 'child_process';
  • shell sdsrss-claude-mem-lite-cf81df8/lib/save-enrich.mjs :24 import { spawn } from 'child_process';
  • shell sdsrss-claude-mem-lite-cf81df8/utils.mjs :6 import { execSync } from 'child_process';

network 5

  • net sdsrss-claude-mem-lite-cf81df8/haiku-client.mjs :9 import http from 'node:http';
  • net sdsrss-claude-mem-lite-cf81df8/hook-update.mjs :237 const res = await fetch(url, { signal: controller.signal, headers });
  • net sdsrss-claude-mem-lite-cf81df8/hook.mjs :1404 // background worker so SessionStart never blocks on a GitHub fetch (was an
  • net sdsrss-claude-mem-lite-cf81df8/mem-cli.mjs :799 // Window fetch (access-count bump + project auto-scope) shared with MCP.
  • net sdsrss-claude-mem-lite-cf81df8/server.mjs :488 // Window fetch (access-count bump + project auto-scope) shared with CLI.

secrets 2

  • secrets sdsrss-claude-mem-lite-cf81df8/haiku-client.mjs :153 if (process.env.ANTHROPIC_API_KEY) _mode = 'api';
  • secrets sdsrss-claude-mem-lite-cf81df8/registry-github.mjs :63 const token = process.env.GITHUB_TOKEN;

database 3

  • db sdsrss-claude-mem-lite-cf81df8/experiment/lib/seed-db.mjs :6 import Database from 'better-sqlite3';
  • db sdsrss-claude-mem-lite-cf81df8/registry.mjs :4 import Database from 'better-sqlite3';
  • db sdsrss-claude-mem-lite-cf81df8/schema.mjs :5 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