Files
pi-config/skills/system-architect/SKILL.md
Sam Rolfe d278d18bb3 Correct system-architect specs from live 2026-10-05 inspection
- .13: KDE Plasma 6 (not Niri); RAM 15GB; disk letters corrected
  (root is /dev/sda2, storage sdb2, data sdc2, ubuntu_storage sdd1);
  add sda3 swap (81% full)
- .13 GPU: GTX 760 dead, no driver bound, software rendering
- .27: 4 cores/8 threads, Quadro P620 + HD 630, add swap + NTFS disk
- add Resource Pressure on .13 section and must-stay-on list
- note dead stacks (airflow 24GB logs, engram container) and caveats
2026-10-05 14:47:54 +11:00

11 KiB

name, description, compatibility, metadata
name description compatibility metadata
system-architect Sam's NixOS multi-machine infrastructure. Use for any task involving system config, cross-machine deployment, Docker, audio (Snapcast), MQTT (Mosquitto), NixOS flakes, Ubuntu, Sys Config, Nvim, Home Assistant. NixOS 25.11+, Home Manager, flakes
machines network
name ip type os role tech hardware verified
sam-4screen-desktop 192.168.20.27 Desktop NixOS, Niri Main dev machine. Sync to sam-ubuntu1. Mainly terminal dev work with Nvim, Opencode, Pi dev code.
cpu ram gpu disks
model cores threads
Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz 4 8
total_gb
62
Intel HD Graphics 630 (i915) — drives the 4 display outputs
NVIDIA Quadro P620 2GB (nvidia 580.173.02)
device size mountpoint note
/dev/nvme0n1p2 869G / ext4, 66% used (2026-10-05)
device size mountpoint
/dev/nvme0n1p3 69G [SWAP]
device size mountpoint
efivarfs 256K /sys/firmware/efi/efivars
device size mountpoint
/dev/nvme0n1p1 1022M /boot
device size mountpoint note
/dev/sda2 224G (not mounted) NTFS
2026-10-05
name type ip os role tech hardware caveats verified
nixos-desktop Desktop 192.168.20.13 NixOS 26.11 (Zokor), KDE Plasma 6 / KWin Wayland (SDDM) Always-on web-facing server. Docker host + native services. Memory-bound — do not treat as CPU-bound. Docker (OmniRoute, Outline, n8n, Pi-hole replica + nebulasync, Mosquitto, voice_bridge/voice_whisper, speech_piper, pocketbase, family-home-lab, dsh, worldmonitor, prefect, litellm, headroom/JEV), Caddy :8000 serving /var/www, snapcast, librespot, mopidy, native PostgreSQL :5433 (paperclip), paperclipai, Paseo Daemon, where-woof
cpu ram gpu disks
model cores threads
AMD Ryzen 5 5600 6-Core Processor 6 12
total_gb note
15 6.8 GiB used; swap 7.1 GiB of 8.8 GiB used (81%) - 2026-10-05
NVIDIA GTX 760 (Kepler, PCI 10de:11c2) - DEAD. No driver bound; only /dev/dri/card0 simple-framebuffer. /proc/driver/nvidia absent. Desktop renders via software (llvmpipe). hardware.nvidia.open=true can never work on Kepler (open modules need Turing+). Recommended replacement: AMD RX 6600 (in-kernel amdgpu).
device size mountpoint note
/dev/sda2 907G / ext4, 459G used (54%) - 2026-10-05
device size mountpoint note
/dev/sda3 8.8G [SWAP] 81% full - the main resource problem on this machine
device size mountpoint
/dev/sda1 1022M /boot
device size mountpoint note
/dev/sdb2 916G /mnt/storage empty spare
device size mountpoint note
/dev/sdc2 1.8T /mnt/data 21% used
device size mountpoint note
/dev/sdd1 2.7T /mnt/ubuntu_storage_3TB USB drive - photo master + Borg backup target for .27 and .13. Letter shifts on replug (has been sdd1/sde1).
device size mountpoint note
/dev/sde1 1.4T (not mounted) MaxtorBackup, old migration tarballs
Device letters are NOT stable - NixOS mounts by UUID. Always check lsblk/df before using a device path.
GPU is dead: no hardware acceleration. KDE session costs ~2.4 GB because of software rendering plus 28-day uptime.
litellm and headroom are idle and almost entirely swapped out (~1.05 GB of swap combined).
Dead stacks to ignore: airflow (7 containers exited, 24 GB of logs in /home/sam/deployment/airflow/logs), engram container (never started - the live engram is a user systemd service on :7437 and its DB is empty), trigger_dev, t3_stack_react, sams-home-network.
There is a SECOND airflow install at /home/sam/deployment/ai-resume/airflow/ - also not running.
2026-10-05
name type ip os role tech hardware
sam-ubuntu1 virtual machine 192.168.20.35 Ubuntu Ubuntu in Virtual Machine on Proxmox. Docker Machine for home network. Mainly Docker
cpu ram gpu disks
model cores threads
Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz 2 2
total_gb
14.2
device size mountpoint
/dev/sda2 442G /
device size mountpoint
//192.168.20.23/usb_3tb 2.7T /mnt/nfs_usb_3tb
name type ip os role tech
home-assistant virtual machine 192.168.20.30 Home Assistant OS Runs Home Assistant in a virtual machine on Proxmox Hypervisor Home Assistant OS
name type ip os role tech
file-server virtual machine 192.168.20.23 File server on Proxmox Hypervisor File Server
name type ip os role tech
proxmox-backup virtual machine 192.168.20.48 Proxmox Backup Server Runs standard proxmox backup server Proxmox
name type ip os role tech
proxmox hypervisor 192.168.20.28 Proxmox VE Hypervisor hosting all VMs (sam-ubuntu1 .35, file-server .23, home-assistant .30, proxmox-backup .48) Web UI https://192.168.20.28:8006, SSH root@192.168.20.28
name type ip os role tech
skinnyspeakers raspberry pi 192.168.20.24 Raspbian 12 (bookworm) Speaker/audio client, likely Snapcast speaker. Identified 2026-08-29 (was previously unknown .24) SSH sam@192.168.20.24
name type ip os role tech hardware
sam-thinkpad Laptop 192.168.20.51 NixOS, Niri Portable dev laptop. Third pi machine. On-the-go + at home. pi, Neovim, Home Manager. ThinkPad L14 Gen 2 AMD.
cpu ram gpu disks
model cores threads
AMD Ryzen 5 PRO 5650U with Radeon Graphics 6 12
total_gb
14
device size mountpoint
/dev/nvme0n1 238G /
sam-4screen-desktop has ssh keys to sam-ubuntu1 and nixos-desktop
Gitea: Docker on .35 (gitea-server-1 + gitea-db-1) — web .35:3001, SSH .35:2222. pi-config repo: ssh://git@gitea.lab.audasmedia.com.au:2222/sam/pi-config.git
pi: Nix-managed pi-coding-agent 0.82.1 on all three (uniform); pi-tool-display global; pi-lsp-extension per-project
Each machine has its own ~/.agents clone of pi-config — a push from .27 does NOT auto-update .13/.51
DNS: Pi Hole on sam-ubuntu1 in docker
Reverse Proxy: Caddy on sam-ubuntu1 in docker
pihole main: sam-ubuntu1
pihole redundancy: nixos-desktop
Router Main: 192.168.20.1
Router Second: 192.168.20.254
Proxmox VE host: 192.168.20.28 (web UI :8006); PBS: 192.168.20.48 (:8007)
External IP: 144.6.86.11 (NOT 173.231.229.92 — that's InMotion's server)
Website: Audasmedia.com.au redirects to local *.lab.audasmedia.com.au

