Zoomies.sh Zoomies.sh launched as a free, open-source AGPL-3.0 self-hosted GitHub Actions runner controller that runs as a single binary on SQLite without Kubernetes, starting a fresh ephemeral container runner for each job and scaling across user-owned hosts. The tool includes a live web UI with fourteen pages covering live jobs, runner logs, host health, queue waits and scheduler reasons, plus an "Ask Eli" assistant and Model Context Protocol (MCP) connections that let Claude or other MCP clients read job history, failure explanations and runner logs, with opt-in Eli PR repairs that publish changes to an existing PR branch but never merge. Installation runs via a curl script on Linux with Docker or Podman, requiring a GitHub organization or repository the user administers. Free · open source · AGPL-3.0 GitHub Actions runners on machines you own. ¶ github-actions-runners-on-machines-you-own Zoomies is a self-hosted GitHub Actions runner controller: one binary, SQLite, no Kubernetes. Put your cloud VMs, office servers or home lab to work. It starts a fresh runner for each job, scales across your hosts and shows you what is happening in one live web UI. Ask Eli about your builds, or connect your own AI assistant through MCP. Run your first job quickstart/ Try the live demo https://demo.zoomies.sh/ curl -fsSL https://zoomies.sh/install.sh | sh Start on Linux with Docker or Podman and a GitHub organisation or repository you administer. Explore the live demo without signing in, or run the local demo quickstart/ just-looking without GitHub credentials. Read the installer first quickstart/ 1-install . Choose your next step ¶ choose-your-next-step New to self-hosted runners? ¶ new-to-self-hosted-runners Learn what a host and pool do, connect GitHub, then run one trusted workflow. Moving an existing workflow? ¶ moving-an-existing-workflow Preview runs-on changes and try one repository before expanding the fleet. Already operating a fleet? ¶ already-operating-a-fleet Size capacity, measure queue waits, tune resources and automate operations. Ask your fleet. Understand your builds. ¶ ask-your-fleet-understand-your-builds Investigate a failed test, find why a job is waiting, or work out whether a build needs more memory or a smaller runner. Zoomies gives assistants access to the job evidence and fleet measurements behind those questions. Eli, right where you work ¶ eli-right-where-you-work Press Ask Eli on a job, host, pool or problem. With fleet access enabled for your chosen model, Eli can read job history, failure explanations, available runner logs and measured sizing advice, then explain what to try next. Its answer shows what it looked at. “Why did this job fail, and what should I try next?” Use a local or hosted model you choose. Explore the built-in fixture provider in the local demo quickstart/ just-looking , without an account or API key. Your assistant, connected over MCP ¶ your-assistant-connected-over-mcp Bring the same live diagnostics into Claude or another Model Context Protocol client. Compare queue waits, runner sizes and usage; with separately granted AI Context access, read the verified workflow source behind a job. “Compare this workflow's runner sizes and show the evidence for a better fit.” Start with read access. Operator connections can also re-run jobs, drain runners and adjust capacity, within the role you grant. From a failed check to a fix: opt-in Eli PR repairs eli/ set-up-pr-repairs can investigate failed jobs, publish changes to the existing PR branch and watch GitHub's checks. Choose when repairs run and which provider pays; Eli never merges the PR. Chat itself diagnoses and advises without changing the fleet or repository. Try Eli in the local demo quickstart/ just-looking Troubleshoot jobs and improve builds troubleshooting/ investigate-jobs-with-eli-and-mcp What you get ¶ what-you-get See why a job is waiting ¶ see-why-a-job-is-waiting Fourteen pages, one job each: live jobs, runner logs, host health, queue waits and scheduler reasons. Tour the UI ui/ or diagnose a queued job queued-job/ . A fresh runner per job ¶ a-fresh-runner-per-job Ephemeral container runners take one job, then their containers and workspaces are removed. GitHub App authentication supplies single-use registrations. Understand the boundaries security/ . Scale across your machines ¶ scale-across-your-machines Pools define labels, runner sizes and limits. Agents contribute capacity from eligible hosts and connect outbound to the controller. Hosts and pools hosts-and-pools/ . Use spare resources ¶ use-spare-resources Optional elastic CPU elastic-cpu/ lends spare CPU to busy runners. Elastic memory elastic-memory/ can raise a memory limit when there is headroom. Observe first, then tune from measurements. Keep useful build caches ¶ keep-useful-build-caches Optional host-local caches preserve selected downloads and build data outside the disposable workspace. Add a cache persistent-caches/ with a workflow recipe that also works on a cache miss. Operate through open interfaces ¶ operate-through-open-interfaces Use the CLI cli/ , API api-surface/ , Prometheus metrics metrics/ and backup tools backup-and-restore/ alongside the UI. Keep the database and its matching encryption key recoverable. How it works ¶ how-it-works Connect a GitHub App to your organisation or to a repository on your personal account. A pool advertises the runner label your workflow requests. Zoomies sees queued work through webhooks, with polling as a fallback, and provisions capacity on a host that can run it. GitHub assigns the job to the runner. flowchart LR q "GitHub job queued