Skip to content

installation and setup

Install and connect WhiteMagic.

Choose the stable Gen 2 release for daily use, then verify it, connect an MCP client, and run the first readiness checks. The Gen 3 preview is optional and isolated in its own binary directory and store.

Choose a release channel

Stable Gen 2 · v9.3.4 · the install command is pinned to this release.

Download Linux x86-64 binary

curl -fsSL "https://www.whitemagic.dev/install.sh?ref=install-a" | sh -s -- --version v9.3.4 --dir "$HOME/.local/bin" --ref install-a

No sudo required · Installs in user space

No account · Memory and sessions stay on your machine · No usage telemetry off-device by default

fastest path

Ask your AI to set it up.

Paste one prompt into a coding agent that can run shell commands. It asks which channel to use, selects the command for your operating system, and reports the exact version and readiness result. Stable Gen 2 is the default; the preview is never installed unless you choose it.

the prompt
Find the WhiteMagic MCP server (whitemagic.dev; official MCP registry id io.github.lbailey94/whitemagic-mcp). Ask me which release channel I want; do not install the experimental preview unless I explicitly choose it. Stable Gen 2 is the default.
Choose the install command matching my operating system:
Linux (POSIX shell): curl -fsSL "https://www.whitemagic.dev/install.sh?ref=ask-ai" | sh -s -- --version v9.3.4 --dir "$HOME/.local/bin" --ref ask-ai
macOS (POSIX shell): curl -fsSL "https://www.whitemagic.dev/install.sh?ref=ask-ai" | sh -s -- --version v9.3.4 --dir "$HOME/.local/bin" --ref ask-ai
Windows (PowerShell): & ([scriptblock]::Create((irm 'https://raw.githubusercontent.com/lbailey94/whitemagic/v9.3.4/scripts/install.ps1'))) -Version 'v9.3.4' -Dir (Join-Path $env:LOCALAPPDATA 'WhiteMagic\bin') -Ref 'ask-ai'
Do not run a POSIX curl command in PowerShell. If a platform/channel has no published target, stop and explain that rather than substituting another binary.
Only if I explicitly choose experimental Gen 3, use the current supported Linux or Apple Silicon macOS command:
Linux: curl -fsSL "https://www.whitemagic.dev/install.sh?ref=ask-ai" | WM_STORE="$HOME/.local/share/whitemagic/gen3-preview" sh -s -- --version v10.3 --dir "$HOME/.local/bin/whitemagic-gen3" --ref ask-ai --no-path
macOS: curl -fsSL "https://www.whitemagic.dev/install.sh?ref=ask-ai" | WM_STORE="$HOME/.local/share/whitemagic/gen3-preview" sh -s -- --version v10.3 --dir "$HOME/.local/bin/whitemagic-gen3" --ref ask-ai --no-path
Gen 3 installs into $HOME/.local/bin/whitemagic-gen3 with --no-path and uses a separate store at $HOME/.local/share/whitemagic/gen3-preview. It has no Windows or Intel Mac target in the current channel record.
The numbered readiness and client-write workflow below is for Gen 2 only. Do not run Gen 2's `wm grimoire`, `wm connect`, `wm setup`, backup, or update workflow against Gen 3. For a preview MCP server, inspect that installed binary's `wm --help` and `wm serve --help`; use its full absolute binary path and pass the separate store before `serve`. MCP clients do not expand shell variables in JSON: replace the illustrative home prefix with your expanded absolute path. Example shape: command "/absolute/home/.local/bin/whitemagic-gen3/wm", args ["--store", "/absolute/home/.local/share/whitemagic/gen3-preview", "serve"]. Show me the proposed client configuration before writing it; apply configuration changes only after I approve them, and restart the client afterward.
For stable Gen 2, run `wm --version`, then follow the stable readiness steps below. Report which generation and version you chose and any diagnostic result; do not share private memory contents.

Who can do this

  • ·Works in most clients that can run shell commands – Claude Code, Codex CLI, opencode, and similar terminal-capable agents can carry the prompt out end to end.
  • ·Clients that can browse the official MCP registry can search for io.github.lbailey94/whitemagic-mcp and add it directly, with no shell step.
  • ·Terminal-native path, one client at a time: wm setup <client> (claude · cursor · windsurf · codex · opencode) shows the change first; add --write to apply it with a timestamped backup.
  • ·No terminal at all? Paste the matching config by hand from the client tabs below – the generic mcpServers entry works in most clients.
  • ·Prefer not to install a binary? The npm launcher npx -y whitemagic-mcp@9.3.4 serve runs the stable Gen 2 server.

