whitemagic
Summary: WhiteMagic exposes one MCP meta-tool (wm) that gives you a local-first, durable memory and session-continuity layer for agents — record context, search it, carry it across sessions, and emit verifiable receipts.
Route it three ways: natural language (
thought="remember that X is Y"), explicit dispatch (route=e.g.memory.create), or passthroughargs=.Memory CRUD/lifecycle: create, read, search, list, update, revisions, ingest, hybrid_recall.
Search: lexical search without an external model, plus vector search, query, filter, nearby, aggregate, associations, batch_read.
Sessions/continuity: session start, record, checkpoint, continuity, list, recall, replay.
Receipts: emit and verify signed continuity receipts.
Introspection: memory count/stats/tags,
gnosis.status/explain, and "list tools" discovery via the meta-tool.Store & safety: local store at
~/.local/share/whitemagic, backup/verify/restore path, transactions, read-only mode (--readonly) that refuses writes, no telemetry by default.Note: the schema advertises 59 tools (writable, store scope), while the README describes 30 curated-profile MCP tools / 69 curated routes — a catalog-size discrepancy between live schema and documented contract.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@whitemagicSave this important decision to memory: use TypeScript for the new API."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WhiteMagic
A local-first memory layer for MCP agents.
WhiteMagic gives an AI agent durable project memory over MCP: record important context, find it after restart, and carry useful decisions into the next session — without sending your memory store to any hosted service.
You are an agent reading this repo? Start with skill.md (five-minute operational onboarding) and llms.txt (machine-readable index).
{
"mcpServers": {
"whitemagic": {
"command": "wm",
"args": ["serve", "--profile", "curated"]
}
}
}Hosted services (separate from the local package)
Remote MCP —
https://mcp.whitemagic.dev/mcp(streamable-http): read-only recall over a curated public corpus; keyless discovery; evaluation keys with a published 50 recalls/day allowance; OAuth 2.1; x402 session lease options published as $0.01 for 5 minutes or $0.50 for 24 hours, with a published 10,000 RPM limit; andmemory.search_batchfor up to 10 queries in one MCP call. These limits and options are described by the live server card; the batch tool is also present in the livetools/listresponse. Your local store is not uploaded to this read-only recall lane.Receipt verification and agent trust API —
https://api.whitemagic.dev: statelessPOST /verifyfor continuity-receipt bundles (/healthand/infokeyless), plus a published/erc8004/validateadapter targeting Base. See the API's live service metadata and endpoint documentation for the advertised contract.Memory Crystal client and API —
scripts/crystal_client.pyseals and opens crystal envelopes locally with AES-256-GCM or ChaCha20-Poly1305 (install the optional dependency withpython3 -m pip install cryptography). The API documentation lists crystal store, fetch, and lineage endpoints; successful hosted persistence and retrieval are not implied by local encryption support.
Related MCP server: Memento
Status
WhiteMagic v9. Release channel: open alpha — public alpha for MCP agents. The version number is a compatibility signal; the channel is an evidence claim (beta and stable each require their own exit conditions, not a version milestone).
Install path: Linux x86-64, Linux arm64, and macOS arm64 — install-gated. Linux ships fully static (musl) builds with no glibc or distribution requirements, selected automatically by the installer; dynamically linked builds remain available for glibc 2.39+ hosts, and releases also publish gzipped distributables (~58% smaller) that the installer prefers on slow links. macOS arm64 installs through the same checksum-verified installer (hardware smoke evidence in issue #2). macOS x86_64 and Windows x86_64 binaries are published in every release but their install paths are not gated yet.
Support window: the current minor and the previous minor on the install-gated lines (Linux x86-64, Linux arm64, macOS arm64) receive fixes; older minors are archival. macOS x86_64 and Windows remain published but unsupported — see
SECURITY.md.Trusted, local-first, single-user operation with Landlock containment and firebreak guards.
What it does
The supported alpha contract:
trusted, local, single-user operation;
explicit MCP routes for dependable behavior;
durable memory creation and lexical search without an external model;
session record, replay, and cross-session continuity;
a complete backup, verification, and restore path;
no telemetry by default and no required WhiteMagic cloud service;
truthful degradation when optional models or embeddings are unavailable.
Install
Download the binary and its checksum from the
latest release, then
(substituting your platform's artifact name — for example
wm-linux-x86_64-musl, wm-linux-aarch64-musl, or wm-macos-aarch64; the
.gz variants decompress with gunzip -c <file>.gz > <file>):
sha256sum -c wm-linux-x86_64-musl.sha256
chmod +x wm-linux-x86_64-musl
mkdir -p ~/.local/bin && mv wm-linux-x86_64-musl ~/.local/bin/wmIf ~/.local/bin is not on your PATH:
export PATH="$HOME/.local/bin:$PATH"Or use the install script (resolves the latest release, picks the right artifact for your platform, and verifies the checksum automatically):
curl -fsSL https://www.whitemagic.dev/install.sh?ref=readme | shOther channels
npx whitemagic-mcp serve # npm (no global install)
cargo install whitemagic # crates.io
docker run -i lbailey94/whitemagic:9 serve # Docker HubAdoption snapshot (2026-09-13): 759 npm downloads/30d · 1,846 Docker pulls · 67 crates.io downloads. Package installs are independent of the installer and grew without any website CTA — the memory layer chooses its own doors.
Verify the installation, activate it, and see the product work end to end:
wm --version # wm 9.3.0
wm grimoire # guided first-run: host, memory layer, agent wiring, vocabulary, continuity
wm connect # dry run: list detected MCP clients and the exact change
wm connect --write # apply, with timestamped backupswm grimoire proves the environment and previews client wiring; it ends by
telling you activation itself needs wm connect --write. wm quickstart is
the optional 30-second two-process continuity demo on an isolated store, and
wm doctor is a troubleshooting tool, not a setup step — run
wm doctor --deep when something looks wrong.
Everyday commands
wm status # is WhiteMagic ready? (store, counts, index, last backup)
wm selftest # ~1-second end-to-end invariant check (throwaway store)
wm connect # wire every detected MCP client (dry run first; add --write)
wm setup # list clients / per-client setup (wm setup <client> --write)
wm update check # is a newer signed release available? (notify-only)Connect an MCP client
Point any MCP client at:
wm serve --profile curatedThe server communicates over stdio and exposes the wm meta-tool plus a
discrete lifecycle catalog — 30 MCP tools in the curated profile: the 15
CRUD/lifecycle aliases (memory.create/search/read/list/hybrid_recall/update/ revisions/ingest, session.start/record/checkpoint/continuity,
receipts.emit/verify) and 15 read-only handles
(memory.count/stats/tags/aggregate/associations/batch_read/query/filter/ nearby/vector.search, session.list/recall/replay,
gnosis.status/explain). Read-only servers (--readonly) advertise the 23
read-only entries only — write routes are refused there anyway. The wm
meta-tool provides explicit access to the full curated route catalog (69
routes) without expanding the client's schema.
Direct handles for the common lifecycle calls, with NLU routing still available.
Explicit routing is the dependable contract:
wm(route="memory.create", args={...})wm(route="session.start", args={...})wm(route="tools.list", args={})
--profile curated selects the supported memory/session surface and is the
default when no profile is specified. Pass --profile full for the research
archive surface (see below).
Privacy and data
Your store lives locally at
~/.local/share/whitemagic. Nothing is sent to WhiteMagic-operated services; there is no telemetry by default (any future sharing is opt-in, previewable, and schema-bound).Privacy flags exclude memories from responses and reasoning. They are access controls, not encryption — anyone who can read the store files can read the contents. Do not store credentials in memories.
Conversation capture happens through explicit tool calls, not automatically.
Backup and restore
Back up the whole store root (LMDB database, search indexes, and all
session/state files — not just the lmdb/ subdirectory):
# Stop the server first, then:
wm backup # writes ~/whitemagic-backups/<timestamp>/
wm backup --out /path/to/external/disk # keep copies OFF the live machineEach backup contains the full store plus a SHA256SUMS manifest. Restore
after a failure (this replaces the target store):
wm restore --backup ~/whitemagic-backups/whitemagic-backup-<timestamp> --force
wm doctor # confirm health after restoreRestore verifies every file against the manifest before touching anything, and refuses tampered or incomplete backups. Notes:
wm seal/wm verifydetect integrity drift; they do not recover data. Only a backup recovers data.Transaction rollback (
transaction.rollback) is an in-store, short-lived undo — not a substitute for backups.Keep at least one backup on a different disk or machine.
Research surface (not part of the alpha contract)
The codebase contains a larger research system beyond the product boundary:
autonomous cycles, dream consolidation, bicameral reasoning, an imagination
engine, self-play training loops, polyglot sidecars (Julia/Haskell/Zig/Koka),
a signed multi-agent mesh, holographic memory coordinates, and the full
research archive (~300 routes; the generated
docs/contract/route-schema-manifest.json is the authority) reachable via
wm serve without a profile restriction. These are
research surfaces without product acceptance evidence; they may change or be
removed. Only surfaces documented in this README are part of the product
contract.
Building from source
Requires Rust 1.85+:
cargo build --release
cargo test # full test suite
cargo clippy --all-targetsDocumentation
docs/QUICKSTART.md— the two-process continuity demodocs/QUICKSTART.es.md— guía rápida (Español)docs/QUICKSTART.pt-BR.md— guia rápido (Português BR)docs/QUICKSTART.fr.md— guide de démarrage (Français)docs/TRANSLATIONS.md— translation index and help-wanted languagesdocs/MCP_CONFIG_GUIDE.md— client configurationdocs/MULTI_LAPTOP.md— moving between machines (backup/restore, session carry)continuity-receipt— signed, offline-verifiable records of governed tasks (separate spec repo, Apache-2.0)CHANGELOG.md— release notesSECURITY.md— reporting vulnerabilities
Migrating from v26 (legacy Python)
If you ran the retired Python version:
wm migrate --v2-dir ~/.whitemagic/users/local/galaxies --dry-run # preview
wm migrate --v2-dir ~/.whitemagic/users/local/galaxies # migrateThe stack
Local memory → governed execution → verifiable continuity
whitemagic— local-first memory and session continuity for AI agentscontinuity-receipt— portable, offline-verifiable evidence for governed tasks (Apache-2.0)mandalaos-gate-lite— bounded agent execution that emits receipts (review snapshot)whitemagic-plugins— client integrations and adapters
Each repository stands on its own: WhiteMagic does not require MandalaOS, and
Continuity Receipt does not require WhiteMagic. Three entrances — use it →
whitemagic; review a protocol → continuity-receipt; attack the
security architecture → mandalaos-gate-lite.
License
MIT © Lucas Bailey and WhiteMagic Contributors
Support and security
Support: open an issue at https://github.com/lbailey94/whitemagic/issues
Contributing:
CONTRIBUTING.mdSecurity: email lbailey94@protonmail.com (please do not open public issues for security reports)
Available Tools
1 toolwmA
WhiteMagic meta-tool — curated tool surface (59 tools). Mode: writable. Scope: store /root/.local/share/whitemagic/lmdb. Use thought= for NLU routing (e.g. 'remember that X is Y', 'search for Z', 'list tools'), route= for explicit dispatch (e.g. 'memory.create'), and args= for passthrough arguments. Say 'list tools' to discover available tools.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Arguments to pass through to the target tool. | |
| route | No | Explicit tool name for direct dispatch (e.g. 'memory.create', 'tools.list'). | |
| thought | No | Natural language input describing what to do. Auto-routes to the best-matching tool via TF-IDF NLU classification. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It states the tool is writable and scoped to /root/.local/share/whitemagic/lmdb, which conveys mutability and persistence. However, it does not disclose what happens on invalid routing, how write operations are applied, or what the observable side effects beyond scope are, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and dense, with each sentence adding a distinct element: identity, mode/scope, parameter usage, and discovery command. It could be better structured with separation of routing versus dispatch, but no sentence is wasted and the key operational details are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a meta-tool with 59 sub-tools and no output schema, the description covers the essential calling convention and discovery mechanism. It does not explain the output shape since that depends on the routed tool, nor does it mention edge cases such as ambiguous routing or invalid route names. These are notable gaps for an agent that must know what the call will return and how to recover from failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage, but the description adds meaning beyond the field names by explaining the intended role of each parameter: thought performs TF-IDF NLU auto-routing, route forces a direct tool dispatch, and args passes through arguments. It clarifies the routing model and the relationship between thought and route, which the bare schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as a meta-tool exposing a curated surface of 59 tools, with a writable mode and a concrete storage scope. The phrase 'Use thought= for NLU routing... route= for explicit dispatch' makes its dispatcher role clear even though the name 'wm' and missing title are opaque. It lacks sibling differentiation because no siblings are provided, but the resource and behavior are stated specifically enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage instructions for all three parameters: thought for NLU routing, route for explicit dispatch, and args as passthrough. It also gives concrete command examples and points to 'list tools' for discovery. There is no explicit when-not-to-use because no alternatives are listed, but the guidance is otherwise complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v9.1.0- First observed
wm
TDQS
Scored across 1 tool
Only one tool exists, so there is no ambiguity between tools. The tool description is clear about its purpose as a meta-tool and how to use it.
The single tool name 'wm' is extremely generic and provides no indication of its function. It does not follow a verb_noun pattern, but with only one tool, naming consistency is not a practical concern; however, the name itself is vague.
The server exposes only one meta-tool, which internally manages 59 tools. This is an extreme mismatch between the exposed surface and the actual scope, making it nearly impossible for agents to discover and use the underlying tools without explicit prior knowledge.
The single meta-tool hides the entire tool surface behind a routing mechanism, making the surface severely incomplete from an agent's perspective. Direct CRUD or lifecycle operations are not exposed, and the need to use thought= for NLU routing introduces fragility and dead ends.
Maintenance
Related MCP Connectors
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Cross-tool persistent memory and context for AI assistants over MCP.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Related MCP Servers
- AlicenseAqualityBmaintenanceHierarchical markdown-based memory system for AI agents. Enables efficient context management by loading only relevant rooms (directories) instead of full memory.532 PyPIMIT
- AlicenseCqualityAmaintenanceMemento is a local-first, open-source MCP middleware that gives AI agents persistent memory, proactive goal enforcement, and autonomous intelligence using a SQLite temporal graph with Reciprocal Rank Fusion retrieval.151AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceLocal persistent memory for AI coding tools. Stores project context and conversation recall locally via MCP.10 npm14MIT
- AlicenseNot gradedqualityCmaintenanceProvides persistent memory for AI coding agents via MCP, allowing them to recall fragility, decisions, and bugs across sessions.273 npm3MIT