Releases: OnourImpram/mneme
Release list
v3.6.3
What's Changed
- Patch seventeen advisories the lockfile was pinning open by @OnourImpram in #43
- Bound the audit lock retry, and stop it spinning without a sleep by @OnourImpram in #44
- chore(release): 3.6.3 by @OnourImpram in #45
Full Changelog: v3.6.2...v3.6.3
v3.6.2 — mneme Record
This release publishes two things that were finished but never shipped, because the 3.6.1 tag was cut before they landed.
The display name
The MCP Registry returns four distinct things for the word "mneme":
- this project
- the retired entry under the account's former handle — still
active, stillisLatestinside its own namespace, frozen at 3.5.0 patsa2561-art/mneme-ai, fifteen versions, actively maintained, roughly sixteen times this project's npm downloadssimplemindedbot/mnemex
Someone searching that word cannot tell which one they are looking at. server.json has carried title: "mneme Record" since the identity change, but the registry kept serving title: "mneme" at 3.6.1. This release moves the name the registry actually shows.
Display only. The registry name is unchanged, so no second entry is created and the namespace is not re-litigated. Package names, the CLI command, and the config directory are untouched — nothing you have installed or scripted breaks.
CITATION.cff deliberately stays mneme. The academic surface is bound to a DOI and an ORCID where the bare word cannot collide, and changing the citation title would split the scholarly record across versions.
The README
It now opens with the problem mneme solves rather than the backends it does not use, and documents all nine MCP tools under a ## Tools heading. That heading exists because directory tooling could not detect the tool list.
The scope-and-limits disclosures did not shrink. They moved below the first screen.
Also
- The 3.6.1 changelog entry corrected to record 3.5.0 as the last version published under the retired namespace.
- Seven npm dependencies updated.
Verification
30 CI checks green, including seven release benchmarks, CodeQL for JavaScript/TypeScript and Python, the Neo4j knowledge-graph integration, and the Node 22/24 and Python 3.11–3.14 matrices across Linux, macOS and Windows. Version lockstep reports matches_target across all 18 sources; repository integrity passes.
What's Changed
- docs(changelog): correct the last version published to the retired namespace by @OnourImpram in #39
- chore(deps): bump the npm-all group across 1 directory with 7 updates by @dependabot[bot] in #28
- Lead the README with the problem, not the caveats by @OnourImpram in #40
- Display name becomes "mneme Record" by @OnourImpram in #41
- release: v3.6.2 — publish the display name and the README rework by @OnourImpram in #42
Full Changelog: v3.6.1...v3.6.2
v3.6.1
What's Changed
- fix(registry): publish the MCP server under the current GitHub namespace (3.6.1) by @OnourImpram in #38
Full Changelog: v3.6.0...v3.6.1
v3.6.0 — ten-loop engine, scoped isolation, deterministic temporal planner
Memory you can inspect, now with scope isolation you can prove.
Added
mneme doctor --verify-isolationruns scope and redaction checks against an isolated temporary fixture, without reading or changing your vault.mneme_checkpoint_listandmneme_working_set_loadtake an optional scope and fall back to the configured default.- A deterministic release-candidate benchmark gate reporting retrieval quality, latency, index build time, index size, memory, backend contribution, and ablations. LongMemEval and LoCoMo adapters validate against pinned official schemas.
- Claude, Codex, and Antigravity plugin validators now run with repository integrity and package candidate checks.
Changed
- All nine MCP schemas derive from the authoritative Zod contracts and are checked against runtime acceptance. Unknown fields stay accepted and discarded for compatibility.
- Concrete scope reads fail closed against legacy unscoped FTS5 indexes and ask for a rebuild. Exact
scope: "*"remains the only cross-scope read opt-in; durable writes reject it. - Turkish FTS5 retrieval preserves distinct
I,i,U+0130, andU+0131normalization through dual indexed forms. - Temporal queries apply valid time and transaction time through a deterministic planner. Supersession, contradiction, CCE checkpoints, KG staging, and Graphiti group identifiers are scope isolated.
- Retrieval telemetry records attempted, succeeded, failed, and contributed backend states separately, with separate per-vault keyed HMAC query identifiers for Python and TypeScript.
- RRF deduplicates canonical document paths, retains provenance and confidence, and gives the canonical
AMBIGUOUSlabel precedence when any contributing backend reports ambiguity. - The release workflow publishes only from a tag push, consuming the exact bytes produced by one verified preflight job.
Availability
mneme-mcp-server@3.6.0 is on npm.
The PyPI distributions (mneme-core, mneme-cc-plugin, mneme-graph, mneme-code) are still at 3.5.0 for this tag: the GitHub account was renamed, which invalidated the PyPI trusted-publisher claims, and the MCP Registry entry likewise still points at the previous namespace. Both are being reissued. Until then, install from source or stay on 3.5.0 for the Python packages.
Verification
30 required checks green: CI across three operating systems on Node 22/24 and Python 3.11 through 3.14, CodeQL, six benchmarks (nDCG@5, latency, adaptive context, migration, head-to-head, compaction recall), and Neo4j knowledge-graph integration.
v3.5.0
What's Changed
- build(deps): adopt npm-all major bumps (vitest 4 + vite 6, zod 4, biome 2, TS 6, neo4j 6) and fix breakages by @TheGoatPsy in #13
- chore(deps): bump the pip-all group across 1 directory with 2 updates by @dependabot[bot] in #10
- docs: add claude-obsidian competitor entry + autonomous-research seam ADR by @TheGoatPsy in #14
- docs(benchmarks): reconcile Benchmark A table with CI-enforced baseline.json by @TheGoatPsy in #15
- test(cc-plugin): warm up before timing the full-profile Stop latency assertion by @TheGoatPsy in #16
- chore: de-flake two Windows CI tests, drop unrequested Glama badge, isolate Dependabot majors by @TheGoatPsy in #20
- chore(deps): bump the npm-all group across 1 directory with 3 updates by @dependabot[bot] in #21
- ci: bump actions/checkout from v6 to v7 by @TheGoatPsy in #22
- build(deps): adopt vite 8 and @types/node 26 in mneme-mcp by @TheGoatPsy in #23
- feat(mneme-graph): Obsidian knowledge-graph extraction, clustering, retrieval by @TheGoatPsy in #24
- feat: release 3.5.0 - multi-scope isolation, security hardening, integrity by @TheGoatPsy in #25
New Contributors
- @dependabot[bot] made their first contribution in #10
Full Changelog: v3.2.0...v3.5.0
v3.2.0
v3.1.0
mneme 3.1.0
Vault-native memory for Claude Code. Also runs in OpenAI Codex CLI, Google Antigravity, and any MCP client. Markdown is ground truth.
License: Apache-2.0. Single maintainer: Onour Impram.
Install
Lite (recommended first install):
pipx install mneme-cc-plugin && mneme install --profile=lite
Standard (adds opt-in local dense retrieval, enable with --enable-dense):
mneme install --profile=standard
Full (gated Graphiti temporal KG, requires Docker and Neo4j):
mneme install --profile=full
Verify:
mneme doctor
Codex CLI:
mneme install --client=codex
Google Antigravity:
mneme install --client=antigravity
Published packages
All packages are at 3.1.0.
PyPI: mneme-core, mneme-cc-plugin, mneme-graph (first release), mneme-code (first release).
npm: mneme-mcp-server 3.1.0, MCP name io.github.TheGoatPsy/mneme.
MCP Registry: entry io.github.TheGoatPsy/mneme is live.
What is in this release
Security
The team-sync web console now refuses requests whose Host header is not a loopback alias. This closes a DNS-rebinding read path. The bind guard can be disabled with --unsafe-expose for intentional non-loopback exposure.
New
team-synctrust-marks every imported file with source, trust level, and a SHA-256 payload hash, and redacts on arrival. Re-pulls are idempotent.mneme memory policy initscaffolds a documented zero-autonomypolicy.json. It never overwrites an existing file.mneme memory policy validatesurfaces dropped or misspelled class names.docs/UPGRADING.mdcovers the 2.x to 3.x migration path, with five new cookbook recipes.mneme-graphandmneme-codejoin the release train with their first PyPI publishes.server.jsonis tracked at the repo root. MCP Registry auto-publish runs via GitHub OIDC.- Dependabot and CodeQL workflows are now active.
Changed
- CI tests Python 3.14 alongside 3.11 through 3.13.
- Dev Status classifiers:
mneme-coreandmneme-cc-pluginare now Production/Stable.mneme-graphandmneme-codeare Beta. - Governance documents the interim single-maintainer release rule and a best-effort security response posture.
Architecture notes
Store. Memory lives in a directory of plain Markdown files you can git diff, grep, edit, and back up. The SQLite index is a rebuildable artifact.
Stop hook. Appends a typed session document with no LLM call, no API key, no cost, and no added latency. Background AI compression is opt-in, default off, with a monthly cost cap.
Retrieval. FTS5 BM25 is the default. A local hashing-embedding dense backend is shipped as an opt-in, RRF-fused with BM25 when enabled via --enable-dense. A heavyweight LEANN/sentence-transformers adapter is on the roadmap, not yet shipped.
Temporal claims. Valid-from/to, supersedes chains, as-of queries, contradiction detection, and provenance time-travel are built in on every profile, in pure SQLite. Graphiti export and LLM claim extraction are optional additions.
Privacy. Inline <private> tag redaction happens at staging write with a SHA-256 audit log. No outbound network traffic occurs except for the opted-in compression LLM and an optional local Neo4j instance.
Token efficiency. Shell output compression, injection deduplication, adaptive top-k, and three injection format levels combine to reduce session token consumption, measured at 40 to 60 percent on the project's synthetic regression corpus.
Agent security. Capability firewall, data-flow taint tracking, human-approval gate for durable edits, and a poisoned-vault benchmark are included.
Domain privacy modes. Clinical and security-review modes block external extraction and artifact upload. A mode can never weaken a built-in privacy guarantee or disable redaction.
Policy-graduated autonomy. The agent applies operator-allowed low-risk edit classes itself. Every change is journalled for one-command rollback and chained into a tamper-evident HMAC audit log. Durable categories always require a human in the loop.
Team memory. Self-hosted over any git remote, with optional age end-to-end encryption and a loopback-only read-only web console. This is not a vendor cloud service.
Migration. One-command lossless migration from claude-mem is included.
Plugin surface. Five lifecycle hooks, two skills, and an MCP server (seven MCP tools) for Claude Code.
Regression benchmarks
These numbers are deterministic anchors on a seeded synthetic corpus (MNEME_BENCH_SEED=42). They are not real-world quality measurements. See ADR-012. Reproduce with make bench-all.
- Retrieval nDCG@5, RRF-fused: 0.893 (FTS5 baseline 0.801, +9.2 points). 500-document corpus.
- Stop hook p95 latency: 2 ms (budget 1000 ms). Retrieve p95: 3 ms on a 500-document index.
- Shell output compression: 88 percent. Injection dedup skip rate: 95 percent.
- Migration tool: 4 of 4 assertions pass.
- Adapter leg nDCG@5: 0.831, MRR 0.772 on a 300-document fixture. This is a synthetic adapter leg only, not a real run against any external tool. A real-data head-to-head comparison is future work.
Full Changelog: v3.0.1...v3.1.0
v3.0.1
v3.0.0
mneme 2.0.2
Patch release. Corrects the package metadata so mneme is listed on the official MCP Registry as io.github.TheGoatPsy/mneme. The npm MCP server package now carries the registry mcpName, and the registry namespace casing matches the GitHub owner. No functional changes from 2.0.0. Install: pipx install mneme-cc-plugin and mneme install, or pip install mneme-core, or npm install -g mneme-mcp-server.