[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80542":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":13,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":12,"lastSyncTime":27,"discoverSource":28},80542,"diskwatch","matthart1983\u002Fdiskwatch","matthart1983","Single-host, read-only disk diagnostics TUI. Sibling to netwatch and syswatch.",null,"Rust",67,2,1,0,5,10,6,1.43,"MIT License",false,"main",true,[],"2026-06-12 02:04:03","\u003Cp align=\"center\">\n  \u003Ch1 align=\"center\">DiskWatch\u003C\u002Fh1>\n  \u003Cp align=\"center\">\n    \u003Cstrong>Single-host disk diagnostics in your terminal. 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.\u003C\u002Fstrong>\n  \u003C\u002Fp>\n  \u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%20%7C%20Linux-blue\" alt=\"Platform\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green\" alt=\"License\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-v0.1-yellow\" alt=\"Status\">\n  \u003C\u002Fp>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cem>Sibling to \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmatthart1983\u002Fnetwatch\">NetWatch\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmatthart1983\u002Fsyswatch\">SysWatch\u003C\u002Fa>. Same chrome. Same palette. Eight tabs covering every disk on one box.\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"demo.gif\" alt=\"DiskWatch — Overview, Devices, Volumes, FS, IO, SMART, Hot Files, Insights\" width=\"800\">\n\u003C\u002Fp>\n\n---\n\n## What it shows\n\n| # | Tab | Replaces |\n|---|---|---|\n| 1 | Overview | one screen across capacity, IO, health, hot files |\n| 2 | Devices | `lsblk`, `nvme list`, `diskutil list`, `hdparm -I` |\n| 3 | Volumes | `lvs` + `vgs`, `mdadm --detail`, `diskutil apfs list` |\n| 4 | FS | `df -h`, `df -i`, `mount`, `findmnt` |\n| 5 | IO | `iostat -x 1`, biolatency-style averages |\n| 6 | SMART | `smartctl -A`, `nvme smart-log` |\n| 7 | Hot Files | `fanotify`\u002F`fseventsd` watcher (paths, not bytes) |\n| 8 | Insights | plain-English anomaly summaries |\n\nWhere `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.\n\n## Install\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmatthart1983\u002Fdiskwatch.git && cd diskwatch\ncargo build --release\n.\u002Ftarget\u002Frelease\u002Fdiskwatch\n```\n\nOr from crates.io:\n\n```bash\ncargo install diskwatch\n```\n\n**Prerequisites:** Rust 1.75+. No system dependencies on Linux. macOS calls the standard `ioreg`, `diskutil`, and `system_profiler` binaries — all preinstalled. Optional: `smartmontools` (`brew install smartmontools` \u002F `apt install smartmontools`) for full SMART attribute tables — without it, the SMART tab falls back to the basic verified\u002Ffailing flag from `diskutil`.\n\n## Keys\n\n| Key | Action |\n|---|---|\n| `1`–`8` | Switch tabs |\n| `↑` \u002F `↓` \u002F `j` \u002F `k` | Move selection (Devices, FS) |\n| `p` | Pause \u002F resume sampling |\n| `q` \u002F `Esc` | Quit |\n| `--diag` | Print collected state and exit (no TUI) |\n\n## Tabs in detail\n\n**[1] Overview** — 5 KPI tiles (capacity, IO, p99 latency, health, insights), per-device summary, aggregate IO sparkline, top insights, segmented capacity bar.\n\n**[2] Devices** — block-device table with model, firmware, serial, used %, SMART status. Detail panel for the selected device.\n\n**[3] Volumes** — APFS containers (macOS) with nested volumes, role, mount, FileVault. mdraid arrays (Linux) with members, slot state `[UUUU]`, resync\u002Frecovery progress.\n\n**[4] FS** — mounted filesystems with inline usage bars, threshold colors, system\u002Fuser\u002Fremovable classification.\n\n**[5] IO** — per-device read \u002F write throughput, 48s sparkline, p50 + p99 latency (read and write) over a 60s rolling window.\n\n**[6] SMART** — full NVMe \u002F ATA attribute tables when `smartctl` is on PATH; degraded banner with install instructions when not. Always shows the basic verified\u002Ffailing flag.\n\n**[7] Hot Files** — paths by event rate via FSEvents (macOS) \u002F inotify (Linux). Honest footer: this tab can't show bytes\u002Fsec or process attribution without root (`fs_usage`) \u002F Endpoint Security entitlement \u002F eBPF biosnoop.\n\n**[8] Insights** — anomaly cards over the collected state: capacity warnings, SMART failures, NVMe wear, drive temperature, p99 latency outliers, IO-dominant devices, hot-file runaway, removable drives.\n\n## What's real, what's deferred\n\n| Metric | macOS | Linux |\n|---|---|---|\n| Device model \u002F serial \u002F firmware | ✅ `system_profiler` + IOKit | ✅ `\u002Fsys\u002Fblock\u002F*\u002Fdevice\u002F{model,serial,firmware_rev}` |\n| Per-device used bytes | ✅ via APFS container map | ✅ summed from `sysinfo` mounts |\n| Read\u002Fwrite byte rates (split) | ✅ IOKit `Statistics` | ✅ `\u002Fproc\u002Fdiskstats` cols 5\u002F9 |\n| Avg per-op latency | ✅ `Total Time \u002F Operations` | ✅ `\u002Fproc\u002Fdiskstats` cols 6\u002F10 |\n| p50 \u002F p99 latency | ✅ tick-averaged over 60s | ✅ tick-averaged over 60s |\n| True per-op p99 (histogram) | ❌ needs IOReport entitlement | ❌ needs eBPF biolatency (CAP_BPF) |\n| SMART attributes | ✅ `smartctl` if installed | ✅ `smartctl` if installed |\n| Volumes — APFS | ✅ `diskutil apfs list` | n\u002Fa |\n| Volumes — mdraid | n\u002Fa | ✅ `\u002Fproc\u002Fmdstat` |\n| Volumes — ZFS, LVM | ⏳ deferred | ⏳ deferred |\n| Hot files (paths) | ✅ FSEvents | ✅ inotify |\n| Hot files — bytes \u002F pid | ❌ needs root `fs_usage` \u002F entitlement | ❌ needs eBPF biosnoop |\n\n## Design\n\nInherits the *Watch family chrome — `#0c1418` background, terminal-green accent, JetBrains Mono, 130×36 character grid with responsive reflow ≥ 110×30. The same character-grid mockups that drive NetWatch and SysWatch drive DiskWatch.\n\n## Anti-goals\n\n- **Not multi-host.** Use NetWatch Cloud if you need a fleet view.\n- **Not a daemon.** No long-running collector, no persisted DB.\n- **Not a deduper \u002F cleaner.** We surface what's eating disk; we don't delete anything. Mutation is a different tool.\n- **Not a backup product.** Snapshots are observed, not authored.\n- **Not a benchmark.** We measure what's happening, not what's possible.\n\n## License\n\nMIT.\n","DiskWatch 是一个用于单主机磁盘诊断的终端用户界面工具。它提供八个标签页，涵盖了从设备概览到 SMART 健康监测等全面的磁盘信息，能够替代如 iostat、smartctl 等一系列命令行工具的功能。基于 Rust 语言开发，保证了高性能与安全性。适用于需要快速定位磁盘问题或进行常规维护检查的场景，特别是在面对持续闪烁的磁盘活动指示灯时，成为管理员的第一选择。通过简洁直观的操作界面，用户可以轻松获取关于磁盘容量趋势、I\u002FO 吞吐量、延迟情况以及当前活跃文件等方面的数据，并以易于理解的方式呈现异常分析结果。","2026-06-11 04:01:08","CREATED_QUERY"]