2026 Mac Mesh Build Pools
Dedicated, Shared, Burst and CI Queue SLOs

Three pool models · Queue SLOs · Symptom matrix · Six-step runbook · FAQ

2026 Mac Mesh dedicated shared burst pool selection

Tech leads, DevOps owners, and platform leads who must defend CI queue SLOs often debate during scaling: dedicated nodes versus shared rotation, when to add burst capacity, and how long p95 wait means a real capacity deficit. This article names who faces which problem when a Mac Mesh links remote Macs yet lacks a shared vocabulary for isolation, idle cost, and queue observability; then states the outcome: use three pool boundaries, 13-week rolling SLOs, and a symptom decision matrix so adding machines becomes auditable instead of intuitive. You get a hidden-tax breakdown, three-pool table, SLO metrics, six-step runbook, hard thresholds, and sizing matrix. Cross-read seat locks and mutex, Merge Queue routing, buy-vs-rent TCO, shared build pool topology, artifact fan-out, and private mesh access; order nodes via the order page and help center.

01

Five hidden taxes in Mac Mesh build pools: from idle machine-hours to false starvation

Linking remote Macs into a mesh does not automatically yield contract-grade CI capacity. These five recurring taxes slow delivery more than adding another runner.

  1. 01

    Measuring success by machine-hours: counting uptime while ignoring successful builds per month and queue p95—so dedicated nodes sit idle yet look “sufficient.”

  2. 02

    No isolation SLO on shared pools: DerivedData, keychains, and login sessions bleed across tenants as noisy neighbors instead of traceable misconfigurations.

  3. 03

    Burst without caps: elastic peaks become unauditable month-end surprises, and sharing labels with Merge Queue amplifies starvation.

  4. 04

    Label mismatch masquerading as shortage: deep queues with runner CPU under 40% usually mean job→runner affinity errors, not a true capacity deficit.

  5. 05

    Cross-region RTT plus seat hoarding: network-heavy steps retry more above ~150ms RTT while seats stay booked without entering the SLO denominator.

Deliverables: three-pool dictionary, 13-week wait/complete dashboards, shared-pool isolation counters, and a one-page burst preemption policy. Skip any of these and “scale the mesh” should not be an OKR.

Next: a table aligning Dedicated, Shared, and Burst by lease semantics, billing unit, and interruptibility.

02

Table: how to bound Dedicated, Shared rotation, and Burst elasticity

These pools are not marketing labels—they are lease semantics, billing units, and interruptibility combined. Print the matrix and pick one default for the quarter.

PoolLease & isolationCost profileBest forMain risk
DedicatedSingle-tenant lease; best cache localityHigh idle cost; predictable billsRelease trains, signing hosts, complianceFeels like CapEx when underutilized
Shared rotationTime-sliced multiplex; needs seat locksOften lowest cost per successful build/monthDaily PRs; default for small teamsnoisy neighbors
BurstPreemptible; short leasePeak delay traded for marginal costTimezone batches, release weeksRunaway bills without caps

Bottom line: every job class must answer interruptibility and weeks of cache locality needed. If not, do not enter shared rotation.

Section three aligns queue SLOs with the symptom matrix so label mismatch is not mistaken for shortage.

03

Queue SLOs and symptom matrix: measure before waiting, scale before guessing

Minimum metric set (13-week rolling): Wait SLO (enqueue→assign p50/p95/p99), Complete SLO (standard job wall time), Isolation SLO (shared-pool failures from neighbors).

SymptomRunner CPULikely causeFirst action
p95 wait >15 min sustained>78%Real capacity deficitAdd Dedicated or split pool
High wait, peaks only<40%Label mismatchAudit job→runner affinity
Queue oscillates hourly55–70%Timezone batchesTime-shift jobs or burst pre-book
Disk latency alertsanyDerivedData churnCache key generation

After aligning seat locks, you can split wait into real queueing versus lock starvation.

04

Six-step runbook: from SLO definition to attaching burst to Mac Mesh

  1. 01

    Freeze the three-pool dictionary: document lease, billing, and interruptibility.

  2. 02

    Export a 13-week baseline: segment p95 by workflow.

  3. 03

    Bind runner labels: split heavy Xcode from light lint.

  4. 04

    Write burst preemption: bill cap plus interruptible job allowlist.

  5. 05

    Private mesh and artifacts: see private mesh topology.

  6. 06

    Review preemption: choose Dedicated or continue burst.

Minimum SLO dashboard fields
wait_p95_business_hours_minutes
complete_p95_release_train_minutes
shared_pool_neighbor_fail_rate
burst_preempt_count / burst_successful_builds
05

Three hard thresholds and a sizing matrix

  • Business-hours p95 wait: gate at 8–12 minutes; above 15 minutes for two weeks triggers a Dedicated review.
  • Shared-pool concurrency: 16GB tier: one heavy compile plus one light task; 24GB tier: two compile lanes.
  • Burst billing: cap each campaign in the change ticket.
Size × volatilityDefault poolBurst roleUpgrade signal
Small team · low volatilitySharedOptional13-week p95 breach
Small team · high volatilityShared + BurstRelease-week overflowPreemption rate >20%
Platform · multi-regionDedicated + SharedInterruptible jobs onlyIsolation SLO breach

Once pools and SLOs live in repo assets, laptops doubling as CI or verbal shared machines rarely survive audits. For teams that need iOS CI and seat isolation on contract-grade cloud Mac Mini capacity, VpsMesh Mac Mini cloud rental is usually the better fit. See the pricing page, help center, and order page.

FAQ

Top three reader questions

Most 5–15 person teams start on Shared with seat caps and lock TTL; move to Dedicated for release trains. See the seat-lock article.

Not if preemption caps and billing rules are in the change ticket; burst only absorbs interruptible overflow.

When p95 exceeds threshold for 13 weeks and CPU stays above ~78%, or isolation SLO breaks—add dedicated nodes. See the pricing page.