Skip to main content

Make targets

make help prints this list from the Makefile itself, so it cannot drift. This page adds the part a one-line description cannot carry: when you would reach for each one, and what it will not do for you.

Host targets need HOST=:

make up HOST=h1-nvidia

Omitting it prints the available hosts rather than guessing.

Tests

None of these need a host, a GPU, or a network.

TargetWhat it proves
make testEverything below, in order. This is what CI runs.
make validateEvery model YAML matches the schema, aliases do not collide, active models fit the VRAM budget, and each pi extension advertises only aliases a host actually serves.
make validator-testThe validator rejects known-bad configuration. Without this, a validator that returned success unconditionally would look healthy.
make redaction-testReal secret shapes fed through the .stacklog writer do not survive.
make render-testEvery host's templates render, and the rendered compose file still binds engines to 127.0.0.1.
make template-testhosts/*-template still instantiates into a host the validator accepts, and has not drifted from the host it was cut from.
make classify-testEvery hardware probe fixture produces the expected verdict.
make plugin-testThe plugin and marketplace manifests are valid, every skill declares a name, and no skill still carries a build-time path placeholder.
make harvest-testThe sanitizer strips invisible and bidi codepoints, and the task store stops harvest and exec overwriting each other's fields.
make exec-testThe forge drives real tmux windows, and the ledger reports an unknown duration rather than inventing one.
make reap-testCleanup reclaims finished worktrees and branches, and refuses to touch unmerged commits, a dirty worktree, or anything outside ~/.lmstack/.
make pi-config-testThe pi sync copies extensions, merges rather than overwrites, and round-trips.
make lintyamllint, shellcheck, ansible-lint at the production profile, playbook syntax, and a scan for secrets committed by accident.

Run make test before you push. It takes seconds and catches the class of mistake that otherwise surfaces forty minutes into a bring-up.

Plugin

TargetNotes
make plugin-devStarts Claude Code with this working tree loaded as the plugin, so an edit to a skill takes effect on the next session with nothing to install.

This is for working on lmstack. To use it, install the published plugin instead — see Install. There is no build step and nothing to template: skills resolve their own location at runtime through ${CLAUDE_PLUGIN_ROOT}.

Control host

TargetNotes
make pi-installMerges the lmstack providers into ~/.pi/agent, preserving packages and settings you already have.
make pi-dumpCaptures changes you made in ~/.pi/agent back into pi-config/, restricted to the entries lmstack owns.

pi-dump will not pull your private packages into the repo. It only looks at the three entries lmstack installed.

Host lifecycle

TargetNotes
make depsInstalls the Ansible collections the playbooks need. Once per control host.
make bootstrap HOST=Docker, GPU runtime, firewall. Does not install the NVIDIA driver — guessing at a kernel/driver pairing breaks machines.
make up HOST=Renders templates, pulls images, starts the stack, and waits on the health gate. Runs validate first.
make verify HOST=Endpoint conformance: the aliases are served, auth is enforced, and tool calls come back as tool_calls rather than prose.
make site HOST=bootstrap + up + verify in one run.
make check HOST=Dry-runs the whole thing with --check --diff. Safe on a live host.

up restarts LiteLLM when the rendered config changes, because a bind-mounted config.yaml does not change the service definition and compose would otherwise leave the container alone with a stale routing table.

The health gate allows 40 minutes for vLLM on a first run — that is weight download and load, not a hang. Do not disable it to get past a timeout; it is the only thing standing between you and a stack that looks up but serves nothing.

Observability

TargetNotes
make stacklogPretty-prints the local change log. See .stacklog.

Documentation

TargetNotes
make docsRuns the Docusaurus dev server on localhost:3000 with hot reload.
make docs-buildBuilds the static site and fails on any broken internal link.

docs-build is what the Pages workflow runs. onBrokenLinks is set to throw, so a renamed page that something still points at fails the build rather than shipping a 404.