Terminal-based Apple Silicon system monitor
Project description
astop
Terminal-based system monitor for Apple Silicon Macs
Like btop, but built for M-series chips.
Why astop?
Existing Apple Silicon monitors (asitop, macmon, mxtop) hardcode chip names and cluster layouts, causing crashes on newer chips. astop discovers your SoC topology at runtime via sysctl — no hardcoded chip tables, no breakage on M4/M5/future chips.
| Feature | astop | asitop | mxtop |
|---|---|---|---|
| Works on all M-series | Yes | Partial | No |
| Dynamic SoC discovery | Yes | No | No |
| GPU/ANE monitoring | Yes | Yes | Yes |
| Per-core CPU bars | Yes | No | No |
| Braille waveform graphs | Yes | No | No |
| No sudo required | Yes (degraded) | No | No |
Install
pip install astop
Requires Python 3.11+ and macOS (Apple Silicon).
Usage
astop # basic mode — CPU, memory, disk, network, processes
sudo astop # enhanced mode — adds GPU, ANE, power, thermals
astop --no-sudo # force basic mode even with sudo available
astop --refresh 2 # custom refresh interval (default: 1s)
Panels
| Panel | Basic Mode | Sudo Mode |
|---|---|---|
| CPU — per-core bars + braille graph | Yes | Yes |
| GPU — utilization, frequency, power | — | Yes |
| ANE — Neural Engine utilization | — | Yes |
| Memory — usage, active, wired, compressed | Yes | Yes |
| Network / Disk — I/O rates + graph | Yes | Yes |
| Battery — charge, watts, time remaining | Yes | Yes + power breakdown |
| Processes — sortable top-N table | Yes | Yes |
Keybindings
| Key | Action |
|---|---|
q |
Quit |
p |
Pause / Resume |
r |
Force refresh |
s |
Cycle process sort (CPU / Mem / PID / Name) |
v |
Reverse sort order |
How it works
astop uses hw.nperflevels and hw.perflevel{i}.* sysctl keys to dynamically discover CPU cluster topology at startup — no chip name lookup tables. GPU, ANE, and power data come from powermetrics (requires sudo). Everything else uses psutil.
Data collection runs in parallel via asyncio + thread executors, so the TUI never blocks.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file astop-0.1.1.tar.gz.
File metadata
- Download URL: astop-0.1.1.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99261e29e4a165235f8b291eb426602cc6e7d8e7b40f628c886e754488be7bfb
|
|
| MD5 |
e6b23f97501d431178ae735f57f4c0ad
|
|
| BLAKE2b-256 |
98cc947110f43a21d81149dd0252e80632e72d6785dbd7a2ff19f802cb8080c9
|
File details
Details for the file astop-0.1.1-py3-none-any.whl.
File metadata
- Download URL: astop-0.1.1-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a78e9d14a71ca3f4297ea4f85d7f7d8299dc134a59ee37257d7ef0c576177cc5
|
|
| MD5 |
d289aeaffe4e9922339a06bd97b4ea86
|
|
| BLAKE2b-256 |
2e527719cb0eae7753eae02f5821467d8e9dab6a401316c0dcb03224609a0b66
|