System Architect

Sam's NixOS multi-machine infrastructure reference.

Machines

Machine IP Type OS Role
sam-4screen-desktop 192.168.20.27 Desktop NixOS + Niri Main dev machine
nixos-desktop 192.168.20.13 Desktop NixOS + Niri Second dev, web facing, Docker services
sam-thinkpad 192.168.20.51 Laptop NixOS + Niri Portable dev laptop
sam-ubuntu1 192.168.20.35 VM Ubuntu Docker host for home network services
home-assistant 192.168.20.30 VM HA OS Home automation
file-server 192.168.20.23 VM - File server
proxmox-backup 192.168.20.48 VM PBS Proxmox backup server
proxmox 192.168.20.28 Host Proxmox VE Hypervisor — hosts all VMs (.23/.30/.35/.48), web UI :8006
skinnyspeakers 192.168.20.24 Pi Raspbian 12 Speaker/audio client (Snapcast?) — identified 2026-08-29

Network

  • DNS: Pi Hole on sam-ubuntu1 (Docker), redundancy on nixos-desktop
  • Reverse Proxy: Caddy on sam-ubuntu1
  • Proxmox VE host: 192.168.20.28 (web UI :8006); PBS: 192.168.20.48 (:8007)
  • Router: 192.168.20.1 (main), 192.168.20.254 (secondary)
  • External IP: 144.6.86.11 (NOT 173.231.229.92 — that's InMotion's server)
  • Website: audasmedia.com.au → *.lab.audasmedia.com.au

