Muster uses a single configuration file at the root of your project — either muster.json (preferred) or deploy.json. Running muster setup generates this file for you.
The configuration file lives at the root of your project. Here is a typical example:
{
"project": "my-app",
"version": "1",
"deploy_order": ["redis", "api", "worker"],
"services": {
"api": {
"name": "API Server",
"stack": "k8s",
"k8s": {
"deployment": "myapp-api",
"namespace": "production"
},
"health": {
"enabled": true,
"type": "http",
"endpoint": "/health",
"port": 8080,
"timeout": 30
},
"credentials": {
"enabled": true,
"mode": "session",
"required": ["DATABASE_URL", "API_KEY"]
},
"deploy_timeout": 300
},
"redis": {
"name": "Redis",
"stack": "compose",
"skip_deploy": false
},
"worker": {
"name": "Background Worker",
"stack": "compose"
}
}
}| Name | Description |
|---|---|
k8s | stackKubernetes — kubectl apply, rollout, image tagging |
compose | stackDocker Compose — docker compose up, pull |
docker | stackDocker — docker build, docker run |
bare | stackBare metal — generic shell commands, systemd |
dev | stackDevelopment — PID-managed background processes for local dev |
just | stackJustfile recipe-based — just deploy, just health, just rollback |
muster setup generates. Infrastructure services like redis, postgres, and nginx get specialized pull-only templates automatically.| Name | Description |
|---|---|
name | stringDisplay name shown in the TUI |
stack | stringDeploy stack: k8s, compose, docker, bare, dev |
skip_deploy | booleanSkip this service during deploy Default: false |
deploy_timeout | numberTimeout in seconds for the deploy hook Default: 120 |
health | objectHealth check config: enabled, type (http/tcp/command), endpoint, port, timeout |
credentials | objectCredential config: enabled, mode (off/save/session/always), required keys |
remote | objectRemote deploy config: enabled, host, user, port, project_dir |
git_pull | objectAuto git pull before deploy: enabled, remote, branch |
k8s | objectKubernetes config: deployment name, namespace |
Services deploy in the order specified by the deploy_order array. Infrastructure services (redis, postgres, etc.) are automatically sorted before app services during setup.
If a .env file exists in the project root, muster automatically loads it before deploy, rollback, and dev operations. Variables are exported without overriding existing environment variables.
After running muster setup, your project will have:
.muster/logs/ and .muster/pids/ are added to your .gitignore. Commit both muster.json and .muster/hooks/ to version control so your team shares the same deployment configuration and hook scripts.