Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Getting started

Implementing with (or as) an AI agent? The agents implementation guide is the scenario-driven version of this page: pick a deployment shape (single agent, team server, multi-tenant engine, fleet), follow its steps, and verify with the checklist.

Install

Docker (recommended — nothing touches the host):

docker pull ghcr.io/sealcroft/undercroft:latest    # or: docker build -t undercroft .
alias undercroft='docker run --rm -v undercroft-data:/data ghcr.io/sealcroft/undercroft:latest'

The alias mounts only the palace volume and forwards no host environment variable, so under Docker mine needs its folder bind-mounted and UNDERCROFT_PASSPHRASE needs -e. A shell alias also never reaches a program that launches undercroft itself, which is why Claude Code gets the full docker run -i command below.

Prebuilt binaries (Linux x86_64/arm64, macOS Intel/Apple Silicon, Windows) are attached to every release, with SHA-256 checksums. Or native: cargo build --releasetarget/release/undercroft.

First palace

undercroft init                                   # master key + sealed 'default' vault
undercroft remember "We chose GraphQL for the mobile API" --wing backend --room decisions
undercroft mine ~/notes --wing personal           # documents
undercroft mine ~/.claude/projects --mode convos  # Claude Code sessions
undercroft search "why graphql"
undercroft wake-up                                # session-start context
undercroft verify                                 # HMAC + audit chain check

Under Docker the two mine lines need their folders mounted. Read-only is enough, and the image runs as uid 10001, which must be able to read them:

docker run --rm -v undercroft-data:/data -v ~/notes:/notes:ro \
  ghcr.io/sealcroft/undercroft:latest mine /notes --wing personal
docker run --rm -v undercroft-data:/data -v ~/.claude/projects:/convos:ro \
  ghcr.io/sealcroft/undercroft:latest mine /convos --mode convos

Palace location: $UNDERCROFT_HOME (default ~/.undercroft; /data in the image). Passphrase mode: export UNDERCROFT_PASSPHRASE before init and every command, and under Docker add -e UNDERCROFT_PASSPHRASE to every docker run, the alias included. A passphrase declared over an installation created without one is refused, and so is the reverse; back up kdf.salt as carefully as master.key, since the passphrase cannot re-derive the key without it.

Wire into Claude Code

claude mcp add undercroft -- undercroft serve-mcp

# ...or under Docker: stdio needs -i, and the alias above does not apply here
claude mcp add undercroft -- docker run -i --rm -v undercroft-data:/data \
  ghcr.io/sealcroft/undercroft:latest serve-mcp

# ...or recall only, with every write tool refused:
claude mcp add undercroft -- undercroft serve-mcp --read-only
undercroft hooks claude-code   # auto-save hook settings to paste

Continue with integrations, architecture, security model, and remote team server.