Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Coding agent memory — one local MCP server for every project. Warns before repeating failed fixes.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"projectmem": {
"command": "uvx",
"args": [
"projectmem"
]
}
}
}Run this in your terminal
claude mcp add projectmem -- uvx projectmemPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"projectmem": {
"command": "uvx",
"args": [
"projectmem"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"projectmem": {
"type": "stdio",
"command": "uvx",
"args": [
"projectmem"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account riponcm, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.3.5) reached the registry 6 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
🎉 v0.3.5 is out — precheck recognises a file however its path is spelled, and the summary stays small even when entries are long. See what changed →
We don't make AI smarter. We make it experienced. Coding agent memory — the local-first memory + judgment layer for AI coding agents. One MCP server for every project. Stop re-reading your project every session. Stop repeating yesterday's bug.
Website • Guide • Demo • Changelog • Paper
https://github.com/user-attachments/assets/e055988e-7253-4ba9-92fc-95d3d4bcd763
pjm visualize — every case your project solved, what failed on the way, and what it saved. Generated locally from .projectmem/events.jsonl .
## 🚀 Start here — five minutes, once
*Five minutes if you follow along here. Want to be shown instead — every
command, the exact output it prints back, and the dashboards at the end?
Take [the complete setup guide](https://projectmem.dev/blog/projectmem-complete-guide-ai-coding-agent-memory).*
New to projectmem, or upgrading from 0.1.x / 0.2.x? Since 0.3.0 one MCP
server serves every project, so this is the last time you configure anything.
1. Install or update
`bash
pip install -U projectmem
`
2. Find the projects you already have
`bash
pjm doctor
`
It looks where code lives —
~/Developer,~/code,~/projects, your cloud
folders, and every drive on Windows — and lists projects with memory that
aren't registered yet. Anything it missed, add by hand:
`bash
pjm project register "/Users/you/Developer/repos/ossdrop"
`
3. Register them
`bash
pjm doctor --fix
`
4. Point your AI at all of them with one config
`json
"mcpServers": {
"projectmem": {
"command": "/absolute/path/to/python",
"args": ["-m", "projectmem.mcp_server"]
}
}
`
No
--root, nocwd— that's what makes it serve everything. Per-client
instructions (Claude Desktop, Claude Code, Cursor, Antigravity, Codex) are in
MCP Integration;
pjm initprints this block
with your own Python path filled in. Then fully restart the client — MCP
servers only load on a cold start.
5. Check your work
`bash
pjm doctor
`
Add
--onlineif you also want it to tell you when a newer projectmem is out
— projectmem makes no network calls otherwise, and
--autoturns that into a
once-a-day check if you prefer.
Run it again after editing the config. It flags any client still pinned to a
single repo — the most common reason a new project is invisible to your agent.
All green? You're done. From here on it is one command per repo:
`bash
pjm init
`
Your agent reads what the project already learned instead of rediscovering it,
and writes down what it finds. Fewer tokens, no repeated dead ends, memory that
outlives the session.
Coding agent memory is a persistent record of what happened while building a project — the issues hit, the approaches attempted, the fixes that worked and the decisions made — stored so an AI coding agent can read it at the start of a new session. Without it every session begins from zero.
projectmem is an open-source agent memory layer built for that job. It is local-first: memory lives in a plain .projectmem/ directory inside your repository, with no cloud, no account and no telemetry — the only network call it can make is an update check you turn on yourself. A native MCP server exposes 17 tools to Claude Code, Claude Desktop, Cursor, Antigravity and Codex, so your agent reads memory and logs its work on its own.
Unlike chat-history memory tools, projectmem stores typed events — issues, attempts, fixes, decisions, notes — which is what makes its signature feature possible: a pre-commit warning that fires *before* you repeat an approach that already failed in this project.
pip install projectmem
cd your-project && pjm init
Full screen-recorded tutorial- watch on YouTube
| Doc | What's in it |
|---|---|
| [Complete setup guide](https://projectmem.dev/blog/projectmem-complete-guide-ai-coding-agent-memory) | The full walkthrough on the web — install, MCP setup per client, pjm doctor, your first logged issue, and both dashboards. Every terminal output is captured from a real run. |
| [TUTORIAL.md](https://github.com/riponcm/projectmem/blob/main/TUTORIAL.md) | 15-minute step-by-step walkthrough — set up projectmem on your own project, watch the lifecycle, see the pre-commit warning fire. |
| [CHANGELOG.md](https://github.com/riponcm/projectmem/blob/main/CHANGELOG.md) | Release history. Latest: v0.3.5 — precheck matches every spelling of a path, and long entries no longer bloat the summary. |
| [Research paper (arXiv:2606.12329)](https://arxiv.org/abs/2606.12329) | *PROJECTMEM: A Local-First, Event-Sourced Memory and Judgment Layer for AI Coding Agents* — the peer-readable version: design, Memory-as-Governance framing, capability comparison, and the 207-event dogfooding study. |
| [LICENSE](https://github.com/riponcm/projectmem/blob/main/LICENSE) | MIT |
Every new AI session starts from zero. Claude, Cursor, Aider — they all forget yesterday's decisions, repeat failed debugging attempts, and burn millions of tokens reconstructing context from raw source files.
The model isn't the problem. The architecture is. Stateless models need a memory cortex.
projectmem is the local-first memory + judgment layer that sits above your AI tools. It captures every failed attempt, decision, and gotcha — then injects that experience back into future AI sessions. Git tracks *what* changed. projectmem tracks *why* it changed, what was tried, and what failed.
First time here? → [The complete setup guide](https://projectmem.dev/blog/projectmem-complete-guide-ai-coding-agent-memory)
walks the whole path end to end: install, connecting Claude Desktop, Claude Code,
Cursor, Codex or Antigravity, checking it with
pjm doctor, and reading your
memory back through the dashboards — with the real terminal output at every step.
Three commands to a project that remembers:
pip install projectmem
cd your-project pjm init
That's it. pjm init installs three git hooks (pre-commit warnings, post-commit classification, post-merge tracking), auto-starts a real-time file watcher, inherits cross-project memory if available, and creates .projectmem/. Capture is active from minute one.
The canonical command is
projectmem. Apjmalias is installed for speed.
Precheck recognises a file however its path is spelled. Events store project-relative paths, so asking about ./src/auth.py, an absolute path, a path through a symlinked folder or a Windows C:\ path matched nothing, and precheck called a file with known failures "Safe to modify". Every spelling now gets the same warnings, and checking is faster on large logs. get_issue("1") and get_issue("#1") find issue 0001. (#26)
Long entries no longer bloat the summary. 0.3.4 capped how many entries the summary shows, not how long each one is. Records are now clipped at 300 characters, and a fixed issue takes one line. On a real 238-event project the summary went from 8,974 tokens to 3,458. (#29, #30)
Upgrading? Run `pjm init` once in each project. The instructions now ask agents for shorter records, and pjm init refreshes AI_INSTRUCTIONS.md, keeping your previous copy as AI_INSTRUCTIONS.md.bak.
The #26 fixes were contributed by @vishalhabib99, and #29 was reported and fixed by @bigfree.
The summary no longer grows forever. Notes were capped, but Recent issues and Decisions listed everything ever logged, so on an aged project reading the memory cost more than reading the code. Every open issue is still shown — the newest 20 in full, older ones by id — while fixed issues are capped at the newest 10 and decisions at the newest 15, each with a line saying what was left out and where to find it. On a test project with 25 issues and 60 decisions the summary went from about 2,900 tokens to about 1,100. (#19)
Commits are filed under the code they change. Auto-capture used the first changed path in git's sort order, which was usually the regenerated .projectmem/summary.md — so valid memories were flagged stale and the real file lost its history. The location is now the source file the commit is about, with deletions, renames, merges and a repository's first commit handled. (#20)
Stale warnings no longer depend on your time zone. A 0.3.3 speed-up compared git's local-time commit dates with UTC event times as text: west of UTC, recent stale memories were never flagged; east of UTC, fresh ones were flagged at once. Both sides are compared in UTC now, and events already filed under .projectmem/ stop warning without your log being rewritten.
*
Only the beginning is shown; read the rest in the repo