Every hour earns or learns

A GPU farm in the polder.

Data-centre GPUs on my own home fleet. When someone on Vast.ai wants them, they rent them by the hour. When nobody does, the same cards run and train our own models: the local LLM behind Carddex's listing classifier, and the small student models distilled from it.

Screenprint of goats running a GPU farm in a timber polder barn: server racks between hay bales, copper coolant pipes in the rafters, one goat carrying a graphics card in its mouth, and a windmill and low sun through the open doors.
2
rigs, both on a UPS
3
fallback tiers for our own work: GPU, Apple silicon, wait
95%
of cards rented, last week of October
0.97+
host reliability score on Vast.ai
~15 s
to fail over to LTE when the fibre drops
0.6B
parameters in the student model now in shadow

Operational numbers from October 2026. The farm's books stay off this page.

Two jobs for one card

Renters first, our own models in the gaps.

A card earns its keep by the hour, and spends every hour nobody pays for on our own work. Nothing sits idle, and a paying renter never waits.

Goats at an install bench: one carries a graphics card in its mouth by the bracket, another drives a screw.

Rented by the hour

The cards are listed on Vast.ai, a marketplace where anyone can rent a GPU by the hour. Renters get a sandboxed container behind a dedicated firewall, and my own network never sees them. A pricer sets the asks against a market view I collect myself, with bandwidth and disk priced on their own, because renters choose on the GPU and disk price.

Vast.aiSandboxed tenantsMarket-priced
The night shift: two goats watch dashboards of wave lines and dials while a third sleeps on top of a warm rack.

Our own LLM when it's idle

The farm bids for its own spare cards at a floor price: a paying renter always outbids it, and whatever is left serves an open-weights Qwen model on vLLM. That model reads Carddex's marketplace listings and classifies them — language, condition, what's really for sale — with no per-token bill. When every card is rented, the work moves to Apple silicon, and after that it simply waits.

vLLMQwenLocal-first
Maintenance day: under a lantern, a goat lifts a memory stick out of an open server by its teeth while another works the bellows.

Teacher and student

The big model labels; a 0.6-billion-parameter student learns from its consensus, so the everyday work can one day run on far smaller hardware. Every candidate is scored on hand-checked gold sets and tracked in MLflow, and a model is only licensed when a statistical lower bound on its accuracy, over at least 150 checked samples, clears 90%. The current student runs in shadow next to the teacher until it earns that.

DistillationMLflowGold sets
The cooling wall: one goat on a ladder bleeds copper radiators, another checks a joint, and a third stands in the warm air from a giant fan.

Uptime is the whole game

Vast ranks hosts on reliability, so a minute dark costs days of score. Renter traffic lands on a static IP at a small cloud edge and comes home over WireGuard; when the fibre drops, LTE takes over in about 15 seconds. Both rigs sit on a UPS, and probe tunnels on other paths tell a home-network fault from a tunnel fault.

WireGuardLTE failoverUPS
What runs where

Who gets a card, in order.

  • Renters — on demand, by the hour, and always first in line.
  • The production LLM — Carddex's listing classifier, on whichever cards are free, with Apple silicon as the fallback.
  • Training and sweeps — a serial job queue that waits for a free card, survives a reboot, and records every run in MLflow.
Same discipline, more watts.

The farm runs on the habits I bring to clients: everything as code in Proxmox, Ansible and Terraform, deployed through pipelines with a manual gate, monitored, and measured before anything changes, prices included. It's also where I learn, the hard way, what a GPU platform really needs: a power supply that survives a load spike, a tunnel that survives a flaky line, and a queue that survives a reboot.