hearth is what I built to schedule every job on my homelab's GPU
Every scheduled job in my homelab runs through a platform I built called hearth, and one piece of it is a gateway that admits one job at a time to whichever machine happens to be running a model. It runs on the Pi, and it exists because nothing else that could do the job fit the hardware. Kubernetes-style orchestration (k3s, Nomad) carries its own memory tax, and the Pi was already sitting at 5…
In my homelab, I developed a system called hearth to manage GPU jobs. This platform features a gateway that controls job execution on each machine with available GPU resources. It runs on a Pi due to other solutions being too resource-intensive. Hearth's design focuses on memory management rather than throughput, utilizing a SQLite queue that maintains its state even after a reboot.
Each job has a priority, schedule, retry mechanism, and dead-letter path. If a job depends on a down component, it pauses instead of exhausting retries.
Jobs run inside their own systemd-run scope, with resource classes mapped to systemd slices for memory and CPU limits. An OOM condition only affects the job within its slice, not the entire host. The gateway records job durations, learning estimates from the worst recent run instead of an average. This helps avoid scheduling jobs too early based on old data. Hearth's scheduler uses the maximum recent duration to avoid under-promising, ensuring jobs are allocated enough time to complete.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.