Troubleshooting
Start with baba health: it names the part that's broken. logLevel: "debug"
(or BABA_LOG_LEVEL=debug) logs every reading, breach count and incident
decision.
Config
no config file found at "…", run 'baba setup' to create one
There's no config.json at the path baba reads (--config, else
$BABA_CONFIG_PATH, else /var/lib/baba/config.json), no config.default.json
next to it, and the environment doesn't provide a notifier. Run baba setup, or
pass --config with the right path.
A downloaded binary run as ./baba start still looks in /var/lib/baba, not in
the current directory: use ./baba start --config config.json.
invalid config
The message lists every problem with its key:
baba: invalid config:
• checks.cpu.usageThresholdPercent: Must be between 0 and 100Fix them in config.json, or rerun baba setup. A JSON syntax or type error (a
string where a number goes) is reported by the JSON parser instead. Unknown keys
are ignored, so a misspelled key keeps its default rather than failing: compare
with Configuration file.
invalid value for BABA_…
An environment variable meant as a number doesn't parse. The
*_CONSECUTIVE_BREACHES ones must be whole numbers.
Alerts
Nothing arrives
baba validate: if it fails, the error names the notifier and the HTTP status or network error.- Discord
HTTP 401or404: the webhook was deleted or the URL is truncated. Create a new one. - Telegram
HTTP 400withchat not found: wrongchatId, or the bot isn't in that chat.HTTP 401: wrongbotToken. - Still nothing on a real breach: with
logLevel: "debug", look forbreachlines. The alert only fires afterconsecutiveBreachesbreaches in a row, and a reading equal to the threshold isn't a breach.
See Incidents for the rules.
Telegram shows ** around values
Telegram messages are plain text; the stars are Discord's bold.
An alert failed and never came back
There's no retry. The incident records the notification with ✗
(baba get incident <id>), and the next reminder, after
reminderIntervalMinutes, is the next attempt.
Checks
Disk: no volumes found
None of checks.disk.volumes matches a mount point or device exactly as the
mount table lists it. Check with findmnt (Linux) or mount (macOS). In
Docker, the container only sees its own mounts: see
Disks in a container.
No temperature in the status line
No sensor was found. On Linux, check ls /sys/class/hwmon/*/name shows one of
the CPU sensors listed in Checks, and that /sys is
mounted in Docker. On macOS there's no CPU source; only NVIDIA GPUs report.
GPU: N/A
nvidia-smi isn't in the PATH, fails, or reports no memory figures. Run
nvidia-smi yourself. Non-NVIDIA GPUs aren't supported.
✗ system: cannot read memory (…), is --pid=host set?
/proc/meminfo (Linux) or sysctl/vm_stat (macOS) couldn't be read. In
Docker, run with --pid=host and --privileged.
Service
✗ incidents: not found at "…", has the service started at least once?
The history file is created by the first baba start. On a fresh install, start
the service; if it's running, check database.path points where the service
writes.
No sudo access, installing as a user service instead
sudo cp to /etc/systemd/system failed, so the unit went to
~/.config/systemd/user. User services stop when you log out; run
loginctl enable-linger "$USER", or rerun baba install from an account with
sudo.
no log file at /var/lib/baba/baba.log
Only the background service writes that file. In the foreground, logs go to the
terminal; in Docker, use docker logs.
moving the old SQLite incident database aside
The TypeScript baba's baba.db was found at database.path. It's renamed to
baba.db.sqlite.bak and the history starts fresh; see
Incidents.
Updates
could not reach GitHub releases
No network, or GitHub's API rate limit (60 requests an hour per IP without a token). Try again later, or download the release by hand.
download failed: HTTP 404
The latest release has no binary for this OS and architecture. Only Linux and macOS on x64 and arm64 are built.
This guide lives in the project repo: edit it there, and this page follows within a day.