The per-client tabs below remain the manual fallback; where a client ships its own add command, that one-liner also works (Claude Code: claude mcp add whitemagic -- wm serve).

first run

First run, step by step.

The numbered path below is for stable Gen 2 only: check the version, run readiness, review client changes, then test a session. Import and maintenance are optional sections below. Do not use this Gen 2 workflow for the Gen 3 preview.

  1. 01

    Confirm the stable binary

    wm --version

    Confirm that this command reports stable Gen 2 v9.3.4. Every numbered readiness and maintenance command in this walkthrough is for the stable binary on PATH. If you chose Gen 3, stop here and use only the isolated preview-server instructions below.

  2. 02

    Verify readiness

    wm grimoire

    On stable Gen 2, this checks the host, memory layer and release, previews detected client configuration, calibrates memory, and demonstrates restart continuity. Read the separate readiness results; configuration changes are not applied unless you explicitly add --write.

  3. 03

    Wire your clients

    wm connect

    This is a dry run: it lists detected clients and proposed changes without writing. Review the displayed paths and binary. Only after you approve those changes, rerun as wm connect --write; it creates timestamped backups before applying them.

  4. 04

    Start a session, then resume

    wm session start --title "first run"

    A client connection does not silently capture every conversation. Explicitly record a decision or turn with the WhiteMagic memory/session tools when you want it retained; it is stored locally. Open a fresh session and recall that item to check continuity. wm quickstart demonstrates a stop/start on an isolated store; wm selftest runs local diagnostics on a throwaway store, not a complete invariant certification. The Gen 3 preview's wm selftest is a different, host-health diagnostic scoped to that preview binary (see the preview section below).

Using the experimental Gen 3 preview

This is an isolated server path, not the Gen 2 readiness or maintenance workflow. Check this installed preview binary's own help first. It has a separate binary directory ($HOME/.local/bin/whitemagic-gen3), a separate store ($HOME/.local/share/whitemagic/gen3-preview), and does not replace the stable command on PATH. Do not point it at your Gen 2 store. The current release record has no Windows or Intel Mac preview asset. A source build or source-test result on macOS does not verify a published installer. On Linux, this preview's own wm selftest extends the persistence probe with host-health checks: disk headroom, available memory, kernel PSI memory/io pressure, swap/zram saturation, crash-looping systemd user units, and top memory processes. --strict exits non-zero when a host check is critical; --json adds host_status and host_health beside the persistence result. It is a local diagnostic, not a complete invariant certification.

Run this version check only on a supported preview target:

"/absolute/home/.local/bin/whitemagic-gen3/wm" --version

Inspect this binary and its server options before continuing:

"/absolute/home/.local/bin/whitemagic-gen3/wm" --help
"/absolute/home/.local/bin/whitemagic-gen3/wm" serve --help

MCP config shape for Linux and Apple Silicon macOS only (illustrative paths; replace with real absolute paths before saving. Do not leave $HOME in client JSON):

"command": "/absolute/home/.local/bin/whitemagic-gen3/wm",
"args": ["--store", "/absolute/home/.local/share/whitemagic/gen3-preview", "serve"]

Readiness without the single green badge

wm grimoire reports five separate facts instead of one boolean: memory layer ready, agent wired, continuity verified, semantic recall available, fully activated. “The memory layer works” and “you are connected to it” are different claims, so they stay separate.

Client configuration ↓See the captured restart example →Prefer no install? Hosted evaluation lane →

stable Gen 2 client setup

Choose your client.

These client tabs configure the stable Gen 2 server. Preview MCP configuration is separate; use the isolated binary and store instructions above.

Register WhiteMagic as a local MCP server. Sessions can then resume where the last one stopped – file checkpoints, decisions, and next steps survive restarts.

2 · Connect it to this clientbash
claude mcp add whitemagic -- wm serve

Run this once in your terminal; Claude Code stores the server entry for you. Claude Code MCP docs ↗

Or let WhiteMagic patch it: run wm setup claude to see the exact change first; add --write to apply it (timestamped backup). JSONC/TOML configs are print-only.

Run once, then ask your client what it remembers.

Works with your client. Works in your OS.

Client support is a documentation list, not an integration matrix: every entry links to a setup path checked against that client's config shape. Platform gate status below is declared by each channel's release manifest; it does not prove a fresh install on your host.

platforms

