Monitoring
Services can declare [[monitors]] that hamctl surfaces as live widgets. hamctl owns
the log location through log_root in hamctl.toml (the {log_root} token, like
config_root/{root}); {date} expands to today’s UTC date for daily-rotated logs.
Set log_root to where the daemon writes its log (on Pi-Star, /var/log/pi-star).
Activity (Last Heard)
The Activity page (its own nav entry) merges every service’s lastheard monitors
into one table — newest first, auto-refreshing — with columns Time, Callsign, Target,
Mode, Duration, BER, and an RF/Net badge. The mmdvm parser reads MMDVMHost-style logs
and covers all modes (DMR / YSF / P25 / NXDN / M17 / D-Star), local RF and network.
[[monitors]]
id = "activity"
label = "Last Heard"
type = "lastheard"
path = "{log_root}/MMDVM-{date}.log" # {log_root}, {date}, {root}, {arch}
parser = "mmdvm"
limit = 25
Reads are size-bounded and the path comes only from the trusted manifest.
Status card
A compact card on the service page, built from config values (no extra files):
[[monitors]]
id = "modem"
label = "Modem / station"
type = "status"
[[monitors.fields]]
label = "RX frequency"
config = "main" # a [[config]] id on this service
section = "Info" # its UI section name
key = "RXFrequency"
suffix = " Hz"
password-typed fields are never shown on a status card.
Currently mmdvmhost carries both monitors — its log is the unified all-mode activity
source. Per-gateway monitors are a future, incremental addition.
Host dashboard
The dashboard also reports host metrics — CPU, memory, load, uptime, disks, and SoC temperature — and the running state of each installed service.