Get started
Set up with your agent
One prompt. The agent does the rest and asks you only when GitHub needs a person.
The prompt#
Paste this into Claude Code, Codex or Cursor, in the repository you want to run on this machine. It is the same prompt the button on the home page copies.
Set up Buildhound (https://buildhound.sh) so this repository's GitHub Actions jobs run on this machine.
1. Run `npx buildhound setup` to install the Buildhound skill and MCP server for you.
2. Connect this machine: `npx buildhound runner add --org <owner of this repository> --label macos --yes` (use `--label linux` on Linux). If it returns needs_human, give me the link and wait until I say it is done.
3. Once the machine is connected, on a new branch change `runs-on: macos-latest` in this repository's workflows to `runs-on: ${{ vars.BUILDHOUND_MACOS || 'macos-latest' }}`, and `runs-on: ubuntu-latest` to `runs-on: ${{ vars.BUILDHOUND_LINUX || 'ubuntu-latest' }}`, then open a pull request. If the repository is public, use `runs-on: ${{ ((github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || github.event_name == 'merge_group' || github.event_name == 'release') && vars.BUILDHOUND_MACOS || 'macos-latest' }}` and `runs-on: ${{ ((github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || github.event_name == 'merge_group' || github.event_name == 'release') && vars.BUILDHOUND_LINUX || 'ubuntu-latest' }}` instead, so pull requests from forks and jobs anyone on GitHub can start stay on GitHub-hosted.
Docs: https://buildhound.sh/docsWhat the agent does#
- Runs
npx buildhound setup, which installs the Buildhound skill and MCP server for the agents it finds on the machine. - Runs
npx buildhound runner addfor your account, which registers this machine and starts the agent that takes jobs. - On a new branch, changes
runs-onin your workflows to the routing expression and opens a pull request. Nothing is committed to your default branch.
The one step that needs you#
GitHub asks a person to install the GitHub App. When that is needed the command returns needs_human with one URL; the agent hands it to you, you click through, and the agent carries on. Joining a pool, marking a machine as trusted and routing jobs that use secrets also need a person, by design.
Check it worked#
Linux jobs in that repository run on your machine within minutes of the prompt. macOS jobs follow once the Mac has built its image, a one-time step that takes a while. To see the machine and its jobs:
npx buildhound runner status --org <owner>