The problem it solves
A one-person AI workshop needs three things from its infrastructure: services that survive bad experiments, capacity that matches actual workloads, and zero monthly rent for things it can own. Each generation of this lab optimized for those three — and each generation got leaner as the workloads got clearer.
Three generations
Gen 1 — the proof (repurposed workstation)
A used workstation tower with a 24GB enterprise inference card and a consumer GPU. The point of gen 1 was a single question: is local inference fast enough to build on? Answer: yes, at used-hardware prices. Everything since inherits from that experiment.
Gen 2 — the hypervisor era
The lab grew into a proper virtualization host: KVM virtual machines, a 32GB AI card passed through intact to a dedicated inference VM, a second node for embeddings and speech, mesh VPN for remote access. Full isolation for risky work, snapshots before every experiment. The full architecture essay documents this era — the reasoning there (why virtualize, how passthrough earns its keep, storage tiers) still holds even though the specific hardware has moved on.
Gen 3 — the consolidation (current)
The workload told the truth: the big card mostly sat between heavy jobs while the services that actually ran 24/7 needed almost nothing. Heavy reasoning had moved up-stack to frontier APIs, where it belongs. So the lab collapsed to one bare-metal node — same Xeon platform, 64GB RAM, one 4GB GPU handling embeddings/TTS/small models — running stable services directly instead of through a VM layer. Fewer moving parts, same output, no capability lost that the workload was using.
Design decisions that survived every generation
Isolation where it matters
Gen 2 did it with VM walls; gen 3 does it with process discipline, systemd isolation, and watchdogs. The principle never changed: experimental code must never share fate with production services. The mechanism just got lighter as the risk got better understood.
The GPU serves the workload, not the ego
A 4GB card sounds like a downgrade from 32GB until you look at what actually runs: embedding generation, text-to-speech, small models, vision helpers. Those fit. Frontier-scale reasoning rents by the token precisely when it's needed — that's the hybrid architecture working as designed, not a compromise. The 4GB ceiling is a feature: it forces right-sizing instead of model hoarding.
Self-hosted everything
Dashboards, forecast engines, agent infrastructure, DNS-adjacent tooling — if a service exists, it self-hosts. Storage included: the archive tier is owned disks, not a subscription.
// the lesson gen 3 exists to prove
Capability integrity beats hardware throughput. The impressive-specs era produced less running software than the lean era — because the bottleneck was never VRAM. It was matching every workload to the cheapest hardware that runs it well, and nothing more.
What it enables
Everything else on this site runs on this one node: the agent platform's cron jobs and memory system, the Fish Bite forecast engine refreshing on schedule, self-hosted dashboards in daily use. When a project needs a database, it gets one — locally, in minutes, no vendor form. When an experiment misbehaves, watchdogs catch it and services restart clean. That's operational leverage without operational theater.