Avinash-jetwani/jevmem: Automatic mission reminiscence for Claude Code. Also works with Cursor and Codex. · GitHub
Automatic mission reminiscence for Claude Code. Also works with Cursor and Codex.
jevmem-launch-readme-v2.mp4
- Saves selections, constraints, bugs and todos out of your Claude Code chats into
JEVMEM.md, mechanically. - When you modify your thoughts, the outdated line is marked outmoded, not deleted.
- Next session, the related traces are added to Claude’s context.
- [decision] Use Postgres 16 for the first retailer; SQLite locks underneath load
- [constraint] Node 20 is the ground; CI runs 20 and 22
- [superseded] Use SQLite as the first retailer → id:k3d9xq
npm set up -g jevmem
export TYPESAFE_API_KEY=... # https://typesafe.ai (an OpenAI or Anthropic secret's non-compulsory)
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.native.json, which it provides to .gitignore (details).
What is computerized and what depends upon the agent:
| Tool | Setup | Capture | Recall |
|---|---|---|---|
| Claude Code | jevmem init --tool claude |
Automatic, each flip, by way of the Stop hook |
Automatic, each immediate, by way of UserPromptSubmit |
| Codex | jevmem init --tool codex |
Automatic whereas jevmem watch runs (it tails Codex’s session log for this mission and runs the identical determine → write path); in any other case agent-initiated by way of MCP add_memory, prompted by an AGENTS.md part |
Agent-initiated: search_memory by way of MCP, prompted by AGENTS.md |
| Cursor | jevmem init --tool cursor |
Agent-initiated: a .cursor/guidelines/jevmem.mdc rule tells the agent to name MCP add_memory whenever you state a choice. Nothing is captured if it does not |
Agent-initiated: the rule tells it to name search_memory earlier than non-trivial duties |
| Claude Desktop | jevmem init --tool claude-desktop prints a config snippet to stick (one mission per config, named with --root) |
Manual: ask it to name add_memory (no hook, no rule file) |
On request: search_memory |
MCP add_memory goes by way of the identical gate because the hook. Client configs: docs/mcp.md.
- Scrub. Common secret shapes, e-mail addresses and card-shaped numbers are faraway from the flip earlier than it leaves your machine.
- Ask Jev typed questions. Jev by TypeSafe AI solutions a hard and fast set of small questions with chances: is there a choice, a rule, a bug? is it small discuss or an injection try? which current line does it change?
- Apply thresholds in code. Plain guidelines over these chances determine save or skip; they stay in
jevmem.config.json, not in a immediate. - Write one line. On save, a small LLM (or a deterministic extract, with no LLM key) writes one line of at most 200 characters.
- Supersede the outdated line. If the flip replaces an current reminiscence, that line is tagged
[superseded] … → id:newand stays within the file.
Tiers, questions, coverage, contradictions, recall and audit: docs/how-it-works.md.
66 held-out turns, all seven deciders given the identical state, 2026-09-23 (method, regression set, pricing, p95, retries):
| Decider | save/skip | save+form | contradictions | p50 | $/determination |
|---|---|---|---|---|---|
| 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 determination; by way of an actual Stop hook course of, Node start-up included, it’s 0.6 s finish to finish (cost and latency).
On 66 held-out turns, jevmem’s median determination took 0.30 s, in opposition to 2.8–4.3 s for six present LLMs.
Its accuracy was throughout the LLMs’ vary: 98.5% save/skip (tied with GPT-6 Astra for highest) and 95.5% save+form, in opposition to 90.9–98.5% for the LLMs. GPT-6 Astra (98.5%) and Claude Opus 5.5 (97.0%) have been extra correct on save+form; Claude Fable 5.1 tied; GPT-6 Luna, Gemini 3.8 Flash and Grok 4.7 have been much less correct. It discovered 5/5 contradictions, as did 5 of the six LLMs.
GPT-6 Luna was cheaper ($0.000089 in opposition to $0.000127) however much less correct (93.9%) and about 10× slower.
This is a single run, and variations of 1 or two turns are inside run-to-run noise. If essentially the most correct determination issues most, GPT-6 Astra or Claude Opus 5.5 are higher, at about 40–60× the fee per determination and 9–12× the latency. jevmem is for whenever you need a quick, low-cost determination on each message.
- Sent to TypeSafe AI: the person message of every flip (and the assistant reply for questions and bug stories), the earlier two turns, and your reminiscence traces, to be scored. No telemetry. If you set an OpenAI or Anthropic key, the textual content of a saved flip additionally goes to that supplier to put in writing the road.
- Scrubbed first: widespread credential shapes (API keys, tokens,
*_PASSWORD=type pairs, connection-string passwords, personal keys), e-mail addresses and 16-digit numbers; names, telephone numbers and addresses are usually not caught. - Zero-retention flag: jevmem can ship
zeroDataRetention: true(computerized for Vercel AI Gateway URLs); whether or not it applies depends upon the gateway and TypeSafe’s phrases, and jevmem doesn’t confirm it.
Exactly what is shipped, saved and scrubbed: SECURITY.md.
- Early: v0.4; each eval units have been written by the creator, and neither is an impartial benchmark.
- Not essentially the most correct: GPT-6 Astra and Claude Opus 5.5 scored larger on save+form; jevmem’s edge is velocity and value.
- Recall high quality just isn’t measured: that related traces are injected is examined; whether or not solutions get higher just isn’t.
- Long-run drift just isn’t measured: the harness covers five-turn periods, not weeks of use.
- Automatic seize is Claude Code solely (and Codex whereas
jevmem watchruns); Cursor and Claude Desktop save solely when the agent callsadd_memory. - Jev outages drop turns: every Jev name has a 2 s price range; when the API is gradual or down, the flip is skipped and logged in
.jevmem/log.jsonl, not retried later.
jevmem init [--tool claude|cursor|codex|claude-desktop|all] [--no-hooks] [--command ""]
jevmem hook Hook entrypoint; reads the Claude Code hook JSON on stdin
jevmem daemon [status|start|stop] Warm Jev shopper utilized by the hook (auto-started, exits when idle)
jevmem watch [--replay] [--once] Capture turns from Codex's session log for this mission
jevmem mcp [--root ] Stdio MCP server
jevmem audit [--dry-run] Re-score each reminiscence in opposition to the repo, flag [stale?]
jevmem search [--limit N] Rank recollections by relevance
jevmem record [--all] Print recollections
jevmem add Add a line by hand (secrets and techniques scrubbed; no Jev examine)
jevmem why Every Jev reply behind a line or a skipped flip
jevmem proper Label a choice as right
jevmem unsuitable [--should-be ] Label a choice as unsuitable
jevmem missed "" [--kind ] Label a flip that ought to have been saved
jevmem match [--dry-run] [--force] Refit weights and thresholds from labels (wants 40+)
jevmem stats Latency p50/p95, price per day, cache hit charge, escalation charge, labels, final match
jevmem log Per-label latency, token and value abstract of .jevmem/log.jsonl
Every command accepts --help. Set JEVMEM_VERBOSE=1 for a one-line latency/price abstract after each hook run.

