Change runs-on to hive and the job runs in a throwaway VM on a Mac your team already owns. Same workflows, same logs, same checks on the pull request. A 2 vCPU minute costs $0.00025 on your own Macs: 10× less than Blacksmith and 20× less than a GitHub-hosted runner.
.github/workflows/ci.yml
Your organization's hive, one cell for each Mac
GitHub still starts the workflow, streams the log and posts the check on the pull request. Inside the VM is GitHub's own runner, registered for one job. Hive Runner's part is to hand that job to a free Mac in your hive. It is not in the job's data path, and its GitHub App has no permission to read code, contents or secrets.
Jobs whose runs-on is not a hive label keep running where they run today. Switching one back is the same one line.
Laptops close. Put one step from the public hive-route action in front of a job and it asks whether a machine in your hive is free, waits up to fifteen seconds, and sets runs-on to hive or to the runner you use now. It never fails the workflow. A small hive cuts the bill for the jobs it can take and changes nothing for the rest.
A job sent straight to a hive label waits in GitHub's queue until a Mac is free, which suits jobs that can wait.
Each provider's list price for a 2 vCPU Linux arm64 minute, beside the same minute in a hive of your own Macs. The Hive Runner price is what is left after the machine's share comes back to your organization's wallet: 25% of the charge. There is no subscription, no seats and no platform fee. You pay per job, by the minute.
Each Mac in the hive keeps one VM booted while its lid is open. When a job arrives, that VM takes it. When the job ends the VM is destroyed and a fresh one boots for the next. actions/cache, and the setup actions built on it, save to and restore from the Mac that ran the job instead of from GitHub.
A runner provisioned on demand
A Mac in your hive
An organization owner installs Hive Runner on the organization. That creates the runner labels, a hive, and a wallet holding a trial credit.
hivehive-4cpuhive-8cpuEach developer installs the daemon and signs in with GitHub. Belonging to your GitHub organization is what lets a machine join the hive.
curl -fsSL https://get.hiveworkr.thecomputerplumbers.com/install.sh | shOne command, no password and nothing system-wide. What it installs
Jobs with a hive label run on your hive. Jobs without one are untouched, and switching back is the same one line.
Hive Runner has an MCP server. Connect Claude Code, Cursor or Codex and it can set up your hive, change the workflow and watch the bill. There is no API key: you sign in with GitHub.
claude mcp add --transport http --scope user hiverunner https://hiveworkr.thecomputerplumbers.com/mcpruns-on change, with a fallback for when no machine is free.hived pause stops them altogether, and hived config sets how many jobs run at once, how large, and during which hours.hive label waits in GitHub's queue until a Mac is free. The routed workflow above checks first and uses a GitHub-hosted runner when none is. A Mac nobody sits at can take jobs with its lid closed; hived doctor says what to set.hive-macos runs a job on a member's Mac itself, as a separate user, once the Mac's owner and your hive have both opted in. Docker is in every Linux VM, for docker build, services: and container:. Actions and container images a job uses need an arm64 build. Not yet: Windows and GPU jobs.Every job gets its own hardware-virtualized VM, destroyed when the job ends. The runner inside it talks to GitHub directly. Hive Runner assigns the job and is not in its data path.
A developer's Mac
Throwaway Linux VM
GitHub's runner, one job, then destroyed
Hive Runner daemon
Runs as your user, not root. No inbound ports.
The Mac's files and keychain stay outside the VM.
GitHub
The job, its logs and its artifacts
Hive Runner coordinator
Presence and job assignment. No job data
Every new organization starts with $5 of credit, and no card is needed. Route one workflow and leave the rest alone.