Web Deploy Sync (.27 → .13)

  • Manual lsyncd (not a service): config ~/.config/lsyncd/lsyncd.conf.lua on .27 → rsync+ssh to .13 /var/www/<site> (delete = true).
  • Sites: sprinklers (zola/sprinkler/public), sam-developer + sam-devops (home_network/web_sites/*/dist) — see config for the full list.
  • Permissions (.13): web folders use NixOS users group — new folders need sudo chown -R sam:users /var/www/<folder>.
  • Secrets: ~/.config/environment.d/10-secrets.conf (env keys, kept out of the git-tracked Nix store).

Full hardware specs are in the frontmatter metadata.

Resource Pressure on .13 (verified 2026-10-05)

.13 is memory-bound, not CPU-bound. Load average is ~0.27 on 12 threads, but the 8.8 GB swap partition is 81% full. Before proposing anything that adds load to .13, check the swap. Full detail: Obsidian → 300 areas/360 Dev-Ops Network Computers/Resource Use — .13 CPU & RAM.md.

Consumer RAM + swap Notes
KDE Plasma session (~30 processes) ~2.4 GB Software rendering (GPU dead) + 28-day uptime
Docker containers (all) ~3.5 GB RSS voice_whisper 877 MB is the largest
litellm + headroom ~1.05 GB swap Idle; both fully paged out; redundant with OmniRoute
Dead Airflow logs 24 GB disk /home/sam/deployment/airflow/logs — nothing depends on it

Must stay on .13: Pi-hole :53, OmniRoute :20128/20129 (all pi LLM traffic), Mosquitto :1883 (Home Assistant on .30), the Borg backup target on /mnt/ubuntu_storage_3TB (.27 pushes daily at 04:00), Caddy :8000 + /var/www.

Corrections applied 2026-10-05: .13 runs KDE Plasma 6, not Niri. .13 disk device letters were wrong (root is /dev/sda2). Home Assistant is on .30, not .35 (.35 is sam-ubuntu1, the Caddy/docker app host). Pi-hole primary is .35; .13 is the replica (confirmed from nebulasync: PRIMARY=http://192.168.20.35, REPLICAS=http://192.168.20.13).

Pi Agent (uniform across machines)

  • Binary: nixpkgs pi-coding-agent 0.82.1 in home.packages on .27/.13/.51 (Nix-managed; npx wrapper + npm-global install removed 2026-08-05). Updates = nixpkgs flake bump + rebuild.
  • Assets: ~/.agents (git → Gitea pi-config on .35). Each machine has its OWN clone — update each machine's repo individually (git -C ~/.agents pull).
  • Global settings: ~/.pi/agent/settings.json — home.nix-managed on .27/.51; plain file on .13 (chmod 600, keys inline, outside any git repo). Same content: Gitea source (tavily-search, pi-config, pi-tool-display), skills (nixos-workflow), themes, prompts.
  • pi-tool-display: global renderer (0 tools, 0 token cost). pi-lsp-extension: per-project via /config-add ext pi-lsp-extension. See Obsidian → 350 AI → Pi Agent Extensions & Skills.md for details.