Query your metrics in SQL
bewitch repl has tab completion, multi-line editing and
.export to CSV, Parquet or JSON. The all_* views include
archived Parquet data alongside the live database.
A charming system monitor
bewitch is a monitoring daemon and terminal UI for homelab servers, Raspberry Pis and VPSes. It stores CPU, memory, disk, network and hardware metrics in a local DuckDB database, so you can chart them, query them in SQL and alert on them.
$ curl -fsSL https://bewitch.dev/install.sh | sudo sh
SMART data for NVMe, SATA and ZFS pool disks, plus temperatures, ECC memory errors, RAPL power draw, and Intel, NVIDIA and AMD GPUs.
What it collects →Every sample is stored in DuckDB. The TUI charts any time range, old data can be archived
to Parquet, and bewitch repl runs SQL queries against all of it.
Threshold, predictive, variance and process rules, created in the TUI. Notifications go to email, Discord, Telegram, ntfy, Slack or a shell command, and again when the alert resolves.
Alerting →bewitch repl has tab completion, multi-line editing and
.export to CSV, Parquet or JSON. The all_* views include
archived Parquet data alongside the live database.
Chat and push services are configured with a Shoutrrr URL each, so there's no relay to run. Email goes through SMTP or the host's local mail system.
/metrics endpoint for Prometheus and Grafana, plus a JSON API.Designed for a few machines, not a fleet.
Each machine runs its own daemon and keeps its own data; there's no central server, cloud account or subscription. The TUI connects to any of them, locally or over TLS. The packaged daemon runs as an unprivileged, sandboxed systemd service, and DuckDB's memory use is capped at 512 MB by default.