← Docs / Lab Architecture

Lab Architecture

Logical architecture of the Home AI Lab - a Windows 11 Pro host (REX) running WSL2 GPU workloads and Hyper-V service VMs, connected to a six-VLAN Juniper core network and extended into Google Cloud over WireGuard VPN.

Home AI Lab 16:9 architecture diagram showing 1. Google Cloud Extension, 2. Home Network (LAN), and 3. Host: REX (WSL2 and Hyper-V)
Click diagram to open full-size SVG
Cloud & VPN LAN & RADIUS Local GPU LLM Voice & Discovery Stdio MCP

Overview

The lab centres on a single high-spec Windows 11 Pro workstation (REX) running an AMD Ryzen 9 7950X3D with 128GB RAM and an NVIDIA RTX 5090 (32GB VRAM) for local inference. Hyper-V isolates five always-on Linux service VMs, while WSL2 runs the local GPU inference engine, interactive coding agents, and stdio MCP servers without full VM virtualisation overhead.

Zones & Layers

1. Google Cloud Extension

Two LiteLLM proxies expose unified OpenAI- and Anthropic-compatible endpoints across roughly three dozen models - the Claude 5 family, Gemini via AI Studio with automatic Vertex AI failover, partner open-weights models on Vertex, and the local Qwen3.8 instance on REX.

  • LiteLLM Private (GCE · nginx · Redis) - Reachable only over the site-to-site WireGuard tunnel. Interactive coding agents on REX route through this endpoint by default.
  • LiteLLM Public (Cloud Run · Cloud Armor) - Sits behind an external HTTPS load balancer and Cloud Armor WAF, with direct run.app ingress disabled so the load balancer cannot be bypassed.
  • WireGuard Gateway - GCE endpoint terminating the site-to-site tunnel from OPNsense, allowing the private proxy and wearable relay to reach local lab services cleanly.
  • Wearable Voice Relay (Cloud Run · WSS Bridge) - Stateless WebSocket bridge that authenticates a Google Glass Enterprise Edition 2 headset and forwards voice turns over the VPN to VoiceGW.

2. Home Network (LAN)

The core is a two-member Juniper EX3400-24P stretched virtual chassis - one switch in each of two rooms, operating as a single logical switch. It carries six VLANs (wired access, WLAN, guest, lab/VM, server, and firewall transit), acts as the L3 gateway and DHCP server for every subnet, and runs 10GbE jumbo frames on the storage path between REX and the NAS.

  • OPNsense Firewall - Sits at the WAN edge handling dual-WAN failover, NAT, Unbound DNS, local CrowdSec threat blocking, and both site-to-site and road-warrior WireGuard tunnels. It does not route between internal VLANs.
  • Aruba 7010 WLAN - Manages three Wi-Fi 6 access points with static channel plans, a dedicated 5 GHz RF air monitor radio, per-SSID VLAN assignment, and an isolated internet-only guest role.
  • Synology NAS - Authoritative internal DNS server, primary off-host backup target over 10GbE, and Synology VMM hypervisor hosting two lightweight Debian utility VMs (an out-of-band jump box and an off-host cloud sync worker).

3. Host: REX - WSL2 (Local GPU & Tooling)

  • vLLM Engine (Qwen3.8-27B NVFP4 · RTX 5090) - Serves mixed FP8/NVFP4 local inference with direct CUDA access to the RTX 5090 and a host firewall rule blocking outbound internet egress from the inference environment.
  • AI Coding Agents - Interactive sessions (Claude Code, Gemini CLI, Antigravity) routing cloud model traffic through LiteLLM Private and falling back to local vLLM when needed.
  • MCP Servers (Read / Write Split) - Five custom stdio infrastructure MCP servers (Juniper, OPNsense, Aruba, Synology, and camera/alarm telemetry). Default sessions load the read-only instances (backed by read-only device accounts), while mutating tools live in separate write-enabled instances loaded only in explicit admin profiles.
  • Secret Vault (age · Session Key Cache) - Lab credentials live in a single age-encrypted file managed via a custom CLI. It caches the decrypted key in the OS credential store per session and injects secrets straight into child process environments - keeping plaintext .env files off disk and out of AI session logs.

3. Host: REX - Hyper-V VMs

  • VoiceGW VM - Dedicated local speech gateway running faster-whisper STT and Coqui VITS TTS for Home Assistant and the Google Glass EE2 wearable client, calling local vLLM for conversational replies.
  • UbuntuClaw (Homer) - Hermes Agent assistant running a deterministic --no-agent 7am morning health report, a two-stage Piper + RVC voice clone pipeline, and Telegram delivery.
  • DebApps VM - Hosts Home Assistant, SearXNG, the Traefik reverse proxy, Uptime Kuma monitoring, appliance bridges, and the internal lab portal.
  • DebIdentity VM - Runs the Step-CA internal ACME certificate authority and the Authentik identity provider (LDAPS for Linux hosts and role-mapped RADIUS for network gear).
  • KaliLinux VM - Runs monthly credentialed Greenbone/GVM vulnerability scans across all six VLANs and a 6.40am MAC-keyed device discovery job that pulls ARP/DHCP state from the Juniper core and spools new-device diffs to UbuntuClaw.

Key Design Decisions

  • Stdio MCP with a hard read/write split - Default agent sessions cannot mutate infrastructure even if prompted to, because the mutating tool definitions are not registered in the default servers.
  • Cloud-hosted model gateways with local fallback - Running LiteLLM in Google Cloud keeps coding agents working during local host reboots, while the WireGuard tunnel lets the private proxy route to local vLLM when desired.
  • Deterministic scheduled checks - Cron jobs gather facts and check thresholds directly in Python and bash, reserving the local LLM for interactive conversations rather than burning GPU watts on green status checks.
  • Scoped credentials over network position - Infrastructure access relies on role-mapped RADIUS and read-only login classes, with local break-glass accounts retained so an identity-provider outage never locks the lab out.
  • One morning report plus edge-triggered critical alerts - Outside the 7am summary, messages fire only when a monitored service transitions state.

Known Compromises

  • No inter-VLAN ACLs on internal east-west traffic. VLANs provide broadcast separation, internet egress blocks for cameras and IoT devices, and guest isolation, not full east-west segmentation - internal lab routing on the core switch is unfiltered. I raised this in the June 2026 security audit and deliberately accepted it 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 the daily morning check verifies that all four VC port-links are up.