Binary Ranch Labs was a placeholder name for a public roof. It is now
Bunkhouse: open tools from Binary Ranch, built with the community.
Forge is canonical, GitHub remains the public mirror. The clone command
and the forge link in the README both point at the new home.
Signed-off-by: Christian Sass <csass@binaryranch.com>
The page rebuilt its whole header, bar and row list twice a second, so
numbers snapped, columns resized as digits changed, and rows swapped places
over a hundredth of a core.
- header values are tabular-width and tweened toward the newest sample
- machine-bar segments are keyed and reordered by flex order, so widths
animate instead of being recreated mid-transition
- rows are keyed DOM nodes updated in place, sorted on a 0.1-core grid with
the previous order as tiebreak, with hysteresis at the idle threshold
- tabs, banner and detail panes only re-render when their data changes
- poll every 700ms and drop repeat frames from the 2s sampler
bookmark.py puts a Vitals bookmark and a popup bookmarklet in the browser's
bookmark bar. It recomputes Chromium's bookmark checksum (MD5 over the
canonical node serialisation) and verifies it after writing, because a file
that fails that check leaves the browser showing an empty bar while the file
on disk still looks perfect. Refuses while the browser holds the profile,
keeps a timestamped backup, idempotent. install.sh runs it.
Co-developed-with: CLU
The quickstart still told people to clone sastian/vitals on the forge,
which stopped existing when the repo moved to binaryranch-labs. A broken
clone command in the first code block is the worst place to have one.
Co-developed-with: CLU <clu@binaryranch.com>
Credit is not a courtesy here, it is a factual claim about who decided
what. Christian supplied the question, the framing (the browser is the top
layer of the OS), and the field evidence; the code and its failures are
mine. AUTHORS.md states that split so a future reader does not have to
guess.
Co-developed-with: CLU <clu@binaryranch.com>
The first screenshot was captured on a real workstation: it carried a
machine name, a live call with a named participant, and a staging URL.
None of that belongs in a public repo.
--demo now loads demo/demo-snapshot.json and serves it through the same
API, so documentation screenshots are reproducible, reviewable, and free
of anyone's actual desktop. The canned snapshot is shaped to tell the
story: a leaked automation run at 6.10 cores with idle pages, and a video
call tab carrying 221% page work beside its idle siblings.
Process monitors stop at the browser boundary, so the thing that usually
pegs a machine is invisible: forty identical processes, no age, no tab
names, no idea which page is the offender.
Vitals resolves every process to a human identity (container, flatpak,
systemd unit, tree root, or script), then joins the OS view to the
browser's own DevTools counters so each tab carries its own page-work
number beside the cores its browser instance is burning. The gap between
those two numbers is the diagnosis: idle page, burning compositor.
- dependency-free sampler over /proc, 2s cadence, 5 min in-memory history
- minimal CDP client (WebSocket + JSON) with no third-party packages
- both unit systems side by side: percent of machine and fractional cores
- flags for leaked automation instances and live WebRTC calls
- user service with CPUQuota so the monitor can never be the problem
- identity tests that need no root, server, or browser
MIT licensed. Runs on Linux, reads /proc, asks for no privilege.