Skip to content

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.

  • Node 22 or newer.
  • For behavioral checks only: an OpenAI-compatible endpoint, such as local Ollama, NVIDIA NIM, or OpenAI.

Install the published package and use the muster binary:

Terminal window
npm install -g @garrison-hq/muster
muster --help

Or work from a source checkout with pnpm:

Terminal window
git clone https://github.com/garrison-hq/muster
cd muster
pnpm install
pnpm build # tsc (strict) + schema copy to dist/
pnpm test # the full offline suite: unit, CTS, and adapters

From 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:

CodeMeaning
0conforming, or all cases passed
1violations found, or at least one case failed
2execution error: unreadable file, bad manifest, or endpoint down

The package ships an examples/ directory with one runnable example per layer. Run these from the repository or installed-package root:

Terminal window
# 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 form
muster resolve examples/soul/Soul.md --output-format canonical-json
# Lint the other layers, all offline
muster skills run examples/skills/manifest.yaml
muster sop run examples/sop/manifest.yaml
muster tools run examples/tools/manifest.json
muster memory run examples/memory/manifest.json
muster heartbeat run examples/heartbeat/manifest.json
muster a2a run examples/a2a/manifest.json
muster crosslayer run examples/crosslayer/manifest.yaml

To 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:

Terminal window
muster behave run examples/behave/manifest.yaml --base-url https://api.openai.com/v1 --model gpt-4o