Docs

Install, wire up, read the memory.

The minimum path to a working Munin setup, the commands you'll actually use day-to-day, and how to plug it into Claude Code and Codex.

Install

Munin is a single local Rust binary. Build from source.

cargo install --path . --force
munin init
munin resume --format prompt

Put munin.exe first on PATH. On Windows, a common layout is %USERPROFILE%\.local\bin before the Cargo bin directory.

Verify

munin --version
munin gain
munin resume --format prompt

If the resume brief returns <startup_memory_brief>, you are wired up. If it returns <memory_packet>, the proof gate hasn't cut over yet — run the promotion check below.

Hook setup

Claude Code and Codex each have their own hook surface. Run the matching initialiser once per home:

munin init              # local project hook
munin init --codex      # Codex hook wiring
munin init -g           # global hook (writes into your home config)
munin init -g --codex   # global Codex hook

The read surface

Everything Munin knows is inspectable. Same output for the agent and the human.

Session briefs

munin resume --format prompt
munin pack --preset handoff --format prompt

Memory OS projections

munin memory-os overview --scope user
munin memory-os profile --scope user
munin memory-os friction --scope user
munin memory-os promotion
munin memory-os brief --scope user --format prompt

Project kernel

munin memory-os snapshot --project .
munin memory-os kernel --project .
munin memory-os actions --project .
munin memory-os trust --scope user

Strategy import

For strategy recommend to produce grounded nudges, Munin needs a strategy source to compile into its kernel.

# bootstrap from a template
munin strategy setup --scope sitesorted --template

# or import an existing strategy doc
munin strategy setup --scope sitesorted --import ./strategy/ops.md

# or delegate to the Claude strategic-planning skill
munin strategy setup --scope sitesorted --bootstrap-claude

Once imported:

munin strategy status --scope sitesorted
munin strategy recommend --scope sitesorted

Command compression

Prefix any shell leaf command with munin. If a dedicated filter exists, output compresses. Otherwise it passes through unchanged. Safe to use anywhere.

munin vitest run
munin cargo test
munin tsc
munin next build
munin git diff
munin gh pr view 123

Chain the same way:

munin git add src/foo.ts && munin git commit -m "fix foo"

Proof gate

Resume and handoff only stay on the memory brief while the latest replay/eval against dev-public / proposed-kernel is verified. If proof drops, Munin auto-falls-back to the packet path.

munin memory-os promotion --format text

# establish proof
munin replay-eval run \
  --root tests/fixtures/replay_eval \
  --split dev-public \
  --system proposed-kernel \
  --format json

Rollback

Every cutover is reversible via env flag. Useful for A/B comparison with the deterministic packet path.

MUNIN_MEMORYOS_READ_MODEL_V1=0
MUNIN_MEMORYOS_RESUME_V1=0
MUNIN_MEMORYOS_HANDOFF_V1=0
MUNIN_MEMORYOS_STRICT_PROMOTION_V1=0

Where data lives

All state is local. No cloud. No telemetry pipeline. The telemetry salt file is 0600 and device-local. Session history, journal events, and projections live under your home directory.