How to install on macOS
Install via Homebrew
Section titled “Install via Homebrew”brew install boring-design/tap/elastic-fruit-runnerBuild from source
Section titled “Build from source”git clone https://github.com/boring-design/elastic-fruit-runnercd elastic-fruit-runnermake buildThe binary will be in output/elastic-fruit-runner.
Configure
Section titled “Configure”Create ~/.elastic-fruit-runner/config.yaml. See the configuration reference for all options.
mkdir -p ~/.elastic-fruit-runnerA minimal example:
orgs: - org: your-org auth: pat_token: ghp_xxx runner_group: Default runner_sets: # macOS runners via Tart VMs - name: efr-macos-arm64 backend: tart image: ghcr.io/cirruslabs/macos-tahoe-xcode:26.3 labels: [self-hosted, macos, arm64] max_runners: 2
# Linux arm64 runners via Docker - name: efr-linux-arm64 backend: docker image: ghcr.io/actions-runner-controller/actions-runner-controller/actions-runner-dind:latest labels: [self-hosted, linux, arm64] max_runners: 4 platform: linux/arm64
# Linux amd64 runners via Docker (Rosetta 2 emulation) - name: efr-linux-amd64 backend: docker image: ghcr.io/actions-runner-controller/actions-runner-controller/actions-runner-dind:latest labels: [self-hosted, linux, amd64] max_runners: 4 platform: linux/amd64
idle_timeout: 15mRun as a service (recommended)
Section titled “Run as a service (recommended)”brew services start elastic-fruit-runnerCheck status:
brew services info elastic-fruit-runnerStop:
brew services stop elastic-fruit-runnerRun manually (foreground)
Section titled “Run manually (foreground)”elastic-fruit-runnerWith a specific config file:
elastic-fruit-runner --config /path/to/config.yamlView logs
Section titled “View logs”Logs are written to the Homebrew log directory when running as a service:
tail -f /opt/homebrew/var/log/elastic-fruit-runner.logOn Intel Macs:
tail -f /usr/local/var/log/elastic-fruit-runner.logLogs are JSON-formatted. Use jq for filtering:
# Show only errorstail -f /opt/homebrew/var/log/elastic-fruit-runner.log | jq 'select(.level == "ERROR")'
# Show runner set activitytail -f /opt/homebrew/var/log/elastic-fruit-runner.log | jq 'select(.runnerSet != null)'When running manually, logs go to stdout.
Update
Section titled “Update”brew upgrade elastic-fruit-runnerbrew services restart elastic-fruit-runnerUninstall
Section titled “Uninstall”brew services stop elastic-fruit-runnerbrew uninstall elastic-fruit-runnerrm -rf ~/.elastic-fruit-runner