Watt
A macOS menu bar app that shows live system power draw in watts and which apps are using it.
- Status
- Working personal utility
- Period
- Sep–Nov 2026
- Discipline
- Software
- Reference
- KL-S2



Overview
Watt is a menu bar utility for macOS 14 and later. It shows how many watts the whole machine is drawing right now, how much is coming in from the adapter against its rating, the battery state and time until full, and which apps account for the load. It is a Swift package with no third-party dependencies, and it runs as a menu bar agent with no Dock icon. AI coding agents wrote the Swift under my direction, and I use it on my own Mac.
The readings come directly from the System Management Controller through IOKit, without root. Watt reads five rails: system total, battery discharge, DC input, chip power and display backlight. The call takes an 80-byte parameter struct that has to match the kernel's C layout exactly, and Swift would lay the same fields out differently. So the struct is laid out by hand with explicit padding, and a precondition checks the size at startup.
Not every Mac exposes every sensor, so the sampler falls back between them. If the system total is missing on battery it uses the discharge rail. On AC it can derive the figure from adapter input minus charging power, and adapter input itself falls back to a registry value. Sampling runs in an actor off the main thread, and the slower work of walking the USB device tree runs on a longer interval.
The per-app breakdown groups helper processes under their parent app and shows process count, CPU percent and wakeups per second, sortable by power. These per-app watts are estimates from CPU and GPU activity, and the panel labels them that way. Watt also reads power assertions, using fixed descriptions of the public assertion types and not the app-supplied names, which can contain document titles. Bus power to USB accessories is reported as one collective figure.
The current build has a compact panel with a collapsible usage breakdown, in light and dark appearance. The November release builds each have a receipt with source hashes and verification screenshots, and I keep dated source archives from before larger changes. It has not been notarised or distributed.
Specifications
- About 1,990 lines of Swift across 13 source files, with no third-party dependencies.
- Reads five System Management Controller power keys without root: PSTR, PPBR, PDTR, PHPC and PDBR.
- The SMC parameter struct is asserted to be exactly 80 bytes to match the kernel layout.
- A verification capture shows 59.5 W system draw with 58.0 W input on a 60 W adapter.
- The same capture shows 757 of 757 process groups readable in a 1 second sample.
- Helper processes are grouped under their parent app, with CPU percent and wakeups per second for each group.
- 20 unit tests across three files cover the power model, process energy maths and power assertions.
- Built with Swift 6 tools as a Swift package, targeting macOS 14 and later.