{"repo":"khoi/sand","free":true,"listed":false,"github":"https://github.com/khoi/sand","clone":"git clone https://github.com/khoi/sand.git","description":"Self-hosted Github Runner on ephemeral macOS VMs on Apple Silicon","language":"Swift","stars":24,"topics":["apple-silicon","ci","github-actions","macos","self-hosted","tart","virtualization"],"license":"MIT","category":"self-hosted-apps","readme_excerpt":"sand Self-hosted macOS CI Runners powered by Tart - Apple's Virtualization framework. Requirements - macOS 15+ running on Apple Silicon machines. - Tart installed and available in PATH - sand uses tart. it helps understanding tart before using sand (https://tart.run/quick-start/) Caveats macOS DHCP leases last 24 hours by default, causing IP exhaustion if you run more than 253 VMs per day. To reduce lease time to 10 minutes: Install Usage Local test suite To run the local bash e2e tests (no CI): These tests spin up real VMs and require tart , ssh , and sshpass on your machine. See Tests/README.md for environment overrides (image, timeout, SSH creds, etc). Start up on boot To make sand run on boot, u can leverage launchctl as an option 1) Create a LaunchAgent plist at /Library/LaunchAgents/io.khoi.sand.plist : 2) Load it (modern launchctl): Logs sand logs to macOS default logging system using os log . To see the log You can also write logs to a file: Configuration Create a config.yml and run the CLI with --config . GitHub Actions setup 1) Create a GitHub App and grant Self-hosted runners permission set to Read & Write at the organization level. https://docs.github.com/en/apps/creating-github-apps/registering-a-github-app/registering-a-github-app 2) Install the app on the organization or the specific repository you want to run against. 3) Download the private key and set appId , organization , repository (optional), and privateKeyPath in your config. GitHub Actions runner provi","default_branch":null,"files":null,"tree":[],"storefront":"/r/khoi","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/khoi/sand/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}