Airsc is free for everyone. If it helps you, support it with $2–$20.

Support
PluginSafeAgent workflow & memorySome setup

jevmem

Avinash-jetwani · Avinash-jetwani/jevmem

This plugin helps Claude Code and Codex agents remember decisions, rules, and past approaches across sessions by saving them to a JEVMEM.md file in your repository.

jevmem saves the decisions, rules and failed approaches from your Claude Code chats to JEVMEM.md in your repo, and brings the relevant ones back next session.

121 stars7License: MITUpdated 13 days ago0 opens

Preview

▍

What you can do with it

  • Ensure consistent coding practices and architectural decisions across multiple agent sessions.
  • Document failed approaches and bugs so the agent doesn't repeat past mistakes.
  • Maintain a living documentation of project constraints and requirements within the repository.

Safety check

Safe

No risky patterns found in the files we scanned.

Automated scan of the repo files. Always review code you run.

From the README

Say it once. jevmem saves the decisions, rules and failed approaches from your Claude Code chats to JEVMEM.md in your repo, and brings the relevant ones back next session. Before Claude runs a command or edits a file, it checks the call against your saved rules. It is open source (MIT), built on TypeSafe AI's Jev, in Anthropic's Claude plugin directory and on the MCP Registry, and works with Cursor and Codex over MCP.

In Anthropic's Claude plugin directory · On the MCP Registry · Open source, MIT

The docs site, one page per question: avinash-jetwani.github.io/jevmem

https://github.com/user-attachments/assets/65e48f03-8e1c-49d9-baad-6f217911e861

Why

Each Claude Code session starts with a fresh context, so what you decided last week lives in last week's chat. A CLAUDE.md file helps if you keep it up to date. jevmem keeps a file like it up to date for you, as you work.

How it works

  1. You decide something in a chat: "We use Postgres."
  2. jevmem asks Jev by TypeSafe AI, a model that answers yes/no questions with probabilities, whether it's worth keeping.
  3. If it is, jevmem writes one line to JEVMEM.md in your repo.
  4. Next session, the lines that matter for your prompt go back to Claude.

Change your mind, and the old line is crossed out: kept for history, not sent to Claude. Your team gets the same file through git.

jevmem keeps decisions, rules, bugs, to-dos and dead ends (an approach that was tried and failed, with the reason).

- [superseded] We'll use SQLite as the primary store for now. → id:cuasaq
- [decision] Switch the primary store to Postgres 16.
- [constraint] Node 20 is the minimum supported version, and CI runs Node 20 and 22.

About these lines

Each line also carries a comment with its id, time and confidence, left out above. The full lines:

- [superseded] We'll use SQLite as the primary store for now. → id:cuasaq  
- [decision] Switch the primary store to Postgres 16.  
- [constraint] Node 20 is the minimum supported version, and CI runs Node 20 and 22.  

Real lines from 0.5.7's default writer, which 0.5.8 to 0.5.10 did not change (the run, 2026-09-26). It kept one sentence of each turn: the Postgres turn also said "SQLite locks up under concurrent writes", and that reason was left out. Since 0.6.0 the line is made from the sentences Jev picks, the one that states the memory and the one that gives its reason (What's new). With writer set, an OpenAI or Anthropic model condenses the whole turn instead.

Does it work?

No project memoryjevmemSame lines in CLAUDE.md
Followed the project's decision28 of 7266 of 7267 of 72
Tried a change the project forbids10 of 180 of 18—
Repeated an approach that had already failed3 of 150 of 150 of 15

So jevmem does about as well as a hand-written CLAUDE.md, without you writing it. CLAUDE.md did better on a convention nothing in the prompt points at (3 of 3 against 0 of 3), so rules every task must follow still belong there. Method, dates and builds: What's new.

The guard (new in 0.6)

Before Claude runs a command or edits a file, jevmem checks it against your saved rules. If one might break, Claude Code asks you first:

jevmem: this may break a saved rule: "Never commit .env files" (JEVMEM.md)

On a held-out test of 274 tool calls, it caught 66 of 68 rule breaks, with 3–4 false asks in 206 fine calls. It's a backstop, not a sandbox: it looks at the words a rule and a call share. How the guard works.

Install

You need a TypeSafe API key and Claude Code 2.1.273 or later.

  1. In the Claude app: Plugins → Discover → jevmem → Add.
  2. Install the CLI the plugin runs:
    npm install -g jevmem
    
  3. Save your key (paste it when asked; it isn't shown):
    jevmem key
    
  4. In your project's folder, turn jevmem on:
    jevmem enable
    

Start Claude Code in that project. jevmem doctor checks the setup.

Other ways to install: the jevmem marketplace, npm, Cursor, Codex

From the jevmem marketplace:

npm install -g jevmem
claude plugin marketplace add Avinash-jetwani/jevmem
claude plugin install jevmem@jevmem
cd your-project && jevmem enable

With npm only (also sets up Cursor and Codex):

npm install -g jevmem
cd your-project
jevmem init --tool claude    # or cursor, codex, claude-desktop, all

Already have a CLAUDE.md? jevmem import shows what it would add from it; --apply writes it.

Every step, and what to do if the plugin can't find the CLI: docs/install.md.

Works with

SavingBringing it back
Claude CodeAutomatic, every turnAutomatic, every prompt
CodexAutomatic while jevmem watch runsWhen the agent asks, over MCP
CursorWhen the agent calls it, over MCPWhen the agent asks, over MCP
Claude DesktopWhen you ask it to, over MCPWhen you ask it to, over MCP

The MCP server is on the MCP Registry as io.github.Avinash-jetwani/jevmem. Client setup: docs/mcp.md · docs/install.md.

Fast and cheap

Deciding what to save takes 0.28 s and costs $0.00016 per message, in the background: Claude doesn't wait for it. jevmem tied the best LLM on save or skip (98.5%); two LLMs were better at picking the kind of line.

The full benchmark: accuracy, cost and how it was run

66 held-out turns, all seven deciders given the same state ([method, regression set, pricing, p95, retries](docs/bench

View source on GitHub