Linux arm64
Gen 2 stable v9.3.4: release manifest declares install gate
Linux arm64 musl
Gen 2 stable v9.3.4: published asset · manifest declares no install gate
Linux x86-64
Gen 2 stable v9.3.4: release manifest declares install gate
Linux x86-64 musl
Gen 2 stable v9.3.4: published asset · manifest declares no install gate
macOS arm64
Gen 2 stable v9.3.4: release manifest declares install gate
macOS x86-64
Gen 2 stable v9.3.4: release manifest declares install gate
Windows x86-64
Gen 2 stable v9.3.4: release manifest declares install gate
Linux arm64
Gen 3 preview v10.3: release manifest declares install gate
Linux x86-64
Gen 3 preview v10.3: release manifest declares install gate
macOS arm64
Gen 3 preview v10.3: release manifest declares install gate

The Gen 3 preview publishes no Windows or Intel macOS assets; Gen 2 stable still provides those targets.

troubleshooting

Start with a safe check.

These checks inspect the stable Gen 2 installation and do not apply configuration changes. If you selected Gen 3, use only its separate server instructions above and its own help output.

If the shell cannot find wm

POSIX shell: command -v wm · PowerShell: Get-Command wm -ErrorAction SilentlyContinue

Wrong version or command not found

The command is missing, or a client starts a different generation than the one you selected.

wm --version

This reports the binary found on PATH. The stable command should report Gen 2. Gen 3 is installed in its own directory and is intentionally not added to PATH.

Choose the matching operating-system tab and channel in Install. Open a fresh terminal after installing. Do not remove the other generation to fix a PATH mismatch.

Wrong architecture or unsupported target

The binary reports an exec-format or architecture error before it can print a version.

uname -m

Run this only in a Linux/macOS POSIX shell and compare it with the selected release asset. On Apple Silicon, a Rosetta terminal may report x86_64; use a native arm64 terminal. In Windows PowerShell, inspect $env:PROCESSOR_ARCHITECTURE instead; it describes the current process environment and may reflect emulation.

Select the published asset for your actual host and channel, or use the installer to select it. Current Gen 3 has no Windows or Intel Mac target. Keep your store and the other generation intact; replacing a mismatched executable does not require deleting data.

Client does not start the selected stable server

The client cannot connect, or an older/different binary appears in its MCP configuration.

wm connect

On Gen 2 this is a dry run: it lists detected clients and proposed config changes without writing. Check the displayed binary and config paths against the client tab above.

Review the proposed change first. Apply only the client you intend to update, using its documented config flow or the explicit --write option. Restart that client after saving. For Gen 3, configure its absolute binary and separate store manually; do not use Gen 2 connect/setup.

Server launch or stdio error

The config is saved, but the client still cannot start or initialize the local server.

wm serve --help

This checks the stable binary's server options without starting it. The client must invoke wm with serve over stdio, with the intended binary and store paths; it should not invoke connect or grimoire as the server.

Restart the client after saving its configuration and inspect its MCP launch log. Confirm the executable exists and that any explicit store path matches the intended local store. A stdio server waiting for protocol input is normal; keep diagnostics separate from the protocol stream.

Readiness or local-store warning

The stable first-run report or client test reports a host, store, index, or release issue.

wm doctor

On stable Gen 2 this diagnoses the selected/default store. It does not run a repair unless repair options are explicitly requested.

Keep the diagnostic output and confirm which store the client uses. Do not run repair or schema-completion options as a first response. Make a verified backup and get help before any repair if data integrity is reported.

Import stopped or would ingest unexpected files

A dry run lists unexpected files, or an earlier folder ingest stopped part way through.

wm ingest --source "/path/to/folder" --galaxy "example-name" --redact --dry-run

Replace the quoted example folder and galaxy name with your intended source and target. This previews them without writing. Review the listed paths, skips, and destination before removing --dry-run.

If a previous import was interrupted, the documented ledger makes rerunning the same command resumable for unchanged files. Recheck the source and target first; do not delete the ledger or change the target to force a retry.

wm report writes a sanitized support bundle locally and transmits nothing. Review it yourself and remove private material before sharing; never include bearer credentials, encryption keys, or private memory text.

load your data

Bring your notes, docs, and transcripts.

These import instructions use the stable Gen 2 wm ingest command: it walks a folder into a galaxy on your disk – chunked, ledgered, and resumable. Nothing is uploaded; files stay on your machine. Use the separate preview help for its own interface.

wm ingest reads files from your disk, chunks them, and writes them into a store with provenance tags. It is idempotent: a per-file SHA-256 ledger at <store>/ingest_ledger.jsonl means re-runs are no-ops for unchanged files, and an interrupted ingest resumes by running the same command again.

