Dashboard
🔎
/
Capacity 71.2 TB / 96.0 TB
At Risk 2 disks
Health
Disks: 18 healthy
Disks: 2 warning
ZFS pools: 2 OK
SnapRAID: parity stale (3d)
ARR Awareness: API unreachable
Highest risk signal
CRC errors rising
Disk WDC_8TB_WD80EFAX bay 07 (SATA CRC)
Protection freshness
SnapRAID sync: 3 days
Policy: warning after 2 days • critical after 7 days
Last scrub
ZFS: 9 days
Policy: warn after 14 days • critical after 30 days
Capacity
Days until full (trend)
~46 days
Based on 30d growth: 0.54 TB/day
Media-aware telemetry highlights which libraries are driving growth (Movies/TV/Music). Open Integrations → Media Server for more.
Jobs
| Type | State | Source | Destination | Progress |
|---|---|---|---|---|
| Drain | verifying | backend-snap-jbod-02 | sg-zfs-raiz-01 | |
| SnapRAID | queued | snapraid-set-a | parity | — |
| ZFS Scrub | completed | zpool-media-02 | — | 2h 14m |
Alerts
| Severity | Message | Action |
|---|---|---|
| critical | Disk ST12000NM0008 SMART: pending sectors detected | |
| warning | SnapRAID sync age 3 days (policy warn at 2) | |
| warning | ARR awareness degraded: Sonarr API unreachable |
Storage Groups
| Name | Type | Lifecycle | Health | Used | Free | Actions |
|---|---|---|---|---|---|---|
| sg-zfs-raiz-01 Primary media pool (RAIDZ2) |
ZFS RAIDZ | preferred-write | healthy | 41.2 TB | 18.8 TB | |
| sg-snap-jbod-02 Legacy loose disks w/ parity |
SnapRAID JBOD | draining | attention | 22.0 TB | 6.0 TB | |
| sg-zfs-mirror-ssd Landing cache / staging |
ZFS mirror | active | healthy | 8.0 TB | 0.0 TB | |
| sg-retired-01 Old array (offline) |
Single-disk pools | retired | unknown | 0.0 TB | — |
Lifecycle model: active → preferred-write → draining → read-only → retired. Hoardarr maintains stable paths and regenerates mergerfs config on state change.
Disk Inventory
| Bay | Label | Model | WWN/Serial | Role | Group | Health | Temp | POH | Actions |
|---|---|---|---|---|---|---|---|---|---|
| 07 | movies-07 | WDC WD80EFAX | wwn-0x50014ee2b3a1 | SnapRAID data | sg-snap-jbod-02 | CRC rising | 41°C | 28,140h | |
| 12 | tv-12 | Seagate ST12000NM0008 | wwn-0x5000c500d91f | ZFS member | sg-zfs-raiz-01 | pending sectors | 39°C | 34,901h | |
| — | (unused) | HGST HUH721010 | wwn-0x5000cca25d22 | spare | unassigned | healthy | 33°C | 8,120h |
Used disks require multi-step confirmations for destructive actions (type group name + enter a code). Unused disks can be assigned with a single confirmation.
Jobs
| ID | Type | State | Verification | Source | Destination | Progress | Actions |
|---|---|---|---|---|---|---|---|
| job-1842 | Drain | verifying | Accurate (BLAKE3) | backend-snap-jbod-02 | sg-zfs-raiz-01 | ||
| job-1843 | SnapRAID | queued | N/A | snapraid-set-a | parity | — | |
| job-1839 | ZFS Scrub | completed | checksummed | zpool-media-02 | — | 2h 14m |
Resume requires re-running preflight checks (capacity, health, parity freshness, active ARR writes) before copy continues.
Alerts
| Time | Severity | Source | Message | Status | Action |
|---|---|---|---|---|---|
| 2026-03-03 10:12 | critical | Disk health | SMART pending sectors detected on ST12000NM0008 | active | |
| 2026-03-03 08:41 | warning | SnapRAID | Parity freshness: last sync 3 days ago (policy warn at 2) | active | |
| 2026-03-02 23:09 | warning | ARR awareness | Sonarr API unreachable; falling back to filesystem activity detection | acknowledged | |
| 2026-03-02 19:12 | info | Topology | Disk moved: bay mapping changed for wwn-0x50014ee2b3a1 | cleared |
Lifecycle: dedupe → active → acknowledge/suppress → cleared. All actions are audit logged.
Visual Topology
Rackmount 12-bay • hoardbox-01
Click a bay for quick actions (SMART, notes, lifecycle).
10 OK
1 warn
1 bad
Overlay & Filters
Live mode
Selected
Click a bay to see details.
Build Mode lets you model chassis/shelves and plan drains/retirements. Live Mode reflects discovered hardware and must never misrepresent protection guarantees.
Archive Intake
Detected external devices
1
Mounted read-only outside namespace
Current device
/dev/sdb1
Filesystem: exFAT • 3.8 TB
Inventory scan
Preview ready
No data moved until execution
| Metric | Value | Risk / Notes | Action |
|---|---|---|---|
| Total files | 1,284,990 | Large inventory; expect long verify in Paranoid mode | |
| Total bytes | 3.2 TB | Destination must have headroom + policy thresholds | |
| Top extensions | .jpg .mp4 .mov .pdf | Case sensitivity collision check: 12 potential conflicts | |
| Filesystem | exFAT | Read-only mount enforced; no namespace exposure |
Intake pipeline: preflight → lock source → copy (resumable) → verify → manifest → report → lifecycle transition (retired intake complete).
ARR Integration
| Service | Endpoint | Status | Last check |
|---|---|---|---|
| Sonarr | http://sonarr:8989 | unreachable | 2m |
| Radarr | http://radarr:7878 | ok | 2m |
| Lidarr | http://lidarr:8686 | ok | 2m |
| Prowlarr | http://prowlarr:9696 | ok | 2m |
Coordination behavior: drains pause if active imports/moves intersect source/destination paths (override requires explicit acknowledgement).
Media Server (Read-only)
Movies
4,020
4.1 TB
TV
1,120
22.0 TB
Music
102,305
10.0 TB
Attribution confidence: medium (libraries span multiple backends via unified namespace).
Policies
Verification defaults
Fast (non-retire)
Retirement drains: Accurate required
Scrub schedule
Every 14 days
Warn at 14 • Critical at 30
SnapRAID freshness
Warn 2d / Crit 7d
Sync + scrub tracked separately
Guardrails: block retirement drains if destination health degraded, parity missing (SnapRAID), or verification disabled.
Security
API binding
Local-only
127.0.0.1:8787
Roles
admin / read-only
MVP role split
UI/API not intended for direct internet exposure. Use reverse proxy + TLS + IP allowlist.
Audit log
| Time | Actor | Action | Target | Result | Notes |
|---|---|---|---|---|---|
| 2026-03-03 09:55 | admin | drain_resume | job-1842 | ok | Preflight: warnings acknowledged |
| 2026-03-03 09:12 | system | alert_raise | disk/ST12000NM0008 | active | SMART pending sectors |
| 2026-03-02 22:44 | admin | backend_set_readonly | backend-snap-jbod-02 | ok | Drain prep phase 2 |