Self-hosted GitHub Actions runners, without Kubernetes
Zoomies is a free, open-source (AGPL-3.0) controller for self-hosted GitHub Actions runners. It watches for queued jobs, starts a fresh ephemeral runner container for each one, and destroys it when the job finishes. That means no leftover state between jobs and no static runners sitting idle.
It is a single Go binary with SQLite for state, so it needs no Kubernetes cluster or database server. On one machine, the controller runs its own agent, so the whole system is one process and one database file. When you need more capacity, you add hosts: agents connect outbound to the controller, so a machine behind NAT needs no inbound firewall rule.
Zoomies authenticates as a GitHub App, scales from webhooks, and runs runners on Docker, Podman or as bare processes. It can also rent machines from an infrastructure provider such as a Proxmox cluster. A live web UI shows every runner, host and pool, and explains why a job is waiting. Claude can also use its API through MCP.
To move off static runners, the migration tooling rewrites your workflows’ runs-on lines, so you don’t have to rebuild your CI.
The controller and agents run on Linux (x86-64 and arm64). A Windows x86-64 host can join as an agent and run jobs as processes, with one PowerShell command from the web UI. Runner images are Linux-only, and there is no macOS runner image. The support matrix on zoomies.sh separates what has been tested from what merely builds.
Install with one command: curl -fsSL https://zoomies.sh/install.sh | sh. Add -s -- --demo after sh to try it with a sample fleet and nothing installed.
No comments or reviews, maybe you want to be first?