Docs / Lab Architecture

Lab Architecture

Logical architecture of the Home AI Lab — a Windows 11 host running Hyper-V VMs and WSL2 workloads, connected to a segmented LAN and extended into GCP via WireGuard VPN.

Home AI Lab architecture diagram showing REX host, Hyper-V VMs, WSL2 services, LAN infrastructure, and GCP extension

Click to open full size

Overview

The lab is built around a single high-spec Windows 11 host (REX) running AMD Ryzen 9 7950X3D with 128GB RAM and an RTX 5090 for local GPU inference. Hyper-V provides VM isolation; WSL2 provides a Linux environment for GPU workloads and MCP servers without the overhead of full VM virtualisation.

Layers

GCP

Two LiteLLM proxies present OpenAI-compatible endpoints for every model the lab uses — the Claude 5 family and Gemini via Vertex AI, and the local Gemma4 instance on REX. The private proxy runs on a GCE VM and is reachable only over the WireGuard tunnel; the public proxy runs on Cloud Run behind an external HTTPS load balancer with Cloud Armor, with direct run.app access closed so the load balancer cannot be bypassed. A WireGuard bridge VM connects the home network and GCP over a 10.99.0.0/30 tunnel, which also lets the private proxy route back to the GPU at home.

LAN

The core is a two-member Juniper EX3400-24P stretched virtual chassis — one switch in each of two rooms, presenting as a single logical device — carrying six VLANs: wired access, WLAN, guest, lab/VM, server, and the firewall transit link. The core is the L3 gateway and the DHCP server for every VLAN. OPNsense sits at the edge, handling WAN failover, NAT, DNS and the WireGuard tunnel; it does not route between internal VLANs. An Aruba 7010 controller manages three Wi-Fi 6 access points with per-SSID VLAN assignment and an isolated, internet-only guest role. The Synology NAS is authoritative for the internal DNS zone and is the backup target.

Host — Hyper-V VMs

  • KaliLinux — Monthly credentialed GVM/Greenbone vulnerability scans and daily MAC-keyed device discovery pulled from the core switch
  • UbuntuClaw — Homer, a Hermes Agent assistant with local Whisper ASR, Piper TTS and Telegram delivery
  • DebIdentity — Step-CA internal PKI and the Authentik identity provider (LDAPS for host authentication)
  • DebApps — Home Assistant, SearXNG, Traefik reverse proxy, and miscellaneous home services

Host — WSL2

  • vLLM — Gemma4-26B local inference with direct RTX 5090 CUDA access, serving gemma4-26b-a4b
  • MCP Servers — Four custom stdio MCP servers giving AI agents structured access to Juniper, OPNsense, Aruba, and Synology

Secrets

Lab credentials live in a single age-encrypted file on the host, decrypted per session. Values that unattended scheduled tasks need — a bot token, a copy of the read-only switch key — sit outside it as ACL-locked files, because a scheduled task cannot enter a passphrase.

Key Design Decisions

  • MCP servers use stdio transport — more reliable than SSE in Docker and proxy environments
  • LiteLLM proxies run in GCP, not locally — they survive local infrastructure failures and provide a stable endpoint regardless of lab state
  • The lab assistant runs on local inference only — no cloud provider, no proxy dependency, so it keeps working during an ISP outage
  • Infrastructure access is constrained by scoped credentials, not network position — read-only login classes and read-only MCP tools, with break-glass accounts kept local so an identity-provider outage doesn't lock the lab out
  • Alerting is silent when healthy — the daily health check messages only on problems, because a channel you have learned to ignore will fail quietly on the morning it matters

Known Compromises

  • No inter-VLAN ACLs. VLANs provide broadcast separation and legible addressing, not enforcement — internal east-west traffic is unfiltered. Raised in the June 2026 security audit and deliberately accepted for a single-occupant lab.
  • The virtual chassis backbone is the critical dependency. Both VC links run over copper transceivers that Junos manages as fibre optics and does not re-train after a loss of signal. A fabric split needs a member reboot, so a daily check alerts if fewer than four VC port-links are up.
  • Aruba management authentication is broken and costs ~20 seconds per login, including the MCP path, while its RADIUS server group times out before falling back to local auth.