Dry run first

wm ingest --source ~/Notes --galaxy research --redact --dry-run

Reports what would be ingested and skipped (with reasons), without writing anything or creating the store.

Then ingest for real

wm ingest --source ~/Notes --galaxy research --redact

Chunks land in the research galaxy with provenance tags; credential-shaped spans are replaced before storage. Run wm status and check the memory count before continuing.

ingest flags

--source <dir>
Folder to walk (required). The walk is recursive and skips build/VCS directories (.git, node_modules, target, .next, …).
--galaxy <name>
Target galaxy. Default: research for documents, sessions for transcripts.
--redact
Scrub credential-shaped spans (PEM keys, prefixed tokens, assignment values) and ingest the file instead of skipping it.
--dry-run
Report without writing or creating the store.
--limit <n>
Only the first N files in walk order.
--include-credential-files
Ingest files whose name looks credential-bearing (secrets.txt); requires --redact, so content is scrubbed before storage.
--store <path> · --wait <n>
Point at a specific store; wait up to N seconds for a busy (live-server) store before failing.

What is skipped, by default

Credential-named files are never ingested: .env*, .pem, .key, .p12/.pfx/.crt, id_rsa, id_ed25519, id_ecdsa, credentials, secrets, password, passwd, token. Only md, markdown, txt, jsonl, ndjson, and llms files are read; binaries, media, archives, PDF/Office documents, lock/log files, and build artifacts are skipped, and files over 64 MB are reported and skipped. --include-credential-files is the explicit override, and it is bound to --redact – never a raw-secret door.

Ledgered and resumable

Every ingested file's SHA-256 is recorded at <store>/ingest_ledger.jsonl. Unchanged files are no-ops on re-runs; changed files replace their chunks. Long ingests can be stopped and resumed, and dry runs show the whole plan first.

ask your AI to ingest
Scan ~/Notes recursively into a research galaxy with `wm ingest --source ~/Notes --galaxy research --redact`, redacting credential-shaped spans. Dry-run first, then run it for real, and report the files ingested and skipped. Everything stays on this machine.

Beyond folders

  • ·Direct memories – memory.create for one memory, memory.batch_create for a batch, session.record for conversation turns, all via the wm meta-tool. Tag cross-store imports with project:<name> so their origin stays attributable.
  • ·Move galaxies – galaxy.export writes a galaxy as JSON; galaxy.import loads it into another store or machine.
  • ·Savings ledger – `wm ledger` reports what stays out of model context: bytes stored vs injected by continuity and recall, plus the local operation mix. Local-only; `--json` for machines, `--calibrate` sets a per-store bytes/token divisor.
  • ·Per-project stores – one store per project. Point the project's client config at its own directory and set WM_PROJECT=<name> so the handshake names the scope.

keep it healthy

Stable Gen 2 only. The Gen 3 preview has a separate CLI and store; these backup and update commands are not preview instructions.

  • wm statusHuman-facing health summary: store, counts, index, backup, and update state.
  • wm statsResource usage and brain-wave state; --week shows the last seven daily rollups.
  • wm reportWrites a sanitized local support bundle (report.json + README.txt). Read-only; nothing is transmitted.
  • wm backupCopies the full store (LMDB + indexes + all JSON state) into a timestamped directory with a SHA256SUMS manifest. Stop the server first; restore with wm restore --backup <dir>.
  • wm update checkChecks for a newer signed release – notify-only, no installation.

The store lives at ~/.local/share/whitemagic by default; --store <path> or a per-project client config points a server at another one. One store per project, and WM_PROJECT=<name> names the project in the MCP handshake, so an agent can confirm its scope before acting.

Uninstall: remove the wm binary and the store directory. That removes only those locations – backups, exports, replicas, and other project stores remain, and deletion is not secure erasure. Inventory the copies first.

Your disk, your rules.

The store lives under your home directory by default (under 1 MB after init; LMDB maps are sparse). No memory, prompt, or session content is transmitted off-device, and no usage telemetry is sent off-device by default. Local diagnostic telemetry may be recorded on-device for self-observation; the only sharing path is the optional install-funnel report, explicit opt-in and off by default (`wm telemetry enable --share` prints the exact payload first; reset-id rotates its random identifier). Release/update checks contact GitHub only when run, and work offline. Stores are not encrypted by default, and deleting a store directory does not remove backups, exports, replicas, or other project stores. Full detail: Terms & Privacy.