Credentials are exported as MUSTER_CRED_<KEY> environment variables — one per entry in credentials.required[], uppercased. Credentials are never stored in muster.json or committed to git.
Each service can be configured with a credential mode in muster.json or via muster setup.
| Name | Description |
|---|---|
off | modeNo credentials loaded. |
save | modeStored in OS keychain (macOS Keychain / Linux secret-tool), prompted on first use. |
session | modeCached in memory for the session, prompted on first use. |
always | modePrompted every time. |
Enable credentials and list required keys per-service in muster.json:
{
"services": {
"api": {
"credentials": {
"enabled": true,
"mode": "save",
"required": ["DATABASE_URL", "API_KEY"]
}
}
}
}Running muster setup prompts for the credential mode interactively. For non-interactive use, pass the mode directly:
muster setup --creds api=sessionInside hook scripts, access credentials via their environment variables:
#!/usr/bin/env bash
set -euo pipefail
# Credentials are available as MUSTER_CRED_<KEY>
echo "Connecting to $MUSTER_CRED_DATABASE_URL"
curl -H "Authorization: Bearer $MUSTER_CRED_API_KEY" https://api.example.com/deploymuster.json or committed to git. Never echo or log credential values in your hook scripts.