Zoomies skill
A controller for self-hosted GitHub Actions runners with three skills and MCP: an agent debugs failed jobs and audits workflows
- 91 ★ on the repository
- Last commit
Extended access
Why this level
- The `zoomies` skill can change pools, hosts and runners, with rights limited by the token's role
- A self-hosted runner executes your repositories' code
- The install script sets up a service on the host
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/zoomiesDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The `zoomies` skill can change pools, hosts and runners, with rights limited by the token's role
- A self-hosted runner executes your repositories' code
- The install script sets up a service on the host
This is third-party code. Review the repository files before installing.
What it does
Zoomies is a controller for a fleet of GitHub Actions runners on your own machines: a single Go binary with SQLite, no Kubernetes and no database server. It watches the job queue, starts a fresh runner in a container for each job and destroys it afterwards. Control goes through a web UI, the `zoomies` CLI and a REST API. For agents Zoomies ships three skills. The `zoomies` skill teaches an agent to check fleet state, work out why a job failed or is waiting, and read or change pools, hosts and runners with the `zoomies` command or MCP tools. It reads freely, asks before changing anything and leaves host-reshaping commands to a person. The `zoomies-kennel` skill runs `zoomies kennel check` over `.github/workflows` on your machine with nothing sent out, summarizes findings (timeouts, version pinning, token permissions, `pull_request_target`, secrets on a command line) and fixes only the ones you choose. The `zoomies-optimise` skill reads the fleet's measurements for one slow job and names which of four workflow changes fits. MCP is served by the controller at `/mcp` with a token, or locally through `zoomies mcp`. The agent's rights are limited by the token's role.
Who it is for. Teams running their own GitHub Actions runners and home-lab admins who hand Claude Code the job of diagnosing failed builds and auditing workflows.
Good fit when
- A build hangs in the queue and you need to know whether runners, host capacity or matching labels are short
- Before release you audit `.github/workflows` for timeouts, token permissions and risky `pull_request_target`
- One job takes three times as long as the others and you want to know whether a dependency cache or a shallow checkout would help
- Claude Code is connected to the fleet over MCP with a read-only token to dig through runner logs
- You are moving from hosted runners to your own machines and want the whole picture in one interface
Not a fit when
- You only use GitHub-hosted runners: Zoomies manages your own hosts
- The agent should edit workflow files beyond the Kennel Club checks: the `zoomies` skill is not meant for that
- You want a Kubernetes operator: Zoomies runs as a single binary without Kubernetes
- You need Windows with containers: on Windows the agent runs jobs as processes, and support is not counted as qualified
Example request
Why is the acme/widgets build stuck in the queue? Check the fleet through zoomies and tell me what is missingLimitations
- Linux (amd64 or arm64) is required for the controller and agents, Docker or Podman for container backends, and a GitHub App on github.com. The installer creates the App itself.
- The Windows agent runs jobs as processes without containers, and the project's support matrix does not yet count it as qualified.
- GitHub Enterprise Server is covered by the configuration, but no test has run against it yet.
- A self-hosted runner executes your repositories' code, and the project's security page spells out the limits of the protection.
How to disable. Delete the `zoomies`, `zoomies-kennel` and `zoomies-optimise` folders from `.claude/skills/` and `.agents/skills/` to remove the skills. `claude mcp remove zoomies` disconnects MCP. The controller itself is stopped with Docker Compose or systemd commands, and the MCP token is revoked in the UI.
FAQ
How do I install the Zoomies skills in Claude Code?
Run `npx skills add eyupio/zoomies --skill zoomies --skill zoomies-kennel --skill zoomies-optimise`. It writes them to `.agents/skills/` and links them into `.claude/skills/`. By hand, copy a folder from `skills/` into `~/.claude/skills/`.
How do I connect Zoomies to Claude Code over MCP?
Run `claude mcp add --transport http zoomies https://zoomies.example.com/mcp --header "Authorization: Bearer zoo_..."`. A local variant without a token header is `zoomies mcp`.
What can the agent change in the fleet?
As much as the token's role allows. The `zoomies` skill reads freely and asks a person before changing pools, hosts and runners.
Do workflow files leave the machine during a Kennel Club check?
No. `zoomies kennel check` parses `.github/workflows` on your machine and sends nothing anywhere.
How is Zoomies different from actions-runner-controller?
Zoomies is a single Go binary with SQLite and a web UI that runs without Kubernetes. The comparison with ARC has its own page in the project docs.
Discussion
No questions or reviews yet.
Related
SkillsThe cronstable job scheduler exposes its jobs, run history and schedule debugging to an agent through MCP.
GitHub Actions workflows run on your machine, and a failing step pauses so the agent can fix the file and retry it.
maintenant monitoring MCP server: an agent reads container logs, check history and alerts but never touches the containers
A secure MCP runtime through which an agent operates local machines, servers and containers
A collection of Copilot skills and agents for Azure, API Management, Terraform and diagrams, installed via the skills CLI or APM
An MCP server in Go: an agent reads pods, logs and events of a Kubernetes cluster, changes resources and runs commands in pods
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| Zoomies (this card) | no | 91 | ||
| GitHub MCP Server | no | key is optional | 34,418 | GitHub's official MCP server for repositories, issues and runs, with no management of your own runners |
| GitHub Agentic Workflows | no | 5,625 | agentic workflows inside GitHub Actions, while Zoomies works with a fleet of self-hosted runners |
README in short
The README presents Zoomies as a free runner controller with one-job containers and a live web UI. It covers features (elastic CPU and memory, backups, safe defaults), install by script and Docker Compose, the CLI, MCP and the three skills. It ends with requirements and building from source.
README badge
Original SKILL.md
--- name: zoomies description: Look after a Zoomies self-hosted GitHub Actions runner fleet from a coding agent. Check its health, find out why a job failed or is waiting, and read or change pools, hosts and runners, with the zoomies command or its MCP tools. Use when the user asks about their Zoomies fleet, self-hosted runners, queued or failed CI jobs, pools, hosts or capacity. Not for editing workflow files, and not for changing GitHub itself (use gh). --- # Zoomies Zoomies runs a fleet of ephemeral GitHub Actions runners on the user's own machines. This skill is for asking that fleet questions and, when the user says so, changing it. Everything it needs is the `zoomies` command or the Zoomies MCP tools; there is no other way in, and neither can do more than the token behind it. ## Where each question goes | The question is about | Use | | --- | --- | | The live fleet: jobs, queue, pools, hosts, runners, capacity, what is wrong | `zoomies`, or the Zoomies MCP tools when they are connected | | GitHub itself: a workflow run, a pull request, a repository setting | `gh`, not Zoomies | | A workflow file in a repository | Read the file. The `zoomies-kennel` skill checks it for what Kennel Club looks at, and `zoomies-optimise` works out why a job is slow and which preview fits; both are separate installs that the person makes, with the command in the project's README | | Installing, configuring or upgrading Zoomies | The documentation at https://zoomies.sh, and the user's own hands | ## Preflight Run `zoomies status` before anything else. It names the controller when all is well. When the Zoomies MCP tools are connected instead, `fleet_status` is the same check and the command is not needed. When it does not, stop and say which of these it is, and do not try other commands to get round it: * **Not installed.** The shell says `command not found`. Tell the user; do not install anything unasked. * **Not set up.** `no controller URL`. Ask the user for the controller's address. They set it with `ZOOMIES_URL`, `--url`, or `url:` in `~/.config/zoomies/cli.yaml`. * **Not signed in.** The controller rejected the request (401), or the token's role is not enough (403). The user makes a token with `zoomies tokens create` and sets `ZOOMIES_TOKEN` themselves; never ask for a token to be pasted into the conversation. * **Not reachable.** `cannot reach the controller`. The address is wrong, the controller is down, or something blocks the port. ## Reading the fleet Ask for `--output json` whenever you will read the result yourself, and `--help` on any command for its flags and an example. The complete list of