systemd dashboard · Omarchy · Rust · ratatui
CYBER
WATCH
Your own services, one glance away. Broken ones float straight to the top.
An Omarchy bar widget counts the units that need you; click it for a TUI that starts, stops, restarts and edits them and tails their logs. It finds your services on its own — no list to maintain — and understands timers well enough not to cry wolf.
01 / Discovery
It finds
your services.
No hand-kept list. Cyberwatch reads the unit files in /etc/systemd/system and keeps the ones that are plausibly yours — then lets you patch the result.
EXECSTART UNDER $HOME
A .service whose binary lives under your home directory is yours. NetworkManager and sshd never clutter the list.
PAIRED TIMERS
Any .timer that triggers one of those services — via Unit= or the same basename — comes along automatically.
EXTRA & IGNORE
~/.config/cyberwatch/config.json adds units the heuristic misses (root-owned binaries in /usr/local/bin, say) or drops ones you don't care about.
02 / Needs attention
Only what's
actually wrong.
One rule drives both the bar count and the TUI's sort order — and it knows the difference between a broken daemon and a timer's service resting between runs.
- Failed — any service in
failedstate. - Should be running, isn't — an enabled daemon that isn't active.
- Timer down — a timer that isn't active.
- Last run went bad — a timer-triggered service whose last
Result=wasn't success. - Missing — a configured unit that no longer exists.
❯ cyberwatch --summary{"attention":0,"total":11} ❯ cyberwatch --list | jq '.[0]'{ "name": "argus.service", "kind": "service", "status_label": "running", "needs_attention": false }
03 / The TUI
Fix it
right there.
Actions run sudo systemctl and sudoedit in your real terminal — the TUI steps aside for the password prompt, then comes back and rescans. Editing uses sudoedit, so your editor never runs as root, followed by an automatic daemon-reload.
START · STOP · RESTART
Via sudo systemctl.
EDIT UNIT
sudoedit + daemon-reload.
LOGS
Recent journal output, no sudo needed.
FILTER · RESCAN · HELP
j/k to move, q to quit.
04 / Setup
Post
the watch.
It ships as an Omarchy plugin with a bundled binary. Without one for your architecture, the launcher builds this same checkout with cargo build --locked — it never fetches and executes a remote artifact.
git clone https://github.com/cybercore-tech/cyberwatch
cd cyberwatch && ./install.sh # builds + places bin/<arch>/cyberwatch
cyberwatch # TUI
cyberwatch --summary # one-line JSON for the bar
cyberwatch --list # every watched unit as JSON{
"extra_units": ["argus.service", "dockspace.service"],
"ignore": []
}
- Root-owned services run from
/usr/local/bin(as they should), so add them toextra_units.
05 / Theme matrix
Light
the board.
Every Cybercore palette from the shared schema, grouped by family — plus Cyberwatch's own signature mashups. Your pick follows you across Cybercore sites.