Tags: 0 - Overview 0 - HomeLab
Running Status
Last updated: August 3, 2026
Live handoff snapshot of the build — what’s working, what’s proven end-to-end, and what’s next. Pairs with the roadmap for the long-term plan.
Cluster State
am4-gpu Ready <none> — bare-metal, 10.10.20.14, RTX 4070 Ti Super, nvidia.com/gpu: 1 allocatable
talos-cp-1 Ready control-plane — 10.10.20.11
talos-worker-1 Ready <none> — 10.10.20.12
talos-worker-2 Ready <none> — 10.10.20.13
Talos v1.13.6, Kubernetes v1.35.6, Cilium v1.19.5 healthy across all four nodes. Default CNI and kube-proxy disabled in favor of Cilium.
AI Inference Stack — Working End-to-End
The full chain is proven: GPU (driver + containerd + device plugin) → Ollama (in-cluster model serving) → LiteLLM (unified OpenAI-compatible gateway) → NodePort access.
- GPU enablement: kernel module + containerd NVIDIA-runtime patch, NVIDIA device plugin, and a CUDA test pod confirmed real hardware access (RTX 4070 Ti Super, 16GB VRAM) from inside a container.
- Ollama: deployed with
nodeSelectorpinning it toam4-gpu,runtimeClassName: nvidia, and aRecreaterollout strategy — required, since the cluster has exactly one schedulable GPU and a rolling update would otherwise try (and fail) to schedule a second pod requesting it. Currently servinggemma4:12b(~51% VRAM used, comfortable headroom for context growth). - LiteLLM gateway: routes the model name
gemma4-12bto Ollama’s in-cluster service DNS, exposed via a pinned NodePort (30400) as a stopgap until Gateway API / Tailscale access lands in Phase 2. Verified with a real/v1/chat/completionsrequest.
Not yet done: move the LiteLLM auth key out of a ConfigMap into a real Secret, add a Postgres backing store for per-tenant budgets, GPU time-slicing, additional models in the roster, and the Wake-on-LAN scale-to-zero controller.
Infrastructure as Code
- GitHub repository created and linked; initial scaffold and Terraform commits pushed
- Existing Talos VMs imported (not recreated) into Terraform state
terraform validatepasses,terraform planreturns “No changes” — zero drift against the live cluster- The AM4 GPU node is bare metal and intentionally sits outside the Proxmox Terraform config
The VM layer is genuinely under Infrastructure as Code now; remaining Terraform work is improving it (modules, variables, CI), not adopting it.
Bazzite Dual-Boot
Bazzite (gaming OS) installed on the AM4’s second drive, with the Talos SSD physically disconnected during install. After reconnecting and moving the machine back into the rack, all four cluster nodes came up Ready — confirming the dual-boot setup doesn’t disturb the Talos install. Secure Boot MOK key enrollment for the NVIDIA driver is still pending (a first password attempt didn’t match on confirm; safe to retry any time).
Immediate Next Actions
AI inference
- Move LiteLLM’s auth key into a real Kubernetes Secret
- Gateway API route or Tailscale access instead of the NodePort stopgap
- Load additional models (GLM-4.7-Flash, GPT-OSS 20B, Mistral Small 3.1)
- GPU time-slicing so multiple pods can share the card
- Postgres backing store once persistent storage (Longhorn) exists
- Wake-on-LAN scale-to-zero Go controller
Platform engineering
- Reusable Terraform VM module
- Encrypt Talos configs with SOPS
- Write the rebuild runbook
- CI on every push (
terraform fmt/validate/plan) - Begin ArgoCD bootstrap
Media server
- Harden qBittorrent credentials (still default/temporary)
- Verify
iptables-persistentsurvives an actual reboot - Wire up Prowlarr indexers → Sonarr/Radarr for full library automation
See Incidents & Lessons for the debugging stories behind several of the “done” items above.