By skynetcmd
Store and retrieve persistent memories across Claude Code sessions using hybrid FTS5/vector/MMR search, auto-capture chatlogs, and curate long-term memory with dedicated agents.
List registered agents and their last heartbeat. Useful for multi-agent setups.
GDPR Article 20 — export all memories you own as portable JSON.
Search captured chat-log turns from your prior Claude / Gemini sessions.
Delete a memory permanently. Asks for confirmation first.
Fetch one memory by UUID or short prefix.
Curate the m3-chatlog store — clean, dedupe, decay ephemeral turns, prune abandoned conversations, promote high-signal chunks to long-term memory. Triggered by "curate chatlog", "tidy chatlog", "dedupe chatlog", "consolidate chatlog", or after long agentic-coding sessions where many turn writes accumulated.
Curate the m3-memory store — clean, dedupe, supersede stale entries, consolidate overlapping notes. Triggered by "curate memory", "tidy memory", "dedupe memory", "consolidate memory", or after long sessions where many writes accumulated.
Uses power tools
Uses Bash, Write, or Edit tools
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Executables (bin/) — files in this plugin's bin/directory are added to the Bash tool's PATH while the plugin is enabled.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
endpointOpenAI-compatible endpoint for embeddings + enrichment. Leave empty to probe LM Studio :1234 and Ollama :11434.
${user_config.endpoint}embed_ggufAbsolute path to a BGE-M3 GGUF file. When set, the MCP server loads it in-process via m3_core_rs for 10-100x faster embeds. Optional — if empty, all embeds go through tier-2 HTTP. Common path: %USERPROFILE%/.lmstudio/models/deepsweet/bge-m3-GGUF-Q4_K_M/bge-m3-GGUF-Q4_K_M.gguf
${user_config.embed_gguf}capture_modeWhich Claude Code hooks fire chatlog ingest. One of: both | stop | precompact | none. 'both' = Stop + PreCompact (recommended). Validated by mcp-memory at runtime; invalid values fall back to 'both'.
${user_config.capture_mode}embed_fallback_urlAlways-on HTTP embedder URL — the m3-embed-server CPU service (install via `m3-embed-server.exe install` on Windows, systemd unit on Linux). Default :8082. Leave empty to fall back to llm_failover probes (much slower; not BGE-M3).
${user_config.embed_fallback_url}A memory layer that outlives your agents. You switch from Claude Code to Cursor, upgrade your model, start fresh next week — and everything your tools learned about your project is gone. You re-explain the same decisions, the same preferences, the same hard-won context, over and over.
M3 fixes that. It's a private, local-first memory your agents share and build on — so your project's knowledge accumulates instead of resetting every time the agent does. One memory store, on your machine, that your tools and agents read from and write to — whether that's Claude Code, Cursor, Gemini CLI, or any MCP-compatible agent.
Under the hood, M3 treats agent memory as a distributed-systems infrastructure problem, not a simple retrieval feature — a shared, evolving, bitemporal, contradiction-aware knowledge base that multiple heterogeneous agents and machines read and write, built to stay consistent over months and years.
pip install m3-memory
m3 setup # detects your agents, wires the MCP server, provisions the local embedder
m3 doctor # verify: health, memory count, embedder, and which agents got wired
That's the whole install. No cloud account, no API key, no external embedding service.
Save a decision — from any agent, or straight from the shell:
$ m3 memory memory_write --type decision --title "auth-jwt-algorithm" \
--content "The auth service uses RS256 JWTs. HS256 was rejected because we need asymmetric verification at the edge."
"Created: 84a944fb-ef3e-403b-9240-f53ab3c015f7"
Next week, in a different agent, on a different model — ask in your own words:
$ m3 memory memory_search --query "which signing algorithm did we pick for tokens?" --k 3
Top 1 results:
----------------------------------------
1. [84a944fb-ef3e-403b-9240-f53ab3c015f7] score=0.7501 type: decision title: auth-jwt-algorithm
Content:
The auth service uses RS256 JWTs. HS256 was rejected because we need asymmetric verification at the edge.
----------------------------------------
The query shares no keywords with the stored text — no "RS256", no "JWT" — and still finds it. That's the hybrid engine: BM25 for exact terms, local BGE-M3 vectors for meaning, MMR for diversity. Your agent calls the same tools over MCP, so it recalls this automatically instead of asking you again.
New here? The 5-Minute Getting Started Guide walks the same path with more context, and Core Tools lists the five you'll use most.
The Quickstart above is the whole product for most people: shared memory, wired into your agents, working offline. Everything below is optional surface you can ignore until you want it — each row says what it costs to turn on.
npx claudepluginhub skynetcmd/m3-memory --plugin m3Persistent memory for AI coding agents via the memini memory service. 7 hooks, MCP tools, and skills that capture tool usage and inject prior context at session start and per prompt.
Persistent memory for AI coding agents -- captures tool usage, compresses via LLM, injects context into future sessions. 12 hooks, 41 MCP tools, 4 skills, real-time viewer.
memX: local-first semantic memory for coding agents. Native Claude Code lifecycle hooks.
Persistent memory for Claude Code — memories survive across sessions, projects, and machines
Persistent, cross-device memory for your AI coding agents — self-hosted and AGPL, so your knowledge never leaves your own infrastructure. Connect to a Mori server you run; every session distils into durable, searchable memory, so agents start informed, not cold. /brief loads context, /pensieve searches it.
Persistent, user-owned memory for AI agents over hosted MCP. Remember decisions, recall project context, manage TODOs, and govern memory lifecycle across sessions.