Environment Variables
Every setting in config.json can be overridden with an environment variable.
Values are applied before Zod validation, so type coercion and defaults still apply.
| Variable | Type | Default | Example | Description |
|---|---|---|---|---|
BABA_LOG_LEVEL | string | info | debug | Log verbosity. One of: trace, debug, info, warn, error. |
BABA_MACHINE_NAME | string | (system hostname) | nas-01 | Display name for this machine, prepended to every alert message. |
BABA_INTERVAL_SECONDS | number | 60 | 30 | Seconds between monitor check cycles. |
BABA_REMINDER_INTERVAL_MINUTES | number | 30 | 60 | Minutes before re-alerting for an ongoing incident. |
BABA_DATABASE_PATH | string | /var/lib/baba/baba.db | /data/baba.db | Path to the SQLite incident database. |
BABA_CPU_ENABLED | boolean | true | — | Enable CPU usage monitoring. |
BABA_CPU_THRESHOLD | number | 90 | 80 | CPU usage % that triggers an alert. |
BABA_CPU_CONSECUTIVE_BREACHES | number | 3 | — | Consecutive high readings before opening a CPU incident. |
BABA_LOAD_ENABLED | boolean | true | — | Enable system load-average monitoring. |
BABA_LOAD_THRESHOLD | number | 8 | 4 | 1-minute load average that triggers an alert. Rule of thumb: number of CPU cores. |
BABA_LOAD_CONSECUTIVE_BREACHES | number | 3 | — | Consecutive high readings before opening a load incident. |
BABA_MEMORY_ENABLED | boolean | true | — | Enable memory usage monitoring. |
BABA_MEMORY_THRESHOLD | number | 90 | 85 | Memory usage % that triggers an alert. |
BABA_MEMORY_CONSECUTIVE_BREACHES | number | 3 | — | Consecutive high readings before opening a memory incident. |
BABA_DISK_ENABLED | boolean | true | — | Enable disk usage monitoring. |
BABA_DISK_THRESHOLD | number | 90 | 85 | Disk usage % that triggers an alert. |
BABA_DISK_VOLUMES | csv | / | /,/data | Comma-separated mount points to monitor. |
BABA_TEMP_ENABLED | boolean | false | — | Enable temperature monitoring (CPU + all GPUs). Off by default; most values are null on macOS. |
BABA_TEMP_CPU_THRESHOLD | number | 85 | 80 | CPU temperature (°C) that triggers an alert. |
BABA_TEMP_GPU_THRESHOLD | number | 85 | 80 | GPU temperature (°C) that triggers an alert. |
BABA_TEMP_CONSECUTIVE_BREACHES | number | 3 | — | Consecutive high readings before opening a temperature incident. |
BABA_GPU_ENABLED | boolean | false | — | Enable GPU utilization monitoring. Off by default; metrics unavailable on macOS. |
BABA_GPU_THRESHOLD | number | 90 | 85 | GPU utilization % that triggers an alert. |
BABA_GPU_CONSECUTIVE_BREACHES | number | 3 | — | Consecutive high readings before opening a GPU incident. |
BABA_UPDATES_NOTIFY_ENABLED | boolean | true | — | Send an alert via your configured notifiers when a newer release is available. |
Notifiers
Configure notifiers with individual environment variables — no JSON required. Each notifier type is independent; set whichever you need.
Discord
| Variable | Description | Example |
|---|---|---|
BABA_NOTIFIERS_DISCORD_WEBHOOK_URL | Webhook URL. When set, replaces any Discord notifier from config.json. | https://discord.com/api/webhooks/<id>/<token> |
BABA_NOTIFIERS_DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/<id>/<token>Telegram — both variables must be set together
| Variable | Description | Example |
|---|---|---|
BABA_NOTIFIERS_TELEGRAM_BOT_TOKEN | Token from @BotFather on Telegram. | 123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
BABA_NOTIFIERS_TELEGRAM_CHAT_ID | Target chat, group ID (prefixed with -), or @channelname. | -1001234567890 |
BABA_NOTIFIERS_TELEGRAM_BOT_TOKEN=123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
BABA_NOTIFIERS_TELEGRAM_CHAT_ID=-1001234567890Both notifiers active at the same time:
BABA_NOTIFIERS_DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/<id>/<token>"
BABA_NOTIFIERS_TELEGRAM_BOT_TOKEN="123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
BABA_NOTIFIERS_TELEGRAM_CHAT_ID="-1001234567890"Env var notifiers override any notifier of the same type from config.json while leaving other types in place. If only one of the Telegram pair is set, both are ignored with a warning.
Types
| Type | Parsing |
|---|---|
string | Passed through as-is |
number | Parsed with Number() |
boolean | "true" or "1" → true; anything else → false |
csv | Split on ,, trimmed, empty strings removed |
json | Parsed with JSON.parse() — must be valid JSON |
This guide lives in the project repo: edit it there, and this page follows within a day.