# plottypus vs mactop

Canonical: https://plottypus.com/vs/mactop

Last updated: 2026-09-24

> mactop 2.1.5 and plottypus 1.0.0 on an M5 Pro running macOS 27. CPU watts, exporters, fan control, process tools and key mappings.

**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](https://github.com/metaspartan/mactop/releases/tag/v2.1.5), [mactop README](https://github.com/metaspartan/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](https://github.com/metaspartan/mactop/blob/master/internal/app/ioreport.m)). 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](https://plottypus.com/blog/macos-27-cpu-power-0w).

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; `1`–`5` 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.
