Getting Started
This tutorial takes you from an empty Mac to one completed GitHub Actions job. You will also use the Console to see what the runner is doing.
What you need
Section titled “What you need”- A Mac with Apple Silicon
- Homebrew
- Tart
- A GitHub organization where you have admin access
- A GitHub Personal Access Token with Organization Self hosted runners read and write access
Install Tart before you continue:
brew install cirruslabs/cli/tartCheck that Tart is ready:
tart --versionYou should see a version number.
Install Elastic Fruit Runner
Section titled “Install Elastic Fruit Runner”brew install boring-design/tap/elastic-fruit-runnerCheck the installed path:
command -v elastic-fruit-runnerThe command should print the Homebrew binary path.
Create the config
Section titled “Create the config”Create the config directory:
mkdir -p ~/.elastic-fruit-runnerCreate ~/.elastic-fruit-runner/config.yaml with this content. Replace your-org and ghp_xxx with your own values.
orgs: - org: your-org auth: pat_token: ghp_xxx runner_group: Default runner_sets: - name: efr-macos-arm64 backend: tart image: ghcr.io/cirruslabs/macos-tahoe-xcode:26.3 labels: [self-hosted, macos, arm64] max_runners: 2
idle_timeout: 15mlog_level: infoElastic Fruit Runner checks the config when it starts. If a field is not valid, the local log names the field and the problem.
Start the service
Section titled “Start the service”brew services start elastic-fruit-runnerCheck the service:
brew services info elastic-fruit-runnerThe output should show Running: true.
Set up the Console
Section titled “Set up the Console”The first start writes a one time setup code to the local log.
grep '"msg":"console admin setup required"' /opt/homebrew/var/log/elastic-fruit-runner.log | tail -n 1Open http://127.0.0.1:8080. Enter the setup code, choose an admin password, and sign in.
The Overview page should show:
- One configured runner set
- The GitHub connection state
- No running job yet
- Current host resources
- Config state
In sync
Run your first workflow
Section titled “Run your first workflow”In a repository that belongs to the configured organization, create .github/workflows/test-efr.yaml:
name: Test Elastic Fruit Runneron: workflow_dispatch:
jobs: hello: runs-on: efr-macos-arm64 steps: - run: | echo "Hello from Elastic Fruit Runner" sw_vers uname -mOpen the Actions page in GitHub, select Test Elastic Fruit Runner, and choose Run workflow.
Watch the job
Section titled “Watch the job”Return to the Console and open Jobs. The new job moves through its lifecycle while the Tart VM starts and runs the workflow.
Open the job to see:
- Repository and workflow name
- Runner set and runner name
- Start and completion times
- Runner log
- Available resource data
- A link back to GitHub Actions
Confirm the result
Section titled “Confirm the result”Wait for the job to finish. The Jobs page should show Success.
Open the job in GitHub Actions. Its output should contain the macOS version and arm64.
You now have an elastic macOS runner and a working operations Console.