Skip to content
active

Homelab

AI-focused distributed homelab in a 10-inch mini rack — nine devices, every one on the Tailscale mesh, running agents, automation, backups, and staging.

Ubuntu Server · Proxmox VE · Docker · Tailscale · systemd · restic

A distributed homelab where each device has a dedicated role, connected via Tailscale mesh networking. Housed in a 10-inch mini server rack. It’s the runtime for my AI agent infrastructure — Zarq, Agent-PKM, Pulse, and the automation stack all live here.

Devices

DeviceRoleStatus
MSI CubiProduction hub — n8n, Obsidian sync, Zarq MCP, Agent-PKM, dashboard (always-on, headless)Deployed
Beelink EQ14Proxmox VE lab — first guest is a staging n8n containerDeployed
ThinkPad T430sMonitoring server — Uptime Kuma + PortainerActive
X1 CarbonAI dev and orchestration hubActive
Legion 7iAI compute (RTX 4090, Ollama), on the mesh from WSL2 tooActive
Raspberry Pi 5Backup server — restic REST with nightly fleet snapshots + offsite mirrorActive
Raspberry Pi 4BNetwork utility — AdGuard Home DNSActive
MacBook NeoMobile dev laptopActive
Synology NASRetired — PSU failure, backup duty moved to the Pi 5Retired

Network

The target topology is a UniFi stack — Dream Router 7 into two USW-Lite-8-PoE switches with the rack hanging off the second. The Dream Router 7 developed a hardware fault in June 2026, so the lab is temporarily flat on the ISP gateway while a replacement is sorted. In practice it barely matters: everything is addressed by Tailscale name, not LAN IP.

Two operating rules came out of the network’s failures:

  • All fixed addresses are DHCP reservations in the controller, never statics on the device — learned when a subnet migration stranded every hardcoded box.
  • Tailscale names over LAN IPs, always — learned when the router died and the DHCP leases drifted.

As of July 2026, every powered device is on the mesh, hardened to a uniform baseline: single noah login, key-only SSH, and unattended security patching across the fleet.

Services Running

ServiceHost
n8n (production automation)MSI Cubi
Obsidian headless sync (2 vaults)MSI Cubi
Zarq MCP + Agent-PKMMSI Cubi
Control Deck dashboardMSI Cubi
n8n (staging, Proxmox LXC)Beelink
Uptime Kuma + PortainerThinkPad T430s
restic REST backup endpointRaspberry Pi 5
AdGuard Home DNSRaspberry Pi 4B
Ollama (local LLM)Legion

AI Architecture

The homelab is where my agents actually run:

  • Hermes — Ops engineer agent on the Cubi. Infrastructure management, deployments, documentation, and the Discord gateway.
  • Ping — Personal AI companion on Telegram and Discord, wired into the PKM.
  • Zarq — Idea-to-merged-code engine; its MCP server on the Cubi gates my GitHub issue workflow with per-caller attribution.
  • Agent-PKM — Agent-readable knowledge base synced from the Obsidian vault; every agent queries it for context.

Control Deck

A CRT-styled live dashboard served off the Cubi. Two loops keep it honest: a doc loop that regenerates dashboard data from the repo’s markdown (README, decision records, build log) on every push, and a status loop where a poller probes every device and overlays live up/down state and latencies every 30 seconds.

Build Journal

Started February 2026 with the rack assembly and Cubi upgrades (32GB RAM + 1TB NVMe); n8n was in production by March and the network rebuilt on UniFi in April. June was the stress test: the router died, the NAS lost its PSU, and the response became a fleet-wide hardening pass — unified logins, key-only SSH, auto-patching, and the last LAN-only boxes joined the mesh. July put the idle hardware to work: the Pi 5 became a real backup server (restore drill passed, offsite mirror to cloud storage), the Beelink got its first Proxmox guest as an n8n staging environment, and the Pi 4 took over ad-blocking DNS. Decisions are recorded as ADRs in the repo — 27 and counting.