Cappuccino is a CLI Tool for monitor the system activity (include the CPU Active, GPU Active etc.)
It can shows live CPU (E/P Cluster and pre-core), GPU, ANE(Apple Neural Engine), RAM information with UI.
It reads data from macOS's built-in powermetrics and renders it with the termui
package
- CPU — E-core / P-core utilization and frequency, with an optional per-core breakdown.
- GPU — utilization and current frequency.
- ANE — estimated utilization and power draw.
- Memory — used/total RAM and swap.
- Power — live CPU / GPU power charts with rolling average, peak and a thermal-throttle indicator.
- Interactive TUI — a bottom hint bar, toggleable help overlay and an in-app REPL for changing settings on the fly.
- Lightweight — a single self-contained binary, no background services.
- macOS on Apple Silicon (M1 / M2 / M3 or newer).
- Root privileges.
powermetricsonly runs as the superuser, so Cappuccino must be started withsudo. - Go 1.27 or newer only if you build from source.
git clone https://github.com/starxsky/Cappuccino.git
cd Cappuccino
go build -o Cappuccino ./cmd/cappuccino
sudo ./Cappuccinogo install github.com/starxsky/Cappuccino@latest
sudo "$(go env GOPATH)/bin/Cappuccino"Tip: add an alias to your shell profile so you only ever type
sudo Cappuccino. Some hints in the app refer tocappuas a shorthand for that alias.
sudo Cappuccino [flags]Flags:
-a, --avg int Interval for averaged values (seconds) (default 30)
-c, --color int Choose display color (0-8) (default 2)
-h, --help help for Cappuccino
-i, --interval int Display interval and sampling interval for powermetrics (seconds) (default 1)
--max-count int Max show count to restart powermetrics (default 0 = unlimited)
--show-cores Show per-core usage
Examples:
sudo Cappuccino # default 1s sampling
sudo Cappuccino -i 2 -a 60 # sample every 2s, average over 60s
sudo Cappuccino --show-cores # include per-core gauges
sudo Cappuccino --color 5 # magenta theme| Key | Action |
|---|---|
q / Ctrl-C |
Quit |
h / ? |
Toggle the help overlay |
: |
Enter command mode (REPL) |
+ / - |
Increase / decrease the sampling interval |
c |
Cycle the bar color |
Esc |
Close the help overlay / cancel a command |
Press : to open the command prompt at the bottom of the screen, type a
command and press Enter. Esc cancels.
| Command | Description |
|---|---|
help |
Show the help overlay |
quit / exit |
Quit |
interval <seconds> |
Set the sampling/display interval (restarts powermetrics) |
avg <seconds> |
Set the averaging window |
color <0-8> |
Set the bar color |
cores <on|off> |
Toggle the per-core layout |
maxcount <n> |
Restart powermetrics every n samples (0 = off) |
clear |
Clear the current status message |
CPU/GPU max power and bandwidth tables are built in for:
M1, M1 Pro, M1 Max, M1 Ultra,
M2, M2 Pro, M2 Max, M2 Ultra,
M3, M3 Pro, M3 Max, M3 Ultra.
SoCs without a dedicated table fall back to conservative defaults, so the tool still works — only the percentage scales may be less precise.
Cappuccino spawns powermetrics in the bacground and catch its plist output to a temporary file :
powermetrics --samplers cpu_power,gpu_power,thermal -f plist -i <interval_ms> -o /tmp/cappuccino_powermetrics<timecode>
Each sample is a NUL-spearated plist document. Cappuccino parses the newset one and normalizes it into internal/metrics structs, and renders the result with tool termui. Mem statistics are read separately from vm_stat and sysctl.
Any Issues and pull requests are welcome, but please make sure you have executed below commands before you opening a PR :
gofmt -w .
go vet ./...
go build ./... Please keep changes focused and include a short description of what you changed and why.
- Inspired by asitop.
- Terminal UI powered by termui.
- CLI parsing by cobra.
- Plist decoding by howett.net/plist.
