aboutsummaryrefslogtreecommitdiff
path: root/docs/homelab-inventory
diff options
context:
space:
mode:
Diffstat (limited to 'docs/homelab-inventory')
-rw-r--r--docs/homelab-inventory/2026-01-05-truenas-hardware-specs.org229
-rw-r--r--docs/homelab-inventory/mybitch-laptop.org238
-rw-r--r--docs/homelab-inventory/ratio-desktop.org175
-rw-r--r--docs/homelab-inventory/truenas-server.org114
-rw-r--r--docs/homelab-inventory/velox-laptop.org158
5 files changed, 914 insertions, 0 deletions
diff --git a/docs/homelab-inventory/2026-01-05-truenas-hardware-specs.org b/docs/homelab-inventory/2026-01-05-truenas-hardware-specs.org
new file mode 100644
index 0000000..42d33ad
--- /dev/null
+++ b/docs/homelab-inventory/2026-01-05-truenas-hardware-specs.org
@@ -0,0 +1,229 @@
+#+TITLE: TrueNAS Server Hardware Specifications
+#+AUTHOR: Auto-generated via SSH
+#+DATE: 2026-01-05
+
+* Package Management Note
+
+**IMPORTANT:** Package management tools (apt) are disabled on TrueNAS appliances. Attempting to install packages with apt or methods other than the TrueNAS web interface can result in a nonfunctional system.
+
+All software installation and updates must be done through the TrueNAS web interface.
+
+* System Information
+
+** Hostname: truenas
+** IP Address: 192.168.86.5 (static)
+** Network Interface: eno1
+** Kernel: Linux 6.12.33-production+truenas
+** Build Date: Wed Dec 17 21:17:21 UTC 2025
+** Architecture: x86_64 GNU/Linux
+
+* CPU Specifications
+
+** Model: Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz
+** Architecture: x86_64 (Coffee Lake S)
+** Cores: 8 physical cores
+** Threads: 16 (2 threads per core)
+** Base Clock: 3.60 GHz
+** Max Turbo: 5.00 GHz
+** Min Clock: 800 MHz
+
+** Cache:
+- L1d cache: 256 KiB (8 instances)
+- L1i cache: 256 KiB (8 instances)
+- L2 cache: 2 MiB (8 instances)
+- L3 cache: 16 MiB (1 instance)
+
+** Features:
+- Virtualization: VT-x
+- CPU family: 6
+- Model: 158
+- Stepping: 13
+
+* Memory Specifications
+
+** Total RAM: 64 GiB (62 GiB usable)
+** Swap: 0 B (no swap configured)
+** Current Usage: ~3.0 GiB used, 59 GiB free
+
+* Storage Controllers
+
+** SATA Controllers:
+1. Intel Corporation Cannon Lake PCH SATA AHCI Controller (rev 10)
+2. ASMedia Technology Inc. ASM1166 Serial ATA Controller (rev 02)
+
+** NVMe Controllers:
+1. Sandisk Corp WD PC SN810 / Black SN850 NVMe SSD (rev 01)
+
+* Block Devices
+
+** Hard Drives:
+- sda: 10.9 TB (ZFS member)
+- sdb: 10.9 TB (ZFS member)
+- sdc: 10.9 TB (ZFS member)
+- sdd: 10.9 TB (ZFS member)
+- sdg: 18.2 TB (ZFS member)
+- sdh: 18.2 TB (ZFS member)
+- sdi: 18.2 TB (ZFS member)
+- sdj: 18.2 TB (ZFS member)
+
+** System Drives:
+- sde: 1.9 TB (Boot pool, ZFS member)
+ - sde1: 1M partition
+ - sde2: 512M VFAT partition
+ - sde3: 1.9T ZFS partition
+- sdf: 1.9 TB (ZFS member)
+
+** NVMe:
+- nvme0n1: 1.8 TB
+
+** Total Raw Capacity:
+- 4× 10.9 TB = 43.6 TB
+- 4× 18.2 TB = 72.8 TB
+- 2× 1.9 TB = 3.8 TB
+- 1× 1.8 TB NVMe = 1.8 TB
+- **Total: ~122 TB raw storage**
+
+* Network Interfaces
+
+** eno1 (Primary - Active):
+- Type: Ethernet controller - Intel Corporation Ethernet Connection (7) I219-V (rev 10)
+- MAC: 70:85:c2:db:9d:94
+- IP: 192.168.86.5/21
+- Subnet broadcast: 192.168.87.255
+- State: UP
+- MTU: 1500
+- Alternative name: enp0s31f6
+
+** enp2s0 (Secondary - Down):
+- Type: Ethernet controller - Intel Corporation I211 Gigabit Network Connection (rev 03)
+- MAC: 70:85:c2:db:9d:94
+- State: DOWN (NO-CARRIER)
+
+** Wireless:
+- Intel Corporation Dual Band Wireless-AC 3168NGW [Stone Peak] (rev 10)
+- Status: Not configured
+
+** Docker Bridge:
+- docker0: 172.16.0.1/24
+- State: DOWN (NO-CARRIER)
+
+* Motherboard/Chipset
+
+** Chipset: Intel Z390
+- Host Bridge: 8th/9th Gen Core 8-core Desktop Processor (Coffee Lake S)
+- ISA Bridge: Z390 Chipset LPC/eSPI Controller (rev 10)
+- PCIe Root Ports: Multiple Cannon Lake PCH PCI Express ports
+
+** Integrated Components:
+- Graphics: Intel CoffeeLake-S GT2 [UHD Graphics 630] (rev 02)
+- Audio: Intel Cannon Lake PCH cAVS (rev 10)
+- USB: Cannon Lake PCH USB 3.1 xHCI Host Controller (rev 10)
+- Thermal: Cannon Lake PCH Thermal Controller (rev 10)
+- HECI: Cannon Lake PCH HECI Controller (rev 10)
+- SMBus: Cannon Lake PCH SMBus Controller (rev 10)
+- SPI: Cannon Lake PCH SPI Controller (rev 10)
+
+* ZFS Pool Configuration
+
+** boot-pool (1.86 TB):
+- Allocated: 3.06 GB
+- Free: 1.86 TB
+- Capacity: 0%
+- Health: ONLINE
+
+** sysdata (1.86 TB):
+- Allocated: 314 MB
+- Free: 1.86 TB
+- Capacity: 0%
+- Health: ONLINE
+- Purpose: System data and applications
+
+** tank (72.8 TB):
+- Allocated: 1.17 MB
+- Free: 72.7 TB
+- Capacity: 0%
+- Health: ONLINE
+- Purpose: Large storage pool (empty, ready for expansion)
+
+** vault (43.6 TB):
+- Allocated: 24.5 TB
+- Free: 19.1 TB
+- Capacity: 56%
+- Health: ONLINE
+- Purpose: Main media storage
+
+* Vault Datasets
+
+** Media (Movies, Music, TV Shows):
+- Size: 30 TB (allocated)
+- Used: 17 TB
+- Available: 14 TB
+- Capacity: 54%
+
+** Lectures:
+- Size: 15 TB (allocated)
+- Used: 878 GB
+- Available: 14 TB
+- Capacity: 6%
+
+** Audiobooks:
+- Size: 14 TB (allocated)
+- Used: 89 GB
+- Available: 14 TB
+- Capacity: 1%
+
+** Magic:
+- Size: 15 TB (allocated)
+- Used: 543 GB
+- Available: 14 TB
+- Capacity: 4%
+
+** Books:
+- Size: 14 TB (allocated)
+- Used: 177 GB
+- Available: 14 TB
+- Capacity: 2%
+
+* Security Mitigations
+
+** CPU Vulnerabilities (Status):
+- Gather data sampling: Mitigated (Microcode)
+- Indirect target selection: Mitigated (Aligned branch/return thunks)
+- Itlb multihit: KVM Mitigation (Split huge pages)
+- L1tf: Not affected
+- Mds: Not affected
+- Meltdown: Not affected
+- Mmio stale data: Mitigated (Clear CPU buffers; SMT vulnerable)
+- Reg file data sampling: Not affected
+- Retbleed: Mitigated (Enhanced IBRS)
+- Spec rstack overflow: Not affected
+- Spec store bypass: Mitigated (Disabled via prctl)
+- Spectre v1: Mitigated (usercopy/swapgs barriers)
+- Spectre v2: Mitigated (Enhanced/Automatic IBRS)
+- Srbds: Mitigated (Microcode)
+- Tsx async abort: Mitigated (TSX disabled)
+
+* Full PCI Device List
+
+#+BEGIN_EXAMPLE
+00:00.0 Host bridge: Intel Corporation 8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] (rev 0d)
+00:01.0 PCI bridge: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) (rev 0d)
+00:02.0 VGA compatible controller: Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] (rev 02)
+00:12.0 Signal processing controller: Intel Corporation Cannon Lake PCH Thermal Controller (rev 10)
+00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller (rev 10)
+00:14.2 RAM memory: Intel Corporation Cannon Lake PCH Shared SRAM (rev 10)
+00:16.0 Communication controller: Intel Corporation Cannon Lake PCH HECI Controller (rev 10)
+00:17.0 SATA controller: Intel Corporation Cannon Lake PCH SATA AHCI Controller (rev 10)
+00:1c.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #6 (rev f0)
+00:1c.6 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #7 (rev f0)
+00:1d.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #9 (rev f0)
+00:1f.0 ISA bridge: Intel Corporation Z390 Chipset LPC/eSPI Controller (rev 10)
+00:1f.3 Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
+00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
+00:1f.5 Serial bus controller: Intel Corporation Cannon Lake PCH SPI Controller (rev 10)
+00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (7) I219-V (rev 10)
+01:00.0 SATA controller: ASMedia Technology Inc. ASM1166 Serial ATA Controller (rev 02)
+02:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03)
+03:00.0 Network controller: Intel Corporation Dual Band Wireless-AC 3168NGW [Stone Peak] (rev 10)
+04:00.0 Non-Volatile memory controller: Sandisk Corp WD PC SN810 / Black SN850 NVMe SSD (rev 01)
+#+END_EXAMPLE
diff --git a/docs/homelab-inventory/mybitch-laptop.org b/docs/homelab-inventory/mybitch-laptop.org
new file mode 100644
index 0000000..e522c40
--- /dev/null
+++ b/docs/homelab-inventory/mybitch-laptop.org
@@ -0,0 +1,238 @@
+#+TITLE: mybitch - Christine's Laptop
+#+DATE: 2026-01-31
+#+HOSTNAME: mybitch
+
+* Automated Capabilities
+
+# Maintained by the system-health-check workflow. Manual edits may be
+# overwritten when the workflow detects drift between this drawer and the
+# live system. Machine-readable capability signals used to dispatch which
+# checks run on this host.
+
+:PROPERTIES:
+:FS: ext4
+:PM: apt
+:ORCH: none
+:SNAPSHOT: timeshift
+:MESH: tailscale
+:BACKUP: source
+:VIRT: libvirt
+:INIT: systemd
+:LAST_AUDIT: 2026-06-23
+:END:
+
+* Overview
+
+| Field | Value |
+|----------+-----------------------------------|
+| Hostname | mybitch |
+|----------+-----------------------------------|
+| Type | Laptop |
+|----------+-----------------------------------|
+| Owner | Christine |
+|----------+-----------------------------------|
+| Maker | Framework |
+|----------+-----------------------------------|
+| Model | Laptop 16 (AMD Ryzen 7040 Series) |
+|----------+-----------------------------------|
+| OS | Linux Mint 22.3 (Zena) |
+|----------+-----------------------------------|
+| Kernel | 6.17.0-23-generic |
+|----------+-----------------------------------|
+| Status | In use |
+|----------+-----------------------------------|
+
+* Hardware Specifications
+
+** CPU
+
+| Field | Value |
+|--------------+-----------------------------------|
+| Model | AMD Ryzen 9 7940HS w/ Radeon 780M |
+|--------------+-----------------------------------|
+| Architecture | Zen 4 (TSMC 5nm) |
+|--------------+-----------------------------------|
+| Cores | 8 |
+|--------------+-----------------------------------|
+| Threads | 16 |
+|--------------+-----------------------------------|
+| Base Clock | 4.0 GHz |
+|--------------+-----------------------------------|
+| Boost Clock | 5.25 GHz |
+|--------------+-----------------------------------|
+| L2 Cache | 8 MiB (8x1024 KiB) |
+|--------------+-----------------------------------|
+| L3 Cache | 16 MiB |
+|--------------+-----------------------------------|
+
+** Memory
+
+| Field | Value |
+|-----------+------------------------------|
+| Total | 32 GB |
+|-----------+------------------------------|
+| Type | DDR5-5600 |
+|-----------+------------------------------|
+| Installed | 1x 32GB (A-DATA AD5S560032G) |
+|-----------+------------------------------|
+| Slots | 2 (1 free) |
+|-----------+------------------------------|
+| Max | 64 GB |
+|-----------+------------------------------|
+
+** Graphics
+
+| Device | Model | Driver | Notes |
+|------------+---------------------+--------+-----------------|
+| Dedicated | AMD Radeon RX 7700S | amdgpu | RDNA 3, Navi 33 |
+|------------+---------------------+--------+-----------------|
+| Integrated | AMD Radeon 780M | amdgpu | RDNA 3, Phoenix |
+|------------+---------------------+--------+-----------------|
+
+** Storage
+
+| Device | Model | Size | Interface |
+|--------------+---------------------+----------+--------------|
+| /dev/nvme0n1 | WD BLACK SN770M 2TB | 1.82 TiB | PCIe Gen4 x4 |
+|--------------+---------------------+----------+--------------|
+| /dev/nvme1n1 | WD BLACK SN770 2TB | 1.82 TiB | PCIe Gen4 x4 |
+|--------------+---------------------+----------+--------------|
+| Total | | 3.64 TiB | |
+|--------------+---------------------+----------+--------------|
+
+*** Partitions
+
+| Partition | Size | Used | Filesystem | Mount | Label |
+|----------------+----------+-------------+------------+-----------+--------|
+| /dev/nvme1n1p2 | 1.82 TiB | 17.4% | ext4 | / | |
+|----------------+----------+-------------+------------+-----------+--------|
+| /dev/nvme1n1p1 | 512 MiB | 1.2% | vfat | /boot/efi | |
+|----------------+----------+-------------+------------+-----------+--------|
+| /dev/nvme0n1p1 | 1.82 TiB | (unmounted) | ext4 | | Backup |
+|----------------+----------+-------------+------------+-----------+--------|
+
+** Display
+
+| Field | Value |
+|------------+--------------------|
+| Panel | BOE Display 0x0bc9 |
+|------------+--------------------|
+| Resolution | 2560x1600 |
+|------------+--------------------|
+| Size | 16" (345x215mm) |
+|------------+--------------------|
+| Ratio | 16:10 |
+|------------+--------------------|
+| DPI | 188 |
+|------------+--------------------|
+
+** Battery
+
+| Field | Value |
+|----------+------------------|
+| Model | NVT FRANDBA |
+|----------+------------------|
+| Capacity | 85.1 Wh (design) |
+|----------+------------------|
+| Current | 87.5 Wh (102.9%) |
+|----------+------------------|
+| Cycles | 13 |
+|----------+------------------|
+| Type | Li-ion |
+|----------+------------------|
+
+** Network
+
+| Interface | Type | Chipset |
+|-----------+--------+--------------------------|
+| wlp5s0 | WiFi | MediaTek MT7922 802.11ax |
+|-----------+--------+--------------------------|
+| Bluetooth | BT 5.2 | MediaTek Wireless_Device |
+|-----------+--------+--------------------------|
+
+** Expansion Cards (Framework)
+
+| Slot | Card |
+|------+---------------------|
+| 1 | HDMI Expansion Card |
+|------+---------------------|
+
+** Input Modules (Framework)
+
+| Module | Notes |
+|----------+-------------------------|
+| Keyboard | ANSI layout |
+|----------+-------------------------|
+| Numpad | Laptop 16 Numpad Module |
+|----------+-------------------------|
+
+* Connected Peripherals
+
+| Device | Connection |
+|---------------------------+-------------------------|
+| Logitech MX Master 3 | Unifying Receiver (USB) |
+|---------------------------+-------------------------|
+| Realtek Laptop Camera | Internal USB |
+|---------------------------+-------------------------|
+| Goodix Fingerprint Reader | Internal USB |
+|---------------------------+-------------------------|
+
+* Network Access
+
+| Method | Address |
+|--------+---------------|
+| mDNS | mybitch.local |
+|--------+---------------|
+| SSH | Yes (OpenSSH) |
+|--------+---------------|
+
+* Notes
+
+- Framework Laptop 16 with modular expansion card system
+- Discrete AMD GPU (RX 7700S) in addition to integrated Radeon 780M
+- Second NVMe slot contains 2TB backup drive (unmounted, labeled "Backup")
+- Uptime at inventory: 4 days
+
+* Operational Changes Log
+
+Deliberate, non-default config changes applied to mybitch (so they can be found and reverted later). Most recent first.
+
+** 2026-05-12 — amdgpu.mes=0 added (escalation of the MES-hang freeze mitigation)
+
+The 2026-05-11 =amdgpu.cwsr_enable=0= mitigation didn't reduce the iGPU "MES failed to respond" errors (14 hits in 14.5h after the fix vs. 38 over 10 days before — rate went *up*), so escalated per the documented path: added =amdgpu.mes=0= to =GRUB_CMDLINE_LINUX_DEFAULT= in =/etc/default/grub= (now =quiet splash amdgpu.cwsr_enable=0 amdgpu.mes=0=). Backup: =/etc/default/grub.bak-2026-05-12-amdgpu-mes=. =update-grub= run; param verified in all 6 =/boot/grub/grub.cfg= entries. Takes effect on next reboot (planned for after the in-progress first rsyncshot backup). =amdgpu.mes=0= disables the GFX11 hardware MES scheduler and falls back to the legacy KIQ path — sidesteps the hanging MES firmware entirely. Tradeoff: KIQ-on-GFX11 is a less-traveled config (small chance of cosmetic display/modeset quirks); irrelevant for Christine's light desktop workload. =cwsr_enable=0= kept (harmless alongside mes=0). *Revert:* restore =/etc/default/grub.bak-2026-05-12-amdgpu-mes= (or sed out = amdgpu.mes=0=), =update-grub=, reboot. After the reboot, check =journalctl -k -b | grep -c 'MES failed'= → should be 0. See the 2026-05-11 entry in =.ai/project-workflows/system-health-check.org='s Known Issues Log for the full background.
+
+** 2026-05-12 — rsyncshot backups + travel keep-awake mode
+
+Set up the same =rsyncshot= → TrueNAS backup mybitch's siblings use, and made mybitch never suspend so backups keep running while Christine travels with it.
+
+*** rsyncshot install (mirrors ratio's setup)
+- =/usr/local/bin/rsyncshot= — the script (source of truth: =~/code/rsyncshot/rsyncshot=).
+- =/etc/rsyncshot/config= — =REMOTE_HOST="cjennings@truenas.tailf3bb8c.ts.net"=, =REMOTE_PATH="/mnt/vault/backups"=, =SSH_IDENTITY_FILE="/root/.ssh/id_ed25519"=. (See "destination pinned to Tailscale" below for why the full MagicDNS name.)
+- =/etc/rsyncshot/include.txt= — =/home /etc /usr/local/bin=. =/etc/rsyncshot/exclude.txt= — copied verbatim from ratio.
+- =/etc/logrotate.d/rsyncshot= — copied verbatim from ratio. =/var/log/rsyncshot.log= — the log.
+- Root crontab: hourly at :30 (hours 0-1,3-23, keep 23) + daily at 2:30 (keep 30), each wrapped in =flock -x /tmp/rsyncshot.lock=. Identical to ratio's schedule.
+- =/root/.ssh/id_ed25519= (+ =.pub=) — new keypair generated on mybitch, no passphrase, comment =root@mybitch-rsyncshot=. mybitch's =cjennings= account had no outbound key (it's a receive-only account), so the backup runs with a dedicated root key instead. The pubkey was appended to =~cjennings/.ssh/authorized_keys= on TrueNAS (the line tagged =root@mybitch-rsyncshot=).
+- =/root/.ssh/config= — =Host truenas truenas.tailf3bb8c.ts.net 100.67.22.65= → =User cjennings=, that IdentityFile, =ServerAliveInterval 60 / ServerAliveCountMax 10 / TCPKeepAlive yes=. Host keys for those names added to =/root/.ssh/known_hosts=.
+- TrueNAS side: =/mnt/vault/backups/mybitch/= directory created, owned =cjennings:cjennings= (=vault/backups= is a ZFS dataset; per-host backups are just subdirectories, like =ratio/= and =velox/=).
+- *Revert:* =sudo crontab -r= (or remove the rsyncshot lines), =sudo rm -rf /usr/local/bin/rsyncshot /etc/rsyncshot /etc/logrotate.d/rsyncshot /var/log/rsyncshot.log /root/.ssh/id_ed25519* /root/.ssh/config=, restore =/root/.ssh/known_hosts= if desired, remove the =root@mybitch-rsyncshot= line from =~cjennings/.ssh/authorized_keys= on TrueNAS, and =rm -rf /mnt/vault/backups/mybitch= on TrueNAS.
+
+*** destination pinned to Tailscale
+=REMOTE_HOST= uses the full Tailscale MagicDNS name =truenas.tailf3bb8c.ts.net= (not the bare =truenas=) so the backup always routes over the tailnet regardless of what a hotel/away-from-home router's DNS resolves =truenas= to. Tailscale uses a direct LAN path between same-LAN peers, so this is near-zero perf cost when mybitch is on the home network. *Revert:* set =REMOTE_HOST="cjennings@truenas"= in =/etc/rsyncshot/config=.
+
+*** keep-awake (never suspend) — three layers
+1. =systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target= — the hard guarantee; suspend can't happen even if requested. *Revert:* =sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target=.
+2. Cinnamon power gsettings for user =cciarm= set to ='nothing'=: =sleep-inactive-ac-type=, =sleep-inactive-battery-type=, =lid-close-ac-action=, =lid-close-battery-action= (schema =org.cinnamon.settings-daemon.plugins.power=). Were ='suspend'/'suspend'/'nothing'/'suspend'=. *Revert:* set them back, or run =gsettings reset= on each key as =cciarm=.
+3. =/etc/systemd/logind.conf.d/no-suspend-keep-awake.conf= — =HandleLidSwitch=ignore=, =HandleLidSwitchExternalPower=ignore=, =HandleLidSwitchDocked=ignore=, =IdleAction=ignore=. (Written but not applied live — =systemd-logind= wasn't restarted because sessions were active; takes effect on next reboot. Layers 1-2 cover the gap.) *Revert:* =sudo rm /etc/systemd/logind.conf.d/no-suspend-keep-awake.conf= then reboot or =systemctl restart systemd-logind=.
+
+When mybitch goes back to being a stationary machine (or this whole arrangement is no longer wanted), reverse layers 1-3. The rsyncshot backup itself is worth keeping regardless.
+
+*** IPv6 set to link-local-only (fixes the tailscale dropout)
+mybitch dropped off the Tailscale tailnet on 2026-05-12 AM. Root cause: the home WiFi ("dupre") has device(s) advertising ULA-only IPv6 RAs (prefixes =fdc4:c4c6:3fb0:16cc::/64= and =fd67:8615:6780:1::/64=) with no default route. NetworkManager (=ipv6.method=auto=) SLAAC'd a "global"-scope ULA address onto wlp5s0 with no v6 internet path, so tailscaled kept trying IPv6 to controlplane/DERP, failed "network is unreachable", flapped, and lost its control connection. mybitch has no working global IPv6 anywhere (no ISP v6), so the fix is to ignore underlay v6:
+- =/etc/NetworkManager/conf.d/ipv6-link-local-only.conf= → =[connection] ipv6.method=link-local= (connection default — covers home WiFi, travel WiFi, phone hotspot).
+- =nmcli con modify dupre ipv6.method link-local= (explicit on the home connection).
+- Effect: wlp5s0 keeps only fe80:: (mDNS still works), no SLAAC, no v6 routes; tailscale0's overlay v6 untouched; tailscaled uses the IPv4 underlay. Activates on reboot or =nmcli dev reapply wlp5s0=.
+- *Revert if mybitch ever gets real IPv6:* =sudo rm /etc/NetworkManager/conf.d/ipv6-link-local-only.conf=; =sudo nmcli con modify dupre ipv6.method auto=; reboot or =nmcli dev reapply wlp5s0=.
+
+*** caveats (relayed to Craig for Christine)
+- mybitch must stay plugged into AC for backups to keep running — masking suspend doesn't stop a battery dying with the lid closed.
+- mybitch must be on WiFi at the destination and stay on the Tailscale tailnet.
diff --git a/docs/homelab-inventory/ratio-desktop.org b/docs/homelab-inventory/ratio-desktop.org
new file mode 100644
index 0000000..86dcd4d
--- /dev/null
+++ b/docs/homelab-inventory/ratio-desktop.org
@@ -0,0 +1,175 @@
+#+TITLE: ratio - Desktop Workstation
+#+DATE: 2026-01-27
+#+HOSTNAME: ratio
+
+* Automated Capabilities
+
+# Maintained by the system-health-check workflow. Manual edits may be
+# overwritten when the workflow detects drift between this drawer and the
+# live system. Machine-readable capability signals used to dispatch which
+# checks run on this host.
+
+:PROPERTIES:
+:FS: btrfs
+:PM: pacman
+:ORCH: topgrade
+:SNAPSHOT: snapper
+:MESH: tailscale
+:BACKUP: source
+:VIRT: libvirt,docker,podman
+:INIT: systemd
+:LAST_AUDIT: 2026-05-25
+:END:
+
+* Overview
+
+| Field | Value |
+|-------------+------------------------------------------|
+| Hostname | ratio |
+|-------------+------------------------------------------|
+| Type | Desktop workstation |
+|-------------+------------------------------------------|
+| Maker | Framework |
+|-------------+------------------------------------------|
+| Model | Desktop (AMD Ryzen AI Max 300 Series) |
+|-------------+------------------------------------------|
+| Board | FRANMFCP06 v A6 |
+|-------------+------------------------------------------|
+| Firmware | INSYDE UEFI v03.03 (2025-09-16) |
+|-------------+------------------------------------------|
+| OS | Arch Linux |
+|-------------+------------------------------------------|
+| Kernel | 6.12.67-1-lts |
+|-------------+------------------------------------------|
+| Desktop | Hyprland (Wayland) |
+|-------------+------------------------------------------|
+| Previous ID | cogito (repurposed and renamed to ratio) |
+|-------------+------------------------------------------|
+
+* CPU
+
+| Field | Value |
+|---------------+---------------------------------------|
+| Model | AMD Ryzen AI MAX+ 395 w/ Radeon 8060S |
+|---------------+---------------------------------------|
+| Architecture | Zen 5 (TSMC 4nm) |
+|---------------+---------------------------------------|
+| Cores/Threads | 16 cores / 32 threads |
+|---------------+---------------------------------------|
+| Base/Boost | 3.0 GHz / 5.15 GHz |
+|---------------+---------------------------------------|
+| Cache L1 | 1.2 MiB (d-16x48 KiB; i-16x32 KiB) |
+|---------------+---------------------------------------|
+| Cache L2 | 16 MiB (16x1024 KiB) |
+|---------------+---------------------------------------|
+| Cache L3 | 64 MiB (2x32 MiB) |
+|---------------+---------------------------------------|
+| NPU | XDNA 2, 50+ peak AI TOPS |
+|---------------+---------------------------------------|
+| Peak Perf | 59.4 FP16/BF16 TFLOPS @ 2.9GHz |
+|---------------+---------------------------------------|
+
+* GPU
+
+| Field | Value |
+|--------------+-----------------------------------------|
+| Model | AMD Radeon 8060S (Strix Halo) |
+|--------------+-----------------------------------------|
+| Architecture | RDNA 3.5 |
+|--------------+-----------------------------------------|
+| CUs | 40 Compute Units |
+|--------------+-----------------------------------------|
+| Driver | amdgpu (kernel) |
+|--------------+-----------------------------------------|
+| Max VRAM | 96GB (via AMD Variable Graphics Memory) |
+|--------------+-----------------------------------------|
+| GPU Arch ID | gfx1151 |
+|--------------+-----------------------------------------|
+| PCIe | Gen 4, 16 GT/s, 16 lanes |
+|--------------+-----------------------------------------|
+
+* Memory
+
+| Field | Value |
+|--------------+--------------------------|
+| Total | 128 GiB unified (LPDDR5) |
+|--------------+--------------------------|
+| Speed | 8000 MT/s |
+|--------------+--------------------------|
+| Channels | 8 (8x 16 GiB) |
+|--------------+--------------------------|
+| Manufacturer | Micron Technology |
+|--------------+--------------------------|
+| Part Number | MT62F4G32D8DV-023 WT |
+|--------------+--------------------------|
+
+* Storage
+
+| Device | Model | Size | Interface |
+|--------------+------------------------+-----------+-----------|
+| /dev/nvme0n1 | WD BLACK SN850X 8000GB | 7.28 TiB | NVMe |
+|--------------+------------------------+-----------+-----------|
+| /dev/nvme1n1 | WD BLACK SN850X 8000GB | 7.28 TiB | NVMe |
+|--------------+------------------------+-----------+-----------|
+| *Total* | | 14.55 TiB | |
+|--------------+------------------------+-----------+-----------|
+
+Filesystem: btrfs with subvolumes (@, @home, @snapshots, @log, @pkg)
+
+* Network
+
+| Interface | Chipset | Speed | Type |
+|-----------+-----------------+---------+----------|
+| enp191s0 | Realtek RTL8126 | 5 GbE | Wired |
+|-----------+-----------------+---------+----------|
+| wlp192s0 | MediaTek MT7925 | Wi-Fi 7 | Wireless |
+|-----------+-----------------+---------+----------|
+
+Also has: docker0, tailscale0, virbr0 (virtual interfaces)
+
+* Audio
+
+- AMD Radeon High Definition Audio (HDMI, snd_hda_intel)
+- AMD Ryzen HD Audio (3.5mm, snd_hda_intel)
+- PipeWire v1.4.10 (pipewire-pulse, wireplumber)
+
+* PCI Slots
+
+| Slot | Info | Status |
+|------+------------+-----------|
+| 1 | M.2 JWLAN | Available |
+|------+------------+-----------|
+| 2 | M.2 JSSD1 | In use |
+|------+------------+-----------|
+| 3 | M.2 JSSD2 | In use |
+|------+------------+-----------|
+| 4 | PCIe Gen 4 | Available |
+|------+------------+-----------|
+
+* Connected Peripherals
+
+- Monitor: Dell U3419W (HDMI-A-1, 3440x1440@60Hz)
+- Keyboard: Das Keyboard 4 (Cherry MX Blue) — replacing with Keychron Q6 Pro
+- Mouse: Logitech M650
+- DAC/Amp: JDS Labs Element IV (ordered)
+
+* AI/LLM Capability
+
+Primary purpose includes local AI/LLM inference via Ollama.
+
+| Model | Size | Purpose |
+|------------------+-------+----------------------|
+| deepseek-r1:70b | 42 GB | Main reasoning model |
+|------------------+-------+----------------------|
+| qwen3:30b | 18 GB | MoE chat (256K ctx) |
+|------------------+-------+----------------------|
+| deepseek-r1:14b | 9 GB | Light reasoning |
+|------------------+-------+----------------------|
+| nomic-embed-text | 274MB | RAG embeddings |
+|------------------+-------+----------------------|
+
+Inference benchmarks (AMD testing, LM Studio 0.3.11):
+- Small models (1-3B): ~100+ tok/s
+- Medium models (7-8B): ~60-80 tok/s
+- Large models (20B): ~58 tok/s
+- Very large models (120B): ~38 tok/s
diff --git a/docs/homelab-inventory/truenas-server.org b/docs/homelab-inventory/truenas-server.org
new file mode 100644
index 0000000..5ce8613
--- /dev/null
+++ b/docs/homelab-inventory/truenas-server.org
@@ -0,0 +1,114 @@
+#+TITLE: truenas - NAS/Storage Server
+#+DATE: 2026-01-27
+#+HOSTNAME: truenas
+
+* Automated Capabilities
+
+# Maintained by the system-health-check workflow. Manual edits may be
+# overwritten when the workflow detects drift between this drawer and the
+# live system. Machine-readable capability signals used to dispatch which
+# checks run on this host.
+#
+# NOTE: TrueNAS SCALE is middleware-managed. No user-level package manager
+# or topgrade orchestration. Snapshot and update operations go through the
+# TrueNAS UI / API, not pacman/apt.
+
+:PROPERTIES:
+:FS: zfs
+:PM: none
+:ORCH: none
+:SNAPSHOT: zfs-native
+:MESH: tailscale
+:BACKUP: target
+:VIRT: docker
+:INIT: systemd
+:LAST_AUDIT: 2026-04-21
+:END:
+
+* Overview
+
+| Field | Value |
+|----------+-----------------------------------------|
+| Hostname | truenas (truenas.local / 192.168.86.5) |
+|----------+-----------------------------------------|
+| Type | NAS / storage server |
+|----------+-----------------------------------------|
+| OS | TrueNAS |
+|----------+-----------------------------------------|
+| Purpose | Media storage, backups, Plex, Syncthing |
+|----------+-----------------------------------------|
+
+See [[file:2026-01-05-truenas-hardware-specs.org][TrueNAS Hardware Specs]] for full sysinfo output.
+
+* CPU
+
+| Field | Value |
+|---------------+----------------------|
+| Model | Intel Core i9-9900K |
+|---------------+----------------------|
+| Architecture | Coffee Lake |
+|---------------+----------------------|
+| Cores/Threads | 8 cores / 16 threads |
+|---------------+----------------------|
+| Base/Boost | 3.60 GHz / 5.00 GHz |
+|---------------+----------------------|
+
+* Memory
+
+| Field | Value |
+|-------+-------------|
+| Total | 64 GiB DDR4 |
+|-------+-------------|
+
+* Storage
+
+| Pool | Config | Raw Size | Purpose |
+|-----------+-----------------+------------+---------------|
+| boot-pool | Mirror | ~1.9 TB x2 | System |
+|-----------+-----------------+------------+---------------|
+| sysdata | NVMe | ~1.8 TB | System data |
+|-----------+-----------------+------------+---------------|
+| vault | RAIDZ1 (4 disk) | ~43.6 TB | Primary media |
+|-----------+-----------------+------------+---------------|
+| tank | RAIDZ1 (4 disk) | ~72.8 TB | Expansion |
+|-----------+-----------------+------------+---------------|
+
+Total raw: ~122 TB
+
+*** Vault Datasets
+| Dataset | Size |
+|------------+-------|
+| Media | 30 TB |
+|------------+-------|
+| Lectures | 15 TB |
+|------------+-------|
+| Audiobooks | 14 TB |
+|------------+-------|
+| Magic | 15 TB |
+|------------+-------|
+| Books | 14 TB |
+|------------+-------|
+
+* Network
+
+| Interface | Chipset | Speed | Status |
+|-----------+--------------+--------+--------------|
+| eno1 | Intel I219-V | 1 GbE | Current |
+|-----------+--------------+--------+--------------|
+| enp2s0 | Intel I211 | 1 GbE | Available |
+|-----------+--------------+--------+--------------|
+| (pending) | Intel I226-V | 2.5GbE | Ordered, NIC |
+|-----------+--------------+--------+--------------|
+
+* Motherboard
+
+| Field | Value |
+|---------+------------|
+| Chipset | Intel Z390 |
+|---------+------------|
+
+* Services
+
+- Plex Media Server
+- Syncthing
+- Tailscale
diff --git a/docs/homelab-inventory/velox-laptop.org b/docs/homelab-inventory/velox-laptop.org
new file mode 100644
index 0000000..6e4f540
--- /dev/null
+++ b/docs/homelab-inventory/velox-laptop.org
@@ -0,0 +1,158 @@
+#+TITLE: velox - Laptop
+#+DATE: 2026-01-27
+#+HOSTNAME: velox
+
+* Automated Capabilities
+
+# Maintained by the system-health-check workflow. Manual edits may be
+# overwritten when the workflow detects drift between this drawer and the
+# live system. Machine-readable capability signals used to dispatch which
+# checks run on this host.
+#
+# NOTE: 2026-04 velox was reinstalled Arch-on-ZFS. Values below reflect
+# that reinstall but remain TBD where a live probe has not yet confirmed.
+
+:PROPERTIES:
+:FS: zfs
+:PM: pacman
+:ORCH: topgrade
+:SNAPSHOT: sanoid
+:MESH: tailscale
+:BACKUP: source
+:VIRT: libvirt,docker,podman
+:INIT: systemd
+:LAST_AUDIT: 2026-05-26
+:END:
+
+* Overview
+
+| Field | Value |
+|----------+---------------------------------|
+| Hostname | velox |
+|----------+---------------------------------|
+| Type | Laptop |
+|----------+---------------------------------|
+| Maker | Framework |
+|----------+---------------------------------|
+| Model | Laptop (13th Gen Intel Core) |
+|----------+---------------------------------|
+| Board | FRANMCCP07 v A7 |
+|----------+---------------------------------|
+| Firmware | INSYDE UEFI v03.07 (2024-12-26) |
+|----------+---------------------------------|
+| OS | Arch Linux |
+|----------+---------------------------------|
+| Kernel | 6.18.6-arch1-1 |
+|----------+---------------------------------|
+| Desktop | startx (X11) |
+|----------+---------------------------------|
+
+* CPU
+
+| Field | Value |
+|---------------+-----------------------------------------|
+| Model | 13th Gen Intel Core i7-1370P |
+|---------------+-----------------------------------------|
+| Architecture | Raptor Lake (Intel 7 / 10nm) |
+|---------------+-----------------------------------------|
+| Cores/Threads | 14 cores / 20 threads (6P + 8E, hybrid) |
+|---------------+-----------------------------------------|
+| Base/Boost | 990 MHz / 5.2 GHz |
+|---------------+-----------------------------------------|
+| Cache L1 | 1.2 MiB (d-8x32K,6x48K; i-6x32K,8x64K) |
+|---------------+-----------------------------------------|
+| Cache L2 | 11.5 MiB (6x1.2M, 2x2M) |
+|---------------+-----------------------------------------|
+| Cache L3 | 24 MiB (1x24M) |
+|---------------+-----------------------------------------|
+| Socket | BGA1744 (U3E1) |
+|---------------+-----------------------------------------|
+
+* GPU
+
+| Field | Value |
+|--------------+------------------------|
+| Model | Intel Iris Xe Graphics |
+|--------------+------------------------|
+| Architecture | Xe (Intel 7) |
+|--------------+------------------------|
+| Driver | i915 / modesetting |
+|--------------+------------------------|
+
+* Memory
+
+| Field | Value |
+|----------+------------------------------------|
+| Total | 64 GiB (DDR4) |
+|----------+------------------------------------|
+| Speed | 3200 MT/s |
+|----------+------------------------------------|
+| Slots | 2 (both populated) |
+|----------+------------------------------------|
+| Device 1 | 32 GiB Crucial CT32G4SFD832A.C16FB |
+|----------+------------------------------------|
+| Device 2 | 32 GiB Crucial CT32G4SFD832A.C16FE |
+|----------+------------------------------------|
+
+* Storage
+
+| Device | Model | Size | Interface |
+|--------------+----------------------+----------+-----------|
+| /dev/nvme0n1 | Sabrent SB-RKT4P-8TB | 7.28 TiB | NVMe |
+|--------------+----------------------+----------+-----------|
+
+- Filesystem: ZFS on root (zroot pool on nvme0n1p2; reinstalled 2026-04)
+- Datasets: zroot/ROOT/default, zroot/home, zroot/var/log, zroot/var/lib/pacman, zroot/var/lib/docker (per-layer), zroot/vms, zroot/media
+- Snapshots: sanoid hourly + zfs-scrub-weekly@zroot
+- SMART: PASSED (re-verified 2026-04-26); composite 43 °C; 0 media errors
+- Power-on history pre-dates reinstall — refresh on next full re-inventory
+
+* Display
+
+| Field | Value |
+|------------+---------------------------------|
+| Panel | BOE Display 0x0bca (built 2022) |
+|------------+---------------------------------|
+| Resolution | 2256x1504 |
+|------------+---------------------------------|
+| Size | 13.5" (285x190mm) |
+|------------+---------------------------------|
+| DPI | 201 |
+|------------+---------------------------------|
+| Ratio | 3:2 |
+|------------+---------------------------------|
+
+* Network
+
+| Interface | Chipset | Speed | Type |
+|-------------+--------------------------------+---------+----------|
+| wlp170s0 | Qualcomm Atheros AR9462 | Wi-Fi | Wireless |
+|-------------+--------------------------------+---------+----------|
+| enp0s13f0u3 | Realtek USB 10/100/1G/2.5G LAN | 2.5 GbE | USB |
+|-------------+--------------------------------+---------+----------|
+
+Also has: docker0, tailscale0, virbr0 (virtual interfaces)
+
+* Audio
+
+- Intel Raptor Lake-P/U/H cAVS (snd_hda_intel)
+- PipeWire v1.4.10 (pipewire-pulse, wireplumber)
+
+* Battery
+
+| Field | Value |
+|-----------+-----------------------|
+| Capacity | 55 Wh (design) |
+|-----------+-----------------------|
+| Condition | 44/55 Wh (80% health) |
+|-----------+-----------------------|
+| Cycles | 146 |
+|-----------+-----------------------|
+| Type | Li-ion |
+|-----------+-----------------------|
+
+* Other Hardware
+
+- Webcam: Realtek Laptop Camera (UVC)
+- Fingerprint: Shenzhen Goodix USB Device
+- Bluetooth: Foxconn (BT 4.0)