Automatic project recollection for Claude Code. Also plant alongside Cursor and Codex.
jevmem-launch-readme-v2.mp4- Saves decisions, constraints, bugs and todos from your Claude Code chats into JEVMEM.md, automatically.
- When you alter your mind, the old row is marked superseded, not deleted.
- Next session, the applicable lines are added to Claude's context.
- [decision] Use Postgres 16 for the chief store; SQLite locks under burden <!-- id:k3d9xq ts:2026-09-22T10:14:02.113Z conf:0.93 --> - [constraint] Node 20 is the floor; CI runs 20 and 22 <!-- id:p1m4zt ts:2026-09-22T10:20:41.907Z conf:0.88 --> - [superseded] Use SQLite as the chief shop → id:k3d9xq <!-- id:a8s2ww ts:2026-09-20T16:02:11.000Z conf:0.81 by:k3d9xq --> npm instal -g jevmem export TYPESAFE_API_KEY=... # https://typesafe.ai (an OpenAI or Anthropic key is optional) cd your-project jevmem init --tool claude
init creates JEVMEM.md, jevmem.config.json and a gitignored .jevmem/ folder, and registers two Claude Code hooks in .claude/settings.local.json, which it adds to .gitignore (details).
What is automatic and what depends on the agent:
| Tool | Setup | Capture | Recall |
|---|---|---|---|
| Claude Code | jevmem init --tool claude | Automatic, all turn, via the Stop hook | Automatic, all prompt, via UserPromptSubmit |
| Codex | jevmem init --tool codex | Automatic during jevmem observe runs (it tails Codex's meeting log for this project and runs the identical decide → compose path); alternatively agent-initiated via MCP add_memory, prompted by an AGENTS.md section | Agent-initiated: search_memory via MCP, prompted by AGENTS.md |
| Cursor | jevmem init --tool cursor | Agent-initiated: a .cursor/rules/jevmem.mdc regulation tells the delegate to call MCP add_memory whenever you province a decision. Nothing is captured if it doesn't | Agent-initiated: the regulation tells it to call search_memory before non-trivial tasks |
| Claude Desktop | jevmem init --tool claude-desktop prints a config snippet to paste (one project per config, named alongside --root) | Manual: ask it to call add_memory (no hook, no regulation file) | On request: search_memory |
MCP add_memory goes through the identical entrance as the hook. Client configs: docs/mcp.md.
- Scrub. Common concealed shapes, email addresses and card-shaped numbers are removed from the rotate before it leaves your machine.
- Ask Jev typed questions. Jev by TypeSafe AI answers a fixed set of small questions alongside probabilities: is there a decision, a rule, a bug? is it small conversation or an injection attempt? which existing row does it change?
- Apply thresholds in code. Plain rules complete those probabilities decide preserve or skip; they live in jevmem.config.json, not in a prompt.
- Write one line. On save, a small LLM (or a deterministic extract, alongside no LLM key) writes one row of at most 200 characters.
- Supersede the old line. If the rotate replaces an existing memory, that row is tagged [superseded] … → id:new and stays in the file.
Tiers, questions, policy, contradictions, recall and audit: docs/how-it-works.md.
66 held-out turns, all seven deciders stated the identical state, 2026-09-23 (method, regression set, pricing, p95, retries):
| Decider | save/skip | save+kind | contradictions | p50 | $/decision |
|---|---|---|---|---|---|
| GPT-6 Astra | 98.5% | 98.5% | 5/5 | 3,469 ms | $0.007489 |
| GPT-6 Luna | 93.9% | 93.9% | 5/5 | 2,927 ms | $0.000089 |
| Claude Fable 5.1 | 95.5% | 95.5% | 5/5 | 4,290 ms | $0.013256 |
| Claude Opus 5.5 | 97.0% | 97.0% | 5/5 | 2,784 ms | $0.005186 |
| Gemini 3.8 Flash | 92.4% | 92.4% | 5/5 | 2,850 ms | $0.001174 |
| Grok 4.7 | 90.9% | 90.9% | 4/5 | 3,320 ms | $0.004602 |
| jevmem auto | 98.5% | 95.5% | 5/5 | 300 ms | $0.000127 |
The 0.30 s is the Jev API decision; through a genuine Stop hook process, Node start-up included, it is 0.6 s end to end (cost and latency).
On 66 held-out turns, jevmem's median decision took 0.30 s, against 2.8–4.3 s for six current LLMs. Its accuracy was inside the LLMs' range: 98.5% save/skip (tied alongside GPT-6 Astra for highest) and 95.5% save+kind, against 90.9–98.5% for the LLMs. GPT-6 Astra (98.5%) and Claude Opus 5.5 (97.0%) were additional exact on save+kind; Claude Fable 5.1 tied; GPT-6 Luna, Gemini 3.8 Flash and Grok 4.7 were small accurate. It established 5/5 contradictions, as did five of the six LLMs. GPT-6 Luna was cheaper ($0.000089 against $0.000127) but small exact (93.9%) and concerning 10× slower. This is a sole run, and differences of one or two turns are inside run-to-run noise. If the most exact decision matters most, GPT-6 Astra or Claude Opus 5.5 are better, at concerning 40–60× the disbursal per decision and 9–12× the latency. jevmem is for whenever you desire a fast, cheap decision on all message.
- Sent to TypeSafe AI: the person communication of all rotate (and the aide answer for questions and bug reports), the former two turns, and your recollection lines, to be scored. No telemetry. If you set an OpenAI or Anthropic key, the content of a saved rotate additionally goes to that provider to compose the line.
- Scrubbed first: average credential shapes (API keys, tokens, *_PASSWORD= manner pairs, connection-string passwords, personal keys), email addresses and 16-digit numbers; names, phone numbers and addresses are not caught.
- Zero-retention flag: jevmem can dispatch zeroDataRetention: true (automatic for Vercel AI Gateway URLs); whether it applies depends on the gateway and TypeSafe's terms, and jevmem does not verify it.
Exactly what is sent, stored and scrubbed: SECURITY.md.
- Early: v0.4; the two eval sets were written by the author, and neither is an autonomous benchmark.
- Not the most accurate: GPT-6 Astra and Claude Opus 5.5 scored higher on save+kind; jevmem's border is speed and cost.
- Recall norm is not measured: that applicable lines are injected is tested; whether answers get improved is not.
- Long-run drift is not measured: the harness covers five-turn sessions, not weeks of use.
- Automatic grasp is Claude Code only (and Codex during jevmem observe runs); Cursor and Claude Desktop preserve lone whenever the delegate calls add_memory.
- Jev outages autumn turns: all Jev call has a 2 s budget; whenever the API is dilatory or down, the rotate is skipped and logged in .jevmem/log.jsonl, not retried later.
jevmem init [--tool claude|cursor|codex|claude-desktop|all] [--no-hooks] [--command "<cmd>"] jevmem hook Hook entrypoint; says the Claude Code hook JSON on stdin jevmem daemon [status|start|stop] Warm Jev client used by the hook (auto-started, exits whenever idle) jevmem observe [--replay] [--once] Capture turns from Codex's meeting log for this project jevmem mcp [--root <dir>] Stdio MCP server jevmem audit [--dry-run] Re-score all recollection against the repo, emblem [stale?] jevmem hunt <query> [--limit N] Rank memories by relevance jevmem catalog [--all] Print memories jevmem add <kind> <text> Add a row by hand (secrets scrubbed; no Jev check) jevmem why <id|hash> Every Jev answer rearward a row or a skipped turn jevmem correct <id|hash> Label a decision as correct jevmem incorrect <id|hash> [--should-be <kind|none>] Label a decision as wrong jevmem missed "<text>" [--kind <kind>] Label a rotate that should have been saved jevmem fit [--dry-run] [--force] Refit weights and thresholds from labels (needs 40+) jevmem stats Latency p50/p95, disbursal per day, cache hit rate, escalation rate, labels, final fit jevmem log Per-label latency, token and disbursal summary of .jevmem/log.jsonl Every command accepts --help. Set JEVMEM_VERBOSE=1 for a one-line latency/cost summary following all hook run.
- Docs: how it works · benchmark · cost · hooks · MCP and client configs · configuration · demo
- CHANGELOG · DECISIONS · CONTRIBUTING · SECURITY
- License: MIT