macOS and Linux

brew install indefiniteloop/tap/phantasm
# or
curl -fsSL https://raw.githubusercontent.com/indefiniteloop/phantasm-dist/main/scripts/install.sh | sh
phantasm --version
phm --version

Use Homebrew if it is already part of your workflow. The shell installer remains the fallback path for Unix systems without Brew.

New to Homebrew?

Start by checking whether Homebrew is already installed.

brew --version

If that says brew: command not found, install Homebrew first:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Then reopen your terminal if prompted, run brew --version again, and install Phantasm with brew install indefiniteloop/tap/phantasm.

Windows

Use the published Windows release asset or run scripts/install.ps1 from the public distribution repo.

Turn it on for a project

cd /path/to/project
phantasm bootstrap
# or
phantasm init

This creates the local .phantasm/ runtime for that project. init is an alias for bootstrap.

Explore a bootstrapped runtime

phantasm explorer

The Explorer is a read-only terminal UI for runtime health, records, review items, and live conflict groups. Run it from the bootstrapped project root. Use 1/2/3 to switch tabs, j/k to move, /query to search, c to clear, r to reload, and q to quit.

Add agent guidance and plugin support

phantasm bootstrap --agent-guidance
phantasm bootstrap --agent-guidance --no-agent-plugin
phantasm agents --add
phantasm agents --add --agent-file AGENTS.md --agent-file CLAUDE.md

bootstrap --agent-guidance adds or refreshes a managed Phantasm instruction block and installs the bundled phantasm-memory plugin into supported local harness plugin directories. Use --no-agent-plugin when you only want the guidance block. After updating Phantasm, rerun phantasm agents --add to replace the managed block in place; you do not need to remove it first. Phantasm asks for confirmation before it writes the file, backs up existing files before changing them, and preserves text outside the managed markers.

phantasm agents-plugin
phantasm agents-plugin --target codex
phantasm agents-plugin --target hermes
phantasm agents-plugin --target hermes --hermes-home /srv/hermes
phantasm agents-plugin --path ~/.codex/plugins

Use agents-plugin when you only want to install or refresh the bundled plugin. Agents can follow the complete Phantasm installation guide.

Use Phantasm as Hermes Agent memory

phantasm agents-plugin --target hermes
hermes memory setup

Select phantasm in the Hermes memory picker. The provider configuration hook writes $HERMES_HOME/phantasm.json and runs phantasm bootstrap "$HERMES_HOME", creating isolated state for the active profile under $HERMES_HOME/.phantasm/; Hermes built-in MEMORY.md and USER.md stay active. Direct YAML provider selection does not invoke this hook.

phantasm agents-plugin --target hermes --hermes-home /srv/hermes
HERMES_HOME=/srv/hermes hermes memory setup

# Or let the installer read the same environment override:
HERMES_HOME=/srv/hermes phantasm agents-plugin --target hermes
HERMES_HOME=/srv/hermes hermes memory setup

The Hermes installer writes only the provider bundle beneath <hermes-home>/plugins/memory/phantasm/ and the compatibility symlink <hermes-home>/plugins/phantasm → memory/phantasm. It never adds guidance or edits AGENTS.md, CLAUDE.md, or project files.

If setup was skipped, failed, or did not create $HERMES_HOME/.phantasm/state/store.sqlite, run phantasm bootstrap "$HERMES_HOME" for that profile home before starting Hermes. Do not run bare phantasm bootstrap from an unrelated directory expecting it to initialize Hermes.

Hermes receives up to 8,000 characters of recalled context. Context compression remains independent: configure a custom context.engine normally, because Phantasm contributes no compression prompt and never changes compressor input or output. Use hermes memory status to confirm the active provider.

Set up and verify a Hermes profile

The default Hermes profile uses ~/.hermes. Named profiles are separate homes at ~/.hermes/profiles/<name>/, so install the provider and run memory setup for every profile.

hermes profile create researcher --clone
phantasm agents-plugin --target hermes \
  --hermes-home ~/.hermes/profiles/researcher
hermes -p researcher memory setup
hermes -p researcher memory status

For a fully custom root, set the same HERMES_HOME for the installer and Hermes: HERMES_HOME=/srv/hermes-research phantasm agents-plugin --target hermes, then run HERMES_HOME=/srv/hermes-research hermes memory setup.

To prove Hermes used Phantasm, run hermes -p researcher chat and ask: “Use phantasm_remember to store ‘Hermes researcher profile verification: phantasm memory is bound.’ with subject key verification.hermes.researcher; then call phantasm_recall for ‘Hermes researcher profile verification’ and show the recalled text and record ID.” Both tool results plus hermes -p researcher memory status showing phantasm confirm the binding.

Inspect the generated config files

After bootstrap, review .phantasm/phantasm.toml and .phantasm/clients.toml using the configuration reference. It documents every current key, default, and limitation in the shipped runtime.

Inspect the full command surface

phantasm --help
phm --help
phantasm agents --help
phantasm help bootstrap
phantasm help handle-request

phm is the shorthand alias for the same CLI. The top-level help lists commands. Command-specific help shows the available options for each workflow. Agents and wrappers can also call describe for machine-readable operation schemas and examples.

phantasm handle-request '{"operation":"describe","params":{"target":"all"}}'
phantasm handle-request '{"operation":"describe","params":{"target":"*"}}'
phantasm handle-request '{"operation":"describe","params":{"target":"ingest"}}'
printf '%s' '{"operation":"describe","params":{"target":"ingest"}}' | phantasm handle-request --stdin
phantasm handle-request --file request.json

handle-request input must be valid UTF-8. JSON strings preserve printable Unicode and accept standard \uXXXX escapes.

Every response includes notices. After a binary update, the first successful request from each client profile in a bootstrapped project includes a structured release_update notice; later calls suppress it until the installed version changes again.

v0.2.6 adds the bundled Hermes Agent memory provider, with bounded recall and compression-neutral lifecycle integration. The v0.2.5 automatic repair for older v1 stores missing quality metadata columns remains available. The current CLI surface also includes the read-only terminal Explorer, local dashboard, init, and agent plugin installer, while the runtime discovery surface includes quality metadata, stale_review, duplicate_review, and Git-reviewable memory_export/memory_import workflows.

Important limitation

The current binary does not yet expose a first-class end-user MCP serve command. Today the public setup flow is bootstrap, and the advanced runtime flow is handle-request.