compare

plottypus vs mactop

verdict

Use mactop if you want the longest feature list we know of in an Apple Silicon TUI: a Prometheus exporter, headless output in JSON, YAML, XML, CSV or TOON, fan control (with sudo), DRAM and ANE bandwidth, Thunderbolt devices, a menu-bar mode, about 20 layouts and 20 languages. It is MIT-licensed and moves fast; its 2.1.5 changelog already works around several macOS 27 counter changes. Use plottypus if you want CPU watts on macOS 27, per-process watts, and a process table with signals, renice and pid-reuse protection. In our side-by-side run, mactop 2.1.5 reported cpu_power 0 in 20 of 20 samples while plottypus read 15 to 48 W.

At a glance#

Checked 2026-09-24 on a MacBook Pro Mac17,8 (M5 Pro), macOS 27.0. mactop 2.1.5 is the release binary from GitHub (checksum verified), run from a scratch folder with its config pointed at a temporary directory.

plottypus 1.0.0 mactop 2.1.5
CPU watts on macOS 27 Yes. Live from SMC power rails on the M5 Pro; other chips get the last IOReport batch, marked with its age 0 in 20 of 20 samples on our M5 Pro
GPU MHz / °C Yes / yes Yes / yes
Per-cluster clocks Super, Performance and Efficiency clusters with MHz Yes, E, P and S clusters with MHz
Per-process energy / GPU Watts per process; GPU share in the details card Per-process GPU, marked experimental
Needs sudo No No for reading; yes for --fan-control
Self-cost ~1.5% of one core at 500 ms, ~1.0% at 1 s (our measurement) Not measured
Works over ssh / in tmux Yes Yes
Process actions TERM, KILL, INT, STOP/CONT, any signal, renice, background QoS Kill (F9) with a confirmation
JSON output --json, --json-stream --headless, in JSON, YAML, XML, CSV or TOON; Prometheus with -p <port>
Themes / translucent windows 10 built-in plus one built from your terminal’s palette; glass keeps cell backgrounds clear Named and custom hex colours, background colours, auto light/dark
Platforms macOS on Apple Silicon only macOS 12.3 or later on Apple Silicon
Price / licence Free download, proprietary EULA; a paid Pro tier is planned, not on sale Free, MIT

Sources: mactop 2.1.5 release and changelog, mactop README, our own run below.

CPU watts on macOS 27#

We ran three tools at once, one sample a second for 20 seconds, on an M5 Pro under a mixed load:

sh
mactop --headless --count 20 -i 1000
macmon pipe -s 20 -i 1000
plottypus --json-stream --count 20 -i 1000
2026-09-24, M5 Pro, macOS 27.0 mactop 2.1.5 macmon 0.8.2 plottypus 1.0.0
CPU watts 0 in all 20 0.0 in all 20 15.27 to 48.44 W
System watts 19.0 to 95.7 W 19.1 to 103.7 W 19.1 to 103.7 W

All three agree on system watts, which come from the SMC PSTR key. The CPU figure is where they part. mactop computes it from an IOReport sample delta over its interval (source). On macOS 27 the CPU energy counter publishes in batches, 2 to 108 seconds apart in our captures, so a one-second delta is 0 almost every time. The long version, with the raw captures: why macOS 27 shows 0.00 W CPU power.

plottypus reads the SMC’s CPU power rails on the M5 Pro. On other chips it divides the IOReport change by the driver’s own timestamps, holds the value until the next batch, marks it with its age, and reports null in JSON ( on screen) once it is more than 10 s old.

Features mactop has that plottypus does not#

The list is long, and it is fair to put it first:

  • a Prometheus endpoint, and headless output in five formats;
  • fan control (sudo mactop --fan-control); plottypus only reads fans;
  • DRAM and ANE bandwidth in GB/s, TFLOPS estimates, Thunderbolt and RDMA details;
  • a native menu-bar mode (--menubar);
  • about 20 layouts on l (its README counts 19 in one place and 20 in another), and a UI in 20 languages.

If any of those is why you run mactop, keep running it.

Processes#

mactop’s process list follows htop’s format, with a filter (/) and kill on F9. plottypus’s table has more to act on: per-process watts (the kernel’s per-task energy estimate), GPU share, footprint memory, disk I/O and wakeups, and TERM, KILL, INT, STOP/CONT, renice and background QoS from the details card. A kill is refused if the pid was reused after you selected it. Without sudo, macOS will not describe other users’ processes, and plottypus shows there instead of 0.

Switching from mactop#

Most mactop keys work the same or close to it in plottypus’s default profile:

mactop plottypus
q quit same
/ filter, Esc to clear same
g / G top, bottom same
j / k, arrows same
F9 kill x (TERM) or K (KILL), each after a y/n prompt; F9 in the htop profile
Enter sort by column click a header, or < >, r to reverse
l cycle layouts v switches Work and Glance; 15 are presets; e expands a panel
c cycle colours T cycles themes
+ or = slower, - faster the other way round: ] + = faster, [ - slower
h or ? help ?

If F9 is muscle memory, set keymap = "htop" in ~/.config/plottypus/config.toml, or run PLOTTYPUS_KEYS=htop plottypus for one session.

For scripts, mactop’s soc_metrics.cpu_power, gpu_power and system_power map to plottypus’s top-level cpu_power, gpu_power and sys_power. Not-measured values come back as null, not 0.