Getting started
muster is a conformance harness for the agent-file stack. It validates each file an agent is built from against its spec, and it grades a live model against what those files declare. Static checks run offline and produce the same bytes every time. Behavioral checks talk to any OpenAI-compatible endpoint.
Prerequisites
Section titled “Prerequisites”- Node 22 or newer.
- For behavioral checks only: an OpenAI-compatible endpoint, such as local Ollama, NVIDIA NIM, or OpenAI.
Install
Section titled “Install”Install the published package and use the muster binary:
npm install -g @garrison-hq/mustermuster --helpOr work from a source checkout with pnpm:
git clone https://github.com/garrison-hq/mustercd musterpnpm installpnpm build # tsc (strict) + schema copy to dist/pnpm test # the full offline suite: unit, CTS, and adaptersFrom a checkout, run the CLI with node dist/cli/index.js … or pnpm dev …
instead of the global muster.
Every command shares two global flags, --mode <strict|permissive> (default
strict) and --json (machine output on stdout, logs on stderr), and the same
exit codes:
| Code | Meaning |
|---|---|
0 | conforming, or all cases passed |
1 | violations found, or at least one case failed |
2 | execution error: unreadable file, bad manifest, or endpoint down |
Your first checks
Section titled “Your first checks”The package ships an examples/ directory with one runnable example per layer.
Run these from the repository or installed-package root:
# Persona: validate one Soul.md and print a §25.1 report (offline)muster check examples/soul/Soul.md --json
# Persona: effective config after §7.5 resolution, in the CTS-1 comparison formmuster resolve examples/soul/Soul.md --output-format canonical-json
# Lint the other layers, all offlinemuster skills run examples/skills/manifest.yamlmuster sop run examples/sop/manifest.yamlmuster tools run examples/tools/manifest.jsonmuster memory run examples/memory/manifest.jsonmuster heartbeat run examples/heartbeat/manifest.jsonmuster a2a run examples/a2a/manifest.jsonmuster crosslayer run examples/crosslayer/manifest.yamlTo grade a live model, point a layer at an endpoint. The API key comes from
MUSTER_API_KEY (or OPENAI_API_KEY) in the environment, never a flag or file:
muster behave run examples/behave/manifest.yaml --base-url https://api.openai.com/v1 --model gpt-4oWhere to next
Section titled “Where to next”- The layers: every layer, what it checks, and its command and environment variables.
- Static conformance: what the static persona checks do, clause by clause.
- Behavioral conformance: grading a model against a soul’s axes.
- CLI reference: every command and flag.