bewitch mascot

bewitch

A charming system monitor for Linux

Real-time TUI dashboard with historical charts, hardware monitoring, interactive SQL REPL, and alerting.

install
$ curl -sSL https://bewitch.dev/install.sh | sh

Server monitoring for people who aren't running fleets.

From Raspberry Pis to cobbled-together racks, hobbyists and developers run a diverse collection of servers for fun and sometimes profit.

bewitch is designed for people who want monitoring without the overhead of enterprise tools or cloud services.

Whether you're tracking a home media server, a personal website, or a cluster of machines in your basement, bewitch is a fun way to keep an eye on your hardware.

CPU Monitoring

Per-core usage tracking with aggregate metrics, historical charts, and automatic delta computation.

Memory + ECC

Real-time memory usage, available/free breakdown, ECC error tracking for server reliability.

Disk + SMART

Space usage, I/O rates, and SMART health per physical device. NVMe and SATA supported.

Network

Per-interface RX/TX throughput with bits/bytes toggle and historical bandwidth charts.

Hardware

Temperature sensors, GPU monitoring (Intel and NVIDIA), power consumption (RAPL), and ECC memory errors in one unified view with sub-tab navigation.

Process Tracking

All processes visible, top N enriched. Glob-pattern pinning for critical services. Sortable, searchable.

Multi-Channel Alerts

Threshold, predictive, and variance rules. Notify via email or shell command.

See it in action

bewitch dashboard view
Press 1–8 to switch views · </> change time range · Tab cycles hardware sections

Your metrics in SQL

Query your metrics directly with SQL. Interactive REPL with tab completion, multi-line editing, dot-commands, and data export to CSV, Parquet, or JSON.

bewitch repl
bewitch> SELECT d.value AS mount,
...> AVG(m.used_bytes * 100.0 / m.total_bytes) AS pct
...> FROM disk_metrics m JOIN dimension_values d
...> ON d.id = m.mount_id
...> WHERE m.ts > now() - INTERVAL '1 hour'
...> GROUP BY d.value;
mount | pct
-------+------
/ | 62.34
/home | 41.17
(2 rows)

Email and command alerts

Route alerts via email (local mail command or SMTP) or arbitrary shell commands. All config-driven, no code required.

bewitch.toml
[[alerts.email]]
use_mail_cmd = true
to = ["ops@example.com"]
[[alerts.commands]]
cmd = "/usr/local/bin/my-handler"

SSH-style trust on first use

Connect to remote daemons over TLS with auto-generated certificates and SSH-like fingerprint pinning. No CA infrastructure needed.

terminal
$ bewitch -addr myserver:9119
TLS fingerprint for myserver:9119:
sha256:a1b2c3d4e5f6...
Trust this server? [y/N]: y
Fingerprint saved to ~/.config/bewitch/known_hosts

Quick start

1. Install

$ curl -sSL https://bewitch.dev/install.sh | sh

2. Launch the TUI

$ bewitch