Releases: riponcm/projectmem
v0.1.5 — Reliability Release
Same features, fewer ways to break. Three community-contributed fixes make projectmem safer to run everywhere — especially on Windows. No new dependencies, no schema changes.
Fixes
pjm fix --issue/record_fix(issue_id=…)— close the issue you mean. Previouslyfixalways closed the "current" issue, so fixing an older one could silently close the wrong issue. You can now target a specific issue by ID (pjm fix --issue 0001; IDs normalize1/001/0001). Closes #3. (#2)- MCP git helpers no longer hang stdio sessions — git subprocesses now run with detached stdin (
DEVNULL) and bounded timeouts, fixing a class of Windows MCP hangs. (#4) - Console output is encoding-safe —
pjm briefandpjm precheckno longer crash on non-UTF-8 (cp1252) Windows consoles and git hooks. (#5)
🙏 Thanks
All three fixes contributed by @hanley-development — thank you!
Install
```
pip install -U projectmem
```
Full Changelog: v0.1.4...v0.1.5
v0.1.4 — The Accountable-Judgment Release
The accountable-judgment release — memory that flags its own staleness instead of silently trusting (or deleting) it. Six features, ~330 lines, no new dependencies, the same 14-tool MCP surface.
📦 pip install -U projectmem · 📰 Release post · 🎓 Research paper (arXiv:2606.12329) · 🎬 Tutorial video
✨ New
- Stale-memory detection — flag, never delete. Every decision/fix/note that cites a file is cross-checked against that file's git history. When the file moved on (3+ commits, or it no longer exists),
pjm precheckand the MCPprecheck_filetool flag the memory — "predates 7 commits to auth.py — confirm or supersede." Nothing is deleted; a human decides. Deterministicgit logcounts, no embeddings, no daemon. - Superseded-decision marking.
pjm decision "switch to argon2" --supersedes <event-id>(also on MCPadd_decision) retires an old decision without rewriting history: it leavessummary.md, stays in the append-only log, and shows inpjm searchtagged(superseded). Search now prints event ids. pjm brief— one-screen session-start briefing: active warnings, possibly-stale memories, open issues, recent decisions, stack gotchas, and your prevention score with a weekly delta.- Precheck snooze.
pjm precheck --snooze 2hpauses warnings for a bounded window instead of pushing you to--no-verify. The snooze is itself logged — even the silence is audited.--unsnoozerestores early. - Failed approaches listed in the warning. Precheck now shows the dead ends themselves ("✗ tried CSS contain:layout"), and
pjm search --failed-onlylists a project's full catalogue of dead ends. pjm export --claude-md(and--cursor) — compiles live decisions (stale ones flagged), gotchas, and a "Do NOT retry — these already failed" list into a marked block in CLAUDE.md / .cursorrules. Agents without MCP inherit the project's judgment.- Dashboard Overview tab —
pjm visualizeopens on an all-at-a-glance view (failure heatmap, A+→F prevention gauge, project graph with failure rings, typed-event timeline), re-themed light.
🐛 Fixed
- Walk-up discovery no longer mistakes
~/.projectmem(the machine-wide global store) for a project — found by dogfooding 0.1.4 on this very repo. pjm precheck payment.py auth.py— named files now work directly from the CLI.pjm search payment.pymatches thelocationfield, so per-file lookups behave like precheck.
📋 Compatibility
One new optional event field (supersedes); existing logs parse unchanged; MCP surface unchanged (14 tools). After upgrading run pjm hooks install once per project. 23 new tests — 81 passing.
Full changelog: https://projectmem.dev/changelog
v0.1.3 — quality + privacy + conda/venv hook fix + init UX
Six focused improvements:
- Schema enrichment — all 14 MCP tools now have parameter descriptions + schema constraints. Projected Glama score 75% → ~90%.
- Secret redaction on write — API keys, tokens, PEM blocks scrubbed from event text before they touch disk. Default-on,
PROJECTMEM_NO_REDACT=1to skip. - L-047: conda/venv hook fix — pre-commit warning now works under conda/pyenv/venv. The killer feature had been silently no-op for most Python users.
- L-048: stack auto-detect —
pjm initpre-populatesPROJECT_MAP.mdfrom your manifests (pyproject / package.json / Cargo / go.mod). Setup Mode becomes refinement, not greenfield. - L-049: MCP config printed at init — copy-pasteable JSON block with paths for Claude Desktop / Cursor / Antigravity / Codex.
- L-050: silent post-commit auto-capture — no more output printing over your shell prompt after
git commit.
Plus TUTORIAL.md — 15-minute step-by-step walkthrough linked from the README.
Install: pip install -U projectmem
Tutorial: TUTORIAL.md
Full changelog: CHANGELOG.md
v0.1.1 — First Stable Release · Cross-Project Memory Verified
projectmem v0.1.1 — First Stable Release
The local-first memory layer for AI coding agents. projectmem captures what your AI learned (and what didn't work) so the next session — and the next project — starts experienced instead of from zero. 100% local. No cloud. No telemetry. No account.
After months of dogfooding, 46 documented lessons, a 22-item polish-pass, four MCP clients verified end-to-end, and three language ecosystems put through a real cross-project memory test cycle — v0.1.1 is the version we're comfortable putting on PyPI as a stable release.
pip install projectmem
cd your-project
pjm initTwo commands and your AI is no longer amnesiac.
What projectmem does, in one sentence
It gives your AI persistent memory — about your bugs, your decisions, the approaches you've already tried, and the libraries that have bitten you before — accessible through 14 native MCP tools that work with Claude Desktop, Cursor, Antigravity, and Codex out of the box.
What's in this release
The intelligence layer
- Pre-commit warnings — fires before a commit if you're about to repeat a failed approach, touch a high-churn file, or revisit an unresolved issue. The only AI memory tool that prevents mistakes instead of just remembering them.
- Real-time file watcher — auto-starts on
pjm init. Detects rapid edits to the same file (debugging sessions) and logs churn events automatically. Battery-aware, gitignore-aware. - Smart context injection (
pjm wrap) — wraps your AI agent with a token-budgeted memory block before the session starts. Inject intoCLAUDE.md,.cursorrules, or clipboard. - Prevention Score (
pjm score) — quantifiable A+ → F letter grade backed by debugging hours saved, tokens prevented, and dollars protected. CTO-readable ROI.
Cross-project memory — verified across 3 languages
A library gotcha learned in one project surfaces automatically in any other project on the same stack, with source-project attribution. Three wiring gaps closed in this release:
- Auto-promote wiring restored. Failed attempts and gotcha-prefixed decisions now consistently propagate to the machine-wide store. Wired through
storage.append_eventso every write surface — MCP, CLI, git hooks — promotes uniformly. - Language parity. Self-curating library cache at
~/.projectmem/global/.promotable.jsonmeans Go, Rust, Java, Ruby, and mobile projects accumulate cross-project knowledge the same way JavaScript and Python ones did. A Go user'sginlessons now propagate exactly like a React user'sviteones. - Signal filter. Project-setup decisions stay local. Only deliberate lessons — failed attempts, or decisions/notes opening with
gotcha:/lesson:/warning:/caution:/pitfall:/avoid:/don't/do not/never/bug:— reach the global store. Signal-to-noise went from 14% to 100% in the real test cycle.
End-to-end verification across proj-react → proj-next (JS inheritance with attribution), proj-python (negative — vite gotcha correctly bounded by stack), and proj-go (gin promotion under the new library cache + signal filter).
Cross-client compatibility
Four MCP clients tested end-to-end. 124 of 124 cells green.
| Client | Status | Setup |
|---|---|---|
| Antigravity | ✅ All checks pass | Native — cwd honored, no workaround |
| Claude Desktop | ✅ All checks pass | Use Auto mode (not Plan); pass root via --root in args |
| Cursor | ✅ All checks pass | Same --root workaround for cwd-ignored bug |
| Codex | ✅ All checks pass | TOML config at ~/.codex/config.toml; medium reasoning required |
Each client ships with a documented setup block, captured during real verification.
Operational hardening
- MCP stdio integrity — write tools no longer corrupt the JSON-RPC stream. Five consecutive
log_issue/record_attempt/record_fix/add_decision/add_notecalls survive cleanly in every client. - MCP project-root discovery — server walks up the tree to find
.projectmem/(like git does for.git/). Plus--rootflag andPROJECTMEM_ROOTenv var for explicit pinning. - No silent issue misattribution —
record_attemptafterrecord_fixnever latches onto a stale open issue. Marker file + 5-minute time-fence + explicit--issueflag. - AI workflow alignment — three surfaces (MCP
instructions=,CLAUDE.md,AI_INSTRUCTIONS.md) now mirror each other. No drift between what each client tells the AI. - Setup → Maintenance state machine — AI detects placeholder vs real content via concrete signals, populates memory through MCP write tools (not direct file edits).
100% local. No exceptions.
- Memory lives at
<your-project>/.projectmem/(local to each project) and~/.projectmem/global/(machine-wide). - Nothing uploads anywhere. No accounts. No telemetry. No "anonymous usage data."
- Team sharing is explicit:
pjm global export > team-gotchas.json→ commit → teammate runspjm global import. You choose what to share and when.
Install
pip install projectmemRequires Python 3.10+. MIT licensed.
Quick start
cd your-project
pjm init # creates .projectmem/, installs git hooks, starts watcher
# Open your AI client (Claude Desktop / Cursor / Antigravity / Codex)
# Ask anything about the project — memory is now wiredFor the multi-project / monorepo setup, AI client configuration per tool, and the full feature tour, see the User Guide.
Upgrade notes
This is your first chance to install projectmem from real PyPI — there's nothing to upgrade from. If you previously installed from TestPyPI or from source, pip install --upgrade projectmem replaces it cleanly. Memory files (.projectmem/events.jsonl and global store) load without migration.
Acknowledgements
Built in the open, on a single MacBook, over six months of dogfooding. Every bug in the launch matrix was a real bug found by real use — not synthetic test data. Special thanks to the four MCP client teams whose work made this possible: Anthropic (Claude Desktop), Anysphere (Cursor), Google (Antigravity), and OpenAI (Codex).
The 46 lessons logged during this release are publicly tracked in report/LESSONS_AND_FIXES.md. Read them if you want to see how the sausage actually gets made.
Star the repo · Try it now · Read the guide · Report a bug