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.

◆ AUTO-DISCOVERY◆ TIMER-AWARE◆ SUDOEDIT◆ MIT

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.

◆ YOURS, NOT THE DISTRO'S

EXECSTART UNDER $HOME

A .service whose binary lives under your home directory is yours. NetworkManager and sshd never clutter the list.

◆ TIMERS FOLLOW

PAIRED TIMERS

Any .timer that triggers one of those services — via Unit= or the same basename — comes along automatically.

◆ YOUR OVERRIDES

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 failed state.
  • 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 --summaryBAR FEED
❯ 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.

s / x / r

START · STOP · RESTART

Via sudo systemctl.

e

EDIT UNIT

sudoedit + daemon-reload.

l

LOGS

Recent journal output, no sudo needed.

/ · R · ?

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.

BUILD THE BUNDLED BINARY
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
~/.config/cyberwatch/config.json
{
  "extra_units": ["argus.service", "dockspace.service"],
  "ignore": []
}
  • Root-owned services run from /usr/local/bin (as they should), so add them to extra_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.

NOW RUNNING · …
…
dev@cybercoretech.net