← projects
Home Lab

Home Lab

Builder & Operator

2007 — present

4 servers · 88 CPU cores · 800GB RAM · 64GB VRAM

ProxmoxHP ProLiantNVIDIA V100GrafanaClickHouseOpenTelemetryWireGuardHome AssistantFrigateDockerOpenWrt
2x DL380 G7 (24 cores each, 144GB RAM)
1x DL380 G9 (44 cores, 384GB RAM, 2x V100 32GB)
1x Mini PC (Home Assistant + Frigate)
Full observability stack

Why a Home Lab?

Cloud is great — until you're running AI workloads 24/7 and the bill becomes your biggest expense. I built a home lab to run Rivet (my AI assistant), experiment with local LLMs, host my own monitoring, and automate my home. The goal is self-sufficiency: own the hardware, own the data, control the costs.

The entire stack was built for under $3,000 using enterprise-surplus HP ProLiant servers. That buys a lot of compute when you're patient with eBay.

The Servers

pve1 & pve2 (DL380 G7): A two-node Proxmox cluster (we nicknamed the hosts CORTANA and JARVIS during a zero-downtime IP migration). Each box has dual Xeons, ~144GB RAM, and mirrored SSDs. pve1 holds infra LXCs (monitoring, Postgres, canary agents); pve2 hosts the Rivet agent mesh (Opus, Grok, Gemini, local) plus CI runners and legacy archives.

pve3 / GERTY (DL380 G9): The GPU node — dual E5-2699 v4 (44 cores), 384GB RAM, two Tesla V100 32GB cards. Runs vLLM for Deckard-40B, embedding experiments, and anything that needs tensor cores. Driver 580.x, CUDA 12.8 toolkit; full 240V PDU validation still on the checklist.

Mini PC: A small Intel box running Home Assistant and Frigate (NVR with AI object detection via a Google Coral TPU). Handles all the smart home logic and camera processing.

Networking

An OpenWrt router (Linksys WRT3200ACM) handles routing, DNS, and firewall. WireGuard VPN connects the home network to the production server and mobile devices. Everything is on a flat 10.4.20.0/24 subnet with static IPs for servers and DHCP for clients. Internal DNS gives human-readable names like rivet.home, grafana.home, and cam-driveway.home.

The production server (philtompkins.com) connects back over WireGuard so monitoring can scrape its metrics. DDNS keeps the VPN endpoint reachable as the home IP changes.

Monitoring & Observability

A dedicated container runs the full observability stack: Grafana for dashboards, ClickHouse for metrics storage, and an OpenTelemetry Collector that scrapes every host. Node exporters on all machines feed CPU, memory, disk, and network data. iLO health exporters pull hardware sensor data from the G7 servers — fan speeds, temperatures, power draw.

Logs ship to Loki for centralized searching. Alerts fire to Discord when things go wrong. The whole stack runs on about 4GB of RAM.

Smart Home

Home Assistant orchestrates everything: Tesla vehicle charging (via Fleet API with a self-hosted auth proxy), ecobee thermostat, Frigate-powered cameras with person and vehicle detection, an Eufy smart lock, and a Bambu Lab 3D printer. Seven automations handle things like smart charging schedules, welcome-home routines, and battery monitoring.

Frigate runs on the mini PC with a Google Coral USB TPU for real-time object detection. Two cameras (driveway and front door) stream 24/7 with motion-triggered recording and Discord notifications when a person or car is detected.

GPU Compute

The V100 pair serves local LLM inference via vLLM/1Cat-vLLM, with ongoing quantization and KV-cache tuning. Volta is picky about FP8 and compressed-tensors — W4A16 and speculative decoding paths are the practical wins. Eval artifacts live on shared storage so Rivet can compare runs without re-downloading weights.

Long term: local embedders for RivetOS memory, more agentic eval harnesses on CT114, and less spend on cloud inference for batch work.

What's Next

CPU upgrade for pve1 (X5690 processors arriving soon), 240V PDU installation for GPU power, local LLM hosting, and eventually a Tesla Solar Roof to offset the power draw. The long-term dream: a DL380 G11a with H200 GPUs, but that's a few product launches away.