MemoryMaster
MemoryMaster is persistent memory for coding agents where every durable fact is a governed claim—not an opaque chunk that silently lives forever.
It captures evidence, extracts candidate claims, preserves citations, detects conflicts, promotes trustworthy claims through a steward, and retires facts when their support stops being current. Claude Code, Codex, Gemini-powered workers, Hermes, and any MCP client can share the same local memory without surrendering authority to a vector database or generated summary.
evidence -> candidate claim -> steward -> confirmed claim -> governed recall
\-> supported graph
\-> candidate observation
\-> steward -> opt-in recall
What shipped in 4.7
| Capability | What it does | Default |
|---|---|---|
| Governed graph observations | Derives supported dependencies, constraints, recurring patterns and root causes from confirmed evidence | Generation enabled explicitly; recall opt-in |
| Compiled user profile | Builds a disposable, cited projection from multiple independent sessions | Explicitly enabled; never an instruction source |
| Fast conversational recall | Finds relevant claims on the local lexical path without an embedding, Qdrant or provider call | On |
| Private-context intake guard | Redacts RFC1918 topology and absolute Windows/UNC paths from durable claim fields while preserving useful prose | On |
| Governed skills | Stores reviewed reusable procedures separately from ordinary facts | Recall opt-in |
| Hermes integration | Provides exact session/project scoping, local HTTP/stdio compatibility and replay-safe outbox behavior | Optional integration |
| Operational review | Performs a read-only six-hour integrity, queue, profile, intake and retrieval review | Optional Windows task |
MemoryMaster 4.7 uses the configured Gemini extraction + GLM consolidation path for this installation. OpenAI and Anthropic remain optional provider adapters; neither is required for graph-observation discovery or ordinary recall.
Why MemoryMaster exists
Typical memory stacks optimize retrieval while leaving correctness and retirement to the caller. MemoryMaster makes those properties explicit:
- Every claim has lifecycle state, scope, provenance, confidence and validity.
- Trusted recall returns confirmed, authorized, non-sensitive claims only.
- Contradictions become visible conflicts instead of silently coexisting.
- Citations and support tables make derived output traceable back to evidence.
forgetpreviews logical retirement; it never implies an unsafe hard delete.- SQLite is authoritative. Qdrant is optional and may only propose IDs that are rehydrated and re-authorized from SQLite.
- Generated observations, profiles, skills and wiki pages never recursively reinforce the claims that produced them.
Quick start
Install the private local MCP profile:
python -m pip install "memorymaster[mcp,capture,security]"
memorymaster-setup --yes --profile minimal --no-full-stack --json
Restart the agent session once so its long-lived MCP process loads the installed package, then verify:
query_memory("What decisions have we made about storage?")
Try the complete lifecycle in a disposable database:
memorymaster --json demo
Four public operations
The stable Python, CLI and MCP interface is intentionally small:
memorymaster --workspace . remember --text "Atlas uses SQLite WAL."
memorymaster --workspace . recall "What does Atlas use?"
memorymaster --workspace . forget --source-item-id 1
memorymaster --workspace . improve --scope project:atlas
from memorymaster import forget, improve, recall, remember
receipt = remember(text="Atlas uses SQLite WAL.", scope="project:atlas")
context = recall("What does Atlas use?", scope_allowlist=["project:atlas"])
preview = forget(source_item_id=receipt.source_item["id"])
queued = improve(scope="project:atlas")
rememberstores source/evidence lineage and queues governed extraction.recallis confirmed-only in trusted mode.forgetpreviews by default;--applyperforms lifecycle retirement.improvequeues bounded work. It does not confirm or rewrite claims inside the request.
See Public v1 for receipts and full parameter contracts.
Graph observations (PPR-7)
Graph observations answer questions that individual facts cannot, such as:
- Which three blockers form one dependency chain?
- What recurring pattern is supported by several independent episodes?
- Which root cause is cited by multiple confirmed claims?
- Which observation became stale when its supporting evidence was retired?
Component membership is deterministic. Exact canonical graph signatures and union-find decide which evidence belongs together; an LLM may summarize an eligible component but cannot choose membership, invent support, promote its own output, or feed the result back into graph extraction.
Recall remains explicit:
memorymaster --workspace . recall "What dependencies keep recurring?" --include-observations
result = recall(
"What dependencies keep recurring?",
include_observations=True,
observation_limit=2,
)
Trusted mode revalidates support at read time and returns confirmed observations
only. Exploratory mode can label candidates or stale observations. Ordinary
recall remains unchanged while include_observations is off.
Evidence-bound compiled profile
The compiled profile turns repeated, independently supported transcript facts into a bounded session-start briefing. It is a disposable projection:
- SQLite transcript/support rows remain authoritative.
- New or replacement facts need at least two independent sessions.
- Unknown support IDs, sensitive output, instructions and malformed provider output fail closed.
- The injected profile is context about the user—not permission and not an instruction hierarchy.
Enable both 4.7 features for new processes:
[Environment]::SetEnvironmentVariable("MEMORYMASTER_GRAPH_OBSERVATIONS", "1", "User")
[Environment]::SetEnvironmentVariable("MEMORYMASTER_COMPILED_PROFILE", "1", "User")
Hooks are re-read on every event and update immediately. MCP servers and other long-lived daemons must be restarted to load newly installed package code or new environment variables.
Scheduled operation—release first, review afterward
There is no 24-hour implementation or release prerequisite. A long observation
window is useful only as later evidence about queue health, cost and lifecycle.
It must never keep working code out of main merely because the clock has not
elapsed.
On Windows, install the bounded read-only review task after installing the release:
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install-windows-operational-review.ps1 `
-PythonExe "<runtime-python.exe>" `
-Database "<memorymaster.db>" `
-ExpectedVersion "4.7.2" `
-EveryHours 6
MemoryMaster-Operational-Review then checks:
- installed version, schema, SQLite
quick_checkand foreign keys; - observation backlog, blocked jobs and expired leases;
- compiled-profile runs, facts and exact support counts;
- recent claim fields for private topology or absolute-path residue;
- the configured natural-language retrieval canary.
It writes latest.json and append-only execution history under the user's local
application-data directory. The review opens SQLite read-only, performs no claim
or job mutation, and never turns task transport into a false success receipt.
Exit codes are 0=PASS, 1=FAIL, and 3=WARN.
Architecture and governance
producer
-> source_items
-> evidence_items
-> candidate claims
-> steward proposals / lifecycle events
-> confirmed claims
-> FTS5 recall + supported entity graph
-> optional observations / skills / compiled profile
The default product is one private local SQLite database in WAL mode plus a stdio MCP server. No new database, cloud service or vector server is required. PostgreSQL team operation remains explicitly deferred; Qdrant remains an optional semantic accelerator rather than a source of truth.
Important boundaries:
- Claim fields pass through the shared sensitivity filter on every ingest path.
- Raw user-selected source/evidence remains governed by the separate preservation boundary described in ADR-0006.
- Generated observations cannot support future observations.
- Trusted graph traversal requires active, authorized support in the same scope and tenant.
- Schema changes use immutable checksum-verified migrations.
- The Obsidian wiki is an opt-in human view, not the read layer.
See Architecture, Operations, and the Graph Observations ledger.
MCP configuration
{
"mcpServers": {
"memorymaster": {
"command": "memorymaster-mcp",
"env": {
"MEMORYMASTER_DEFAULT_DB": "<path-to-memorymaster.db>",
"MEMORYMASTER_WORKSPACE": "<project-root>",
"MEMORYMASTER_MCP_AUTH_MODE": "local-trusted"
}
}
}
}
local-trusted is only for a private SQLite stdio process controlled by one OS
user. Regenerate old brownfield entries that do not declare an authorization
mode. The full tool inventory is generated from code in
release truth; operational examples are in
MCP tools.
Providers
Provider calls are for extraction, consolidation and selected steward phases— not for ordinary local recall.
| Provider | Configuration | Typical use |
|---|---|---|
| Gemini | MEMORYMASTER_LLM_PROVIDER=google plus configured Google credentials |
Activated extraction path |
| GLM through authenticated OpenCode | configured consolidation model | Activated Dreaming/profile consolidation path |
| Claude CLI OAuth | MEMORYMASTER_LLM_PROVIDER=claude_cli |
Optional batch/steward path |
| Ollama | MEMORYMASTER_LLM_PROVIDER=ollama |
Optional local provider |
| OpenAI / Anthropic APIs | corresponding provider and environment credential | Supported optional adapters |
Never put credentials in claims, repository files, task arguments, logs or generated profiles.
Useful commands
# Trusted recall with score explanation
memorymaster query "topic" --explain
# One bounded steward cycle
python -m memorymaster --db memorymaster.db run-cycle
# Database checks
memorymaster --db memorymaster.db --json integrity --quick-check --fk-check
# Dashboard
memorymaster-dashboard --db memorymaster.db
# Validate generated release inventory
python scripts/generate_release_truth.py --check
Upgrade and rollback
Upgrade the package, then restart long-lived MCP/daemon processes:
python -m pip install --upgrade "memorymaster[mcp,capture,security]"
Feature rollback does not delete history:
[Environment]::SetEnvironmentVariable("MEMORYMASTER_GRAPH_OBSERVATIONS", "0", "User")
[Environment]::SetEnvironmentVariable("MEMORYMASTER_COMPILED_PROFILE", "0", "User")
Disabling generation/recall leaves additive tables and audit history intact. Candidates can be archived and confirmed generated observations made stale only through the governed lifecycle—not by deleting database rows.
Project status and documentation
- Stable release history: CHANGELOG
- Canonical documentation verdicts: DOCS-MAP
- Install and agent wiring: AGENT-INSTALL
- Public API: Public v1
- Operational procedures: Operations
- Security and supply chain: Security
- Full feature handbook: Handbook
MemoryMaster is MIT licensed. Contributions should preserve SQLite authority, claim governance, exact support lineage, privacy boundaries and opt-in derived recall.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file memorymaster-4.7.4.tar.gz.
File metadata
- Download URL: memorymaster-4.7.4.tar.gz
- Upload date:
- Size: 1.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
227fb3b42eab06c35c1e87e1de2d3bfe83d048f3abf6b953ea1af61852205be1
|
|
| MD5 |
bcb5d6239eea25f3d6012016bacf02a3
|
|
| BLAKE2b-256 |
e0d334a7bc385b1ccea0c9b259663a208dfa09d02fb91d7e0bfa2971846e3a22
|
Provenance
The following attestation bundles were made for memorymaster-4.7.4.tar.gz:
Publisher:
publish.yml on wolverin0/memorymaster
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
memorymaster-4.7.4.tar.gz -
Subject digest:
227fb3b42eab06c35c1e87e1de2d3bfe83d048f3abf6b953ea1af61852205be1 - Sigstore transparency entry: 2470561310
- Sigstore integration time:
-
Permalink:
wolverin0/memorymaster@7ccdcc1195c6c09f6333a08fe654fd0039107563 -
Branch / Tag:
refs/tags/v4.7.4 - Owner: https://github.com/wolverin0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7ccdcc1195c6c09f6333a08fe654fd0039107563 -
Trigger Event:
push
-
Statement type:
File details
Details for the file memorymaster-4.7.4-py3-none-any.whl.
File metadata
- Download URL: memorymaster-4.7.4-py3-none-any.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30143d2a02d81128f24b79b3bd31af5b7d6332cb055103fead2004333f1e84fb
|
|
| MD5 |
efb925052e48bc58a361d39340afc4c9
|
|
| BLAKE2b-256 |
ce93bf85f8a9e086a8abec4c2ee28b954d694de9d9ffd1ec4066177d5a5dfd5b
|
Provenance
The following attestation bundles were made for memorymaster-4.7.4-py3-none-any.whl:
Publisher:
publish.yml on wolverin0/memorymaster
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
memorymaster-4.7.4-py3-none-any.whl -
Subject digest:
30143d2a02d81128f24b79b3bd31af5b7d6332cb055103fead2004333f1e84fb - Sigstore transparency entry: 2470561325
- Sigstore integration time:
-
Permalink:
wolverin0/memorymaster@7ccdcc1195c6c09f6333a08fe654fd0039107563 -
Branch / Tag:
refs/tags/v4.7.4 - Owner: https://github.com/wolverin0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7ccdcc1195c6c09f6333a08fe654fd0039107563 -
Trigger Event:
push
-
Statement type: