Native macOS · Menu bar · Swift + AppKit
A dog, a horse, a soot sprite, Totoro. It trots when the machine is calm and breaks into a sprint when the system is under load — a live, ambient read on CPU, memory, GPU, network, disk, fan, or battery, tucked into the status bar you already stare at.
Drag the system load. The animation speed is remapped live through the preset's min→max range — exactly how the app maps a 0–1 load fraction to a speed multiplier.
↑ real preset ranges from gifs/presets.json · self-throttles under Low Power / thermal / memory pressure
Unbounded rates (network / disk / swap) auto-scale to a btop-style adaptive ceiling. Every reader is unprivileged — the app only ever reads load, never adds to it.
The animation gives you the feel; an optional second menu-bar slot gives you the figure. Set --label value and it prints the active source’s live reading — CPU 47%, NET ↓3.4 ↑0.1 — refreshed on the same tick as the icon. Set --label <text> for a fixed tag (handy for telling two instances apart). It’s a real status item in the native menu-bar font — never text baked onto the tiny icon.
Its slot is a fixed width, sized for the widest reading it could ever show, with the digits right-aligned in monospaced figures. So the number changes and nothing moves — no creature twitching sideways twice a second. Sits left of the icon by default; Position puts it on the right if you’d rather have it next to the clock.
And it doubles as a second Keep Awake indicator: while the Mac is being held awake the label wears the same tint as the track line under the icon — one mark in two places.
…and the dropdown is a live dashboard: a 60-second sparkline, per-source
readouts, and load averages — Other Sources switches what drives it.
Off by default; switchable live from the Settings ▸ Menu Bar Label submenu — mode and side, both remembered — or at launch via --label / MENUBAR_LOAD_RUNNER_LABEL.




…plus Dog (Black), Horse (Black), Chihiro white/black, Totoro white/black, and a wide Totoro group (white/black) — 12 in all. Drop in any .gif to make your own.
While the Mac is being held awake, the app says so twice, in the same color, in the same instant: a 2pt track line rides the bottom edge of the icon, and the adjacent label wears that same tint instead of the menu bar's own text color. Two marks, one state — so whichever one your eye lands on, you know.
The line is a sibling layer over the artwork, never painted into it. Toggling it re-rasterizes nothing; it spans the item's full width, sits flush on the bottom edge, and snaps rather than slides when the slot resizes. The creature keeps running underneath, untouched.
Both marks key on whether caffeinate is actually running — not on the menu checkmark. So the moment a low battery or a thermal condition suspends it, the line and the label's color drop together, while the toggle stays on. An indicator that showed your intent instead of the state would be lying at exactly the moment it mattered.
Every tint is a fixed hue in two tones, one per menu-bar appearance — never your system accent, which could collide with the artwork or vanish into the bar. Flip the bar below to see both tones (and why each preset ships white and black).
The label's tint is repainted from the same call that redraws the line, so a suspend recolors it at once rather than up to 2s later on the next sample tick. Colored status-item text is invisible to VoiceOver, so the reading is also set as a plain accessibility label.
Flip Keep Awake in the menu and the app spawns caffeinate -di -w <pid> — both display and idle system sleep are held off while long work runs (an idle-only lock lets modern Macs sleep once the screen naps). The -w <pid> binds it to the app, so it's reaped the instant the app quits or crashes; no orphaned sleep lock.
What's saved is the moment it ends, not the length — so a restart at 2am resumes the remainder, never a fresh four hours, and a window that already elapsed while the Mac was down doesn't come back at all. A window with no end isn't restored: it has no stopping condition, and a stale flag holding your Mac awake after every reboot is the worse failure.
Settings ▸ Battery Threshold sets the release point live — 10, 15, 20, 30%, a custom percent, or Never — and remembers it across launches. A change lands on a window that's already running, not at the next one. Whole percents only: 0.20 reads as 0.2% or 20% depending on who's asking, so it's refused rather than guessed.
--keep-awake 4h (or 30m, 1h30m, on) arms it at launch; --battery-threshold 10 moves the cliff. A unit is required — a bare number reads as minutes or hours, and guessing wrong is a 60× error. A bad value clamps and still launches: a typo in your login item shouldn't cost you the app.
Display and idle system sleep are held (-di), unprivileged, OS-reaped. A timed window releases on its own; Low Power Mode and memory pressure are deliberately not disengage triggers.
# install — clone, compile, symlink onto PATH (no Xcode project, no Homebrew) curl -fsSL https://raw.githubusercontent.com/binlecode/menubar-load-runner/main/install.sh | bash # then run from anywhere — default preset, or pick a companion + load source menubar-load-runner totoro --load-source gpu # start at login — per-user LaunchAgent, no root, no .app bundle ./scripts/install-login-item.sh chihiro # clean uninstall — removes only what the installer created ~/.local/share/menubar-load-runner/uninstall.sh
The whole app is one .swift file compiled by a zsh launcher with swiftc -O. No Xcode project, no SwiftPM package, no build system to learn.
A CADisplayLink advances frames against real elapsed time and the screen's refresh rate — smooth at any speed, and it pauses itself entirely when the item is occluded.
Frames are swapped as a layer's CGImage contents — no per-frame redraw or layout — so a visible, animating icon costs about ~0.5% of one CPU core in ~20 MB, and drops to 0% CPU when hidden. It also caps its own speed under Low Power / thermal / memory pressure, so it never adds to the load it measures.
Keyword, menu title, and speed range all live in presets.json (width comes from the GIF's own aspect ratio). Add a preset by editing data — zero Swift changes.
On launch it reads your checkout's origin release tags — the only network call the app ever makes. A newer tag shows an Update available menu item; applying it is a deliberate two-click action (git pull --ff-only), never automatic — then a Restart button puts you on the new version, keeping your settings and the preset you picked.
Install with a single curl … | bash — it clones, compiles, and symlinks onto your PATH; uninstall.sh reverses exactly what it created. Open source (MIT), no signing or Homebrew.