Repository navigation
SysMon 3.0.0
A compact system monitor for AMD-GPU Linux desktops, with an API an agent can drive without ever seeing a pixel.
v3.0.0 is not a rewrite. It is v2's engine held to the house standard until it passed — and then wired so it cannot quietly stop passing.
v2.2.2 → v3.0.0, honestly
| v2.2.2 | v3.0.0 | |
|---|---|---|
sysmon schema |
prose map; no status/ts; nothing strict |
carries the envelope; strict JSON schemas for the envelope, the stream line and probe's result; every verb's arguments, enums and exit codes published |
| enum lists in the schema | hand-written, free to drift | read from the code that enforces them — a theme can't exist in the docs and not in the binary |
ts |
float unix seconds | ISO-8601 with a UTC offset (2026-08-01T22:14:07+00:00); ts_epoch rides along for arithmetic |
| stream lines | anonymous JSON objects | every line carries event: "snapshot" |
| an unknown command | raw stderr, nothing parseable on stdout | the same envelope as any other error, with a fix |
ctl theme nosuchtheme |
exit 1 | exit 3 — the instance classifies its own failure and the code rides on the wire as exit |
| themes | ten rooms, all moods | eleven — a Greyscale a11y floor, colourless by assertion, WCAG AAA, auto-selected under desktop high contrast |
| motion | egui's linear default | 120 ms smoothstep, and instant when the desktop asks for reduced motion |
| conformance | believed | scripts/conformance.sh — 13 checks against a real binary, and a release gate |
Everything v2 emitted, v3 still emits. Every key and every exit code of 2.2.2 was diffed against 3.0.0 before this shipped; all changes are additive.
Highlights
- The standard is executable.
scripts/conformance.shruns every clause of the workspace agent-first CLI standard against a real binary — envelope, ISO-8601 timestamps, fix-bearing errors, exit codes 0/2/3/4 each provoked, isatty auto-switch proven both ways, stdout purity, stream self-identification, language law, native install. It prints13/13on a terminal and one envelope in a pipe, andrelease.shrefuses to publish without it. - A schema that cannot lie. A command printed by
sysmon schemaand repeated in the docs had returnednullsince v2.0 (.result.top_processes; the field is at.result.network.top_processes). Fixed — then made unrepeatable: a test harvests everyjqpath out of the live schema and out ofdocs/API.mdand runs each one against a real probe. - Greyscale. Ten rooms existed and every one was a mood. This is the room that still reads when colour can't be relied on.
- Two flakes killed at the root. The UI test failed ~1 run in 6 (a fixed-frame wait for a context menu, plus a live process ranking that re-sorted mid-interaction): 0 failures in 25 runs now. Three network tests were blaming sysmon for a rate limiter — they probed with 1 KB and depended on 20 MB, so a 429 read as "the collector saw 0 B/s". They now ask for a real megabyte, fall back to a second host, and skip honestly.
Removed, honestly
- Nothing was removed from the wire.
tschanged type (float → ISO-8601 string) — if you were doing arithmetic on it, readts_epoch, which carries the same instant. sysmon --versionnow says(v3), not(v2).- The old
run_steps(8)-style waits are gone from the context-menu path in the UI suite; if you copied that pattern, prefer waiting for the thing to exist.
Install
# Debian / Ubuntu / Mint
sudo apt install ./sysmon_3.0.0_amd64.deb
# Fedora / RHEL (built on Mint, rpm --test verified — reports welcome)
sudo dnf install ./sysmon-3.0.0-1.x86_64.rpm
# from source
sudo apt install build-essential curl git # apt
sudo dnf install gcc make curl git # dnf
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
git clone https://github.com/RamenFast/sysmon && cd sysmon
cargo build --release && sudo install -m755 target/release/sysmon /usr/local/bin/Double-clicking the package in a file manager works too.
Verify: sysmon --version → sysmon 3.0.0 (v3).
SHA256SUMS covers every asset on this release; sha256sum -c SHA256SUMS in the download directory checks them all at once.
Receipts
conformance 13/13 · cargo test --release green across three consecutive full runs (unit, contract, a11y, kittest UI, live accuracy, live network attribution) · scripts/e2e.sh green on a private Xvfb: 22 theme/page screenshots, pop-out drag-dock, single-instance forward, clean shutdown · old-vs-new structural diff over every documented verb · no Python and no GTK anywhere in the 455-package dependency tree or the packaging.
Built with Claude on Ben's machine. GPLv3.