Teams shipping iOS/macOS from Singapore, Japan, Korea, Hong Kong, US East, or US West eventually face the same routing question: which jobs belong in Xcode Cloud and which must run on a dedicated Apple Silicon Mac mini (M4 / M4 Pro) you control over SSH? This article gives a decision matrix plus a six-step hybrid runbook: split queue semantics from customization ceilings, then pin Archives, compliance evidence, and artefact egress to a named host in the right geography. You should finish able to write an auditable rule like “PR checks on Cloud, release Archives on Tokyo metal,” alongside our multi-region lease guide and runner hardening checklist.
sysctl profile reduces mystery failures.This article does not repeat the finance question answered in buy-vs-rent TCO; that guide covers CapEx vs OpEx, while here we cover execution-plane routing.
Teams often miss the hand-off surface: provisioning profiles and signing materials drift between pools unless you enforce a single governance story for keychains, match repositories, and ASC API keys. Your review template should force answers to whether both pools can import the same distribution certificate non-interactively and whether Archive failures classify as signing vs network within fifteen minutes.
The second hand-off is caching philosophy: hosted lanes reward clean rooms; dedicated hosts accumulate DerivedData and dependency caches. Track bytes written per thousand builds alongside queue minutes saved, or finance will see disks spike while Cloud invoices fall without a coherent ROI narrative.
Use the table as the first page of an architecture review packet. Attach evidence—workflow YAML, screenshots, audit IDs—not anecdotes.
| Dimension | Xcode Cloud (hosted) | Dedicated remote Mac mini M4 / M4 Pro (bare metal) |
|---|---|---|
| Operating model | Apple-managed; workflows stay inside Xcode / ASC | SSH/VNC; you own launchd/cron, runner labels, disk layout |
| Concurrency semantics | Tiered subscription plus shared pool behavior | You set parallel caps; neighbour noise ~0 on exclusive hosts |
| Image customization | Supported steps only; limited system-level installs | Any shell, Docker sidecars, extra agents (including OpenClaw Gateway) |
| Region placement | Follows Apple’s regional footprint | Pick SG/JP/KR/HK/US-East/US-West to hug Git, registries, ASC egress |
| Best initial fit | Standard schemes, TestFlight hooks, friendly onboarding | Heavy Archives, exotic signing, internal toolchains, named-host compliance |
Hybrid is not a shortcut: without a literal routing table, secrets and cache paths collide across pools. Document which branches default to which executor before buying another machine.
L1 PR smoke (light), L2 nightly integration (medium), L3 Archive + notary + upload (heavy); chart wall-clock percentiles, not averages.L3 to the best region using the proximity matrix.metal-m4 and archive-only; isolate secrets per repo following the runner checklist.Insert a 48-hour freeze between runner wiring and observability: never ship an Xcode upgrade and a routing rewrite in the same window, or triage becomes impossible.
If you already practice cross-timezone relay CI, bind overnight queues to dedicated pools while Xcode Cloud handles daytime fast feedback—provided artefacts carry commit hashes and signing-context fingerprints on the ticket, not only Slack narration.
# Illustrative routing sketch — replace regions with measured RTT
routing_rules:
- match: { branch: "release/*", job: "archive" }
target: dedicated_remote_mac
region_hint: ["jp", "sg", "us-east"]
- match: { branch: "feature/*", job: "unit-ui" }
target: xcode_cloud
L3 capacity or shorten lease feedback loops..xcarchive trees; mismatches concentrated in signing materials signal mixed keychain contexts.Extra Cloud quota masks queue symptoms without lifting customization ceilings. When you must sandwich proprietary compliance scanners before Archive—or colocate with production OpenClaw Docker layouts—hosted definitions force brittle workarounds.
Laptop runners fail on sleep, power, and audit: overnight jobs and keychain prompts rarely become SLA-backed infrastructure.
When you need exclusive Apple Silicon in six strategic regions, predictable leases split into baseline plus burst, and SSH-accessible hosts whose topology fits Archives and optional automation gateways, MACCOME cloud Mac mini nodes typically make hybrid routing measurable: cover Singapore, Japan, Korea, Hong Kong, US East, and US West with daily/weekly/monthly/quarterly combinations so heavy lanes land on metal while Xcode Cloud keeps lightweight validation lanes responsive.
New hires should read why PR jobs stay on Cloud while release Archives pin to JP metal. Keep ROUTING.md beside the lease placement guide.
Final five-minute checklist: secrets single-sourced? Burst leases mapped to finance codes? Without both, hybrid doubles operational folklore.
Add an explicit escape hatch: if Xcode Cloud fails the same cluster three times, temporarily route to dedicated hardware, file an RCA within 24 hours, and either codify the exception or roll back—otherwise dedicated pools become silent defaults and subscriptions waste away.
Read alongside SSH vs VNC access patterns: connectivity proves shell access, not routing correctness.
FAQ
We are tiny—do we still hybridize?
Start logically hybrid on one dedicated host: Xcode Cloud for PR, one remote Mac for Archives. Scale nodes or leases using the public rental rates page when concurrency demands it.
How often should we revisit the routing table?
At least quarterly against spillover, Archive deltas, and ASC logs; force a dual-pool rerun after every major Xcode bump. Billing and access nuances live in the help center.