diskwatch
Single-host disk diagnostics in your terminal.
DiskWatch is the terminal you open when the disk light won’t stop blinking — before you reach for iostat, iotop, smartctl, lsblk, df, du, and a panic. Where lsblk shows you which disks exist, DiskWatch shows you what’s happening on them: capacity trending, IO throughput, p99 latency, SMART health, and the files being written right now — and tells you why in plain English when something’s anomalous.
Eight tabs, cross-platform on macOS and Linux. Read-only by design — it surfaces what’s eating disk, it doesn’t delete anything. No daemon, no persisted DB.
cargo install diskwatch
Install
brew install matthart1983/tap/diskwatchcargo install diskwatchgit clone https://github.com/matthart1983/diskwatch.git && cd diskwatch && cargo build --releaseRust 1.75+ only if building from source. No system deps on Linux; macOS uses preinstalled ioreg / diskutil / system_profiler.
Install smartmontools (brew install smartmontools / apt install smartmontools) for full SMART attribute tables. Without it, the SMART tab falls back to the basic verified/failing flag from diskutil.
Tabs in detail
Switch with 1–8.
Keys
| Key | Action |
|---|---|
| 1–8 | Switch tabs |
| ↑ / ↓ / j / k | Move selection (Devices, FS) |
| p | Pause / resume sampling |
| q / Esc | Quit |
| --diag | Print collected state and exit (no TUI) |
What’s real, what’s deferred
DiskWatch is explicit about what each platform can and can’t measure without elevated access.
| Metric | macOS | Linux |
|---|---|---|
| Device model / serial / firmware | ✓ system_profiler + IOKit | ✓ /sys/block/*/device |
| Per-device used bytes | ✓ via APFS container map | ✓ summed from sysinfo mounts |
| Read/write byte rates (split) | ✓ IOKit Statistics | ✓ /proc/diskstats |
| p50 / p99 latency | ✓ tick-averaged over 60s | ✓ tick-averaged over 60s |
| True per-op p99 (histogram) | — needs IOReport entitlement | — needs eBPF biolatency |
| SMART attributes | ✓ smartctl if installed | ✓ smartctl if installed |
| Hot files (paths) | ✓ FSEvents | ✓ inotify |
| Hot files (bytes / pid) | — needs root fs_usage | — needs eBPF biosnoop |
Anti-goals
Not multi-host — use NetWatch Cloud if you need a fleet view. Not a daemon — no long-running collector, no persisted DB. Not a deduper / cleaner — it surfaces what’s eating disk, it doesn’t delete anything; mutation is a different tool. Not a backup product, and not a benchmark — it measures what’s happening, not what’s possible.