macOS Xcode & Custom Images
Xcode version policy, custom macOS images, per-chip pinning, and Docker-on-macOS support for Tenki macOS Runners.
This page covers everything Xcode- and image-related on Tenki macOS Runners: what's on the default image, how to pin a specific Xcode version, how custom images work, and how to pull private Docker images from inside a macOS job.
Default image
Tenki macOS Runners use a single base image based on macOS 15 Sequoia. The image ships with the toolchain we recommend for the majority of iOS / macOS / cross-platform workloads.
If your workflow needs something the default image doesn't ship, we have two paths: custom labels (preinstalled toolchain) and custom images (your full image, baked by us). Both are available to customers with committed capacity.
Custom Xcode versions and per-chip pinning
Need to pin to a specific Xcode (e.g. xcode-26, xcode-18) or a specific chip generation? We can expose:
- Per-toolchain labels (e.g.
tenki-macos-xcode-26) so workflows can pin to a known Xcode version inruns-on:. - Per-chip / per-SKU labels so workflows can target a specific Apple Silicon generation when needed.
- Parallel availability of older Xcode versions alongside the latest, so you can roll Xcode forward at your own cadence.
These are scoped during onboarding and require committed capacity, they're a fit for teams who already know their target labels and concurrency profile.
Custom images
For teams whose iOS / Unity / cross-platform pipelines need a fully custom macOS image, proprietary tooling, internal SDKs, specific Xcode + simulator combinations, we can deploy your image to our fabric.
The custom-image path uses our standard build system (Packer-based, microVM compatible) and is available for both Linux x64 and macOS. Custom images are scoped during onboarding and tied to committed capacity.
Docker on macOS
Yes, a Tenki macOS Runner can pull a Docker image from a private container registry you operate. This is a common pattern for Unity iOS pipelines and cross-platform jobs that bundle native dependencies into a container.
You authenticate to your private registry the same way you would on any macOS runner (for example, docker login with credentials from GitHub Actions secrets), then pull and run as usual.
Image refresh cadence
When Apple ships a new Xcode (or an App Store submission cutoff lands), we work with custom-image / custom-label customers to schedule the rollout. Older Xcode versions remain available in parallel as long as your team needs them, we do not retire a version without prior agreement.
If you're on the default image and need an Xcode bump fast, email [email protected] and we'll prioritize the refresh.