Mole Widget is a lightweight macOS desktop system monitor widget: live CPU, memory, disk, network, battery and process metrics right on your desktop. Native Swift + SwiftUI in the terminal aesthetic of the mo status CLI (mole) — a borderless window living at desktop level, above the wallpaper and below application windows.
- Header — chip, RAM, macOS version, uptime and a composite health score (0–100)
- CPU — total usage, top-3 busiest cores, load average, SoC temperature, usage trend sparkline
- Memory — used/free, total, cached, available
- Disk — root volume usage, used/free space, read/write speed
- Power — charge level, battery health, status, cycle count, temperature
- Network — download/upload sparklines with rates, active interface and local IP
- Processes — top-3 by CPU with memory footprint
- Click any section title to open Activity Monitor
- Visible on all Spaces, ignored by Mission Control and ⌘Tab, stays below regular windows
- Drag it anywhere with the mouse; position is remembered across launches
- Resizable: drag the right edge to adjust the width (490–880 pt), saved across launches
- 🔒 Clickable lock icon on the widget (plus a "Lock position" menu item) pins both position and size
- Hide the widget with the eye icon on it; bring it back via Show on desktop in the menu bar. The hidden state is remembered across launches
- Usage History — up to 12 hours of CPU and RAM history with a 1h/4h/12h range switch and a scrubber; pick any moment to see which processes were heaviest then. Open it from the menu bar
- Menu bar metrics — show live CPU, memory, and CPU temperature in the menu bar (each toggleable). Values turn yellow past 60% and red past 85%, and stay live even while the widget is hidden
- Settings in the menu bar: background opacity, visible sections, refresh rate (1/2/5 s), font size and style (monospaced or system)
- Launch at login toggle; no Dock icon
- macOS 14+
- Swift 6 toolchain — Command Line Tools are enough (
xcode-select --install), full Xcode is not required
Download the latest MoleWidget.dmg from the Releases page, open it, drag Mole Widget into Applications, and launch it from there.
The app is signed and notarized — Gatekeeper will not block it.
brew install --cask TadelUnso/tap/mole-widgetThe cask downloads the signed, notarized DMG from GitHub Releases and installs
Mole Widget.app into /Applications. Launch it from Spotlight, Launchpad,
or Applications; quit any time from the menu bar icon → Quit Mole Widget.
make app
open "dist/Mole Widget.app" # or move it to /ApplicationsIf you installed the DMG into Applications, the widget keeps itself up to date via Sparkle: it checks in the background and, when a new signed release is available, offers to download and install it in place. You can also check on demand from the menu bar icon → Check for Updates….
If you installed via Homebrew, the widget still updates itself through
Sparkle — the same way as the DMG install. The cask declares auto_updates true,
so Homebrew defers to Sparkle and there is no separate brew upgrade step.
- Toggle off Launch at login in the menu bar (if you enabled it) and quit the widget
- Remove the package:
brew uninstall --cask mole-widget- Optional cleanup — remove the tap and the saved settings:
brew untap TadelUnso/tap
defaults delete com.sbezbabnykh.mole-widgetUninstalled while the widget was still running? The orphaned process keeps the widget on screen — quit it with:
pkill -f "Mole Widget"
Found a bug or have an idea? Open an issue — bug reports and feature requests are both welcome. The widget's menu bar icon also has a Report an Issue shortcut.
make run # run a dev build
make test # run the test suite (80 tests)Important: run tests only via
make test. On a machine without full Xcode a bareswift testsilently runs zero tests and exits 0 — the Makefile passes the toolchain flags required for Swift Testing from Command Line Tools.
Sources/MoleWidgetCore/ — library
CPU|Memory|Disk|Power/ — one module per domain: pure math + collector
Store/MetricsStore.swift — @Observable store, 2/30/60 s timers
Views/ — SwiftUI, terminal theme
Sources/MoleWidget/ — app shell: desktop-level window, MenuBarExtra
All computation is pure functions over raw snapshots (unit-tested); collectors are thin wrappers around mach APIs / IOKit with smoke tests.
