Configuration

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.

muster.json

The configuration file lives at the root of your project. Here is a typical example:

json
{
  "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"
    }
  }
}

Supported stacks

NameDescription
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
Note
The stack determines which hook templates muster setup generates. Infrastructure services like redis, postgres, and nginx get specialized pull-only templates automatically.

Service configuration

NameDescription
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

Deploy order

Services deploy in the order specified by the deploy_order array. Infrastructure services (redis, postgres, etc.) are automatically sorted before app services during setup.

.env auto-loading

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.

Project structure

After running muster setup, your project will have:

    • muster.json
          • deploy.sh
          • health.sh
          • rollback.sh
          • logs.sh
          • cleanup.sh
        • hooks.manifest
        • hooks.manifest.sig
Tip
Only .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.