Bottom line: if your dedicated remote Mac (M4 / M4 Pro) in Singapore, Japan, Korea, Hong Kong, US East, or US West keeps hitting “disk almost full” while builds slow down, this article gives a signable answer. Choose among 1TB/2TB expansion, cache governance, or a second peak machine using a pick-one decision matrix, six-step runbook, and three watermark thresholds, then tie the choice to daily, monthly, or quarterly leases. We do not repeat region-latency or full POC playbooks; we pick up where pre-production stability acceptance leaves off: whether to spend on disk or change how you use the node.
df percentages without directory attribution. APFS snapshots, local Time Machine snapshots, and “Other users” buckets can paint the root volume red while the real Xcode drag is a single directory growing linearly. Use layered du sampling—not a blind rm -rf.iostat shows disk utilization below 40% for long stretches yet builds stay slow, the limit is parallelism or linker memory. An M4 Pro or a second machine beats 2TB in that profile.Dedicated remote Macs give you a clear physical disk boundary, but clarity does not auto-match workload. On Apple Silicon unified memory, disk pressure and RAM pressure often move together: parallel Simulators, Swift incremental compiles, and container layer caches raise IO and memory at once. Without a pick-one decision, teams bounce between “clean the disk again” and “add another box,” wasting lease budget and slowing releases.
The multi-region node rental cost guide answers which country and lease length to pick; this article answers first-order disk handling on the node you already chose. It complements the CocoaPods/SPM mirror and disk checklist—dependency tuning reduces false-full signals but cannot replace DerivedData and simulator asset governance.
| Signal | Prefer: cache governance | Prefer: 1TB/2TB upgrade | Prefer: second machine / Pro tier |
|---|---|---|---|
| Free space still <15% seven days after cleanup | Only if du shows >30% reclaimable and standard cleanup not yet run | Default: structural growth (multi-branch DerivedData) | If CPU queue p95 is saturated in the same window |
| Single repo <8GB but 3+ Simulator OS versions | Remove unused runtimes and device sets | Two or more large OS images kept resident | Parallel UI test workers >2 |
| Monorepo + affected builds enabled, still full weekly | Check blobless paths and cache locations | Default: intermediate dirs not isolated | Build and test must split disk or machine |
| Release spike only 10–14 days | Default: cleanup + snapshot export | Do not lock quarterly lease for two weeks | Daily/weekly second machine is cheaper |
| After 2TB, iowait <8% and still slow | Disk is not primary—stop expanding | Veto: do not add more disk | Default: compute/concurrency bottleneck |
Mechanism: APFS copy-on-write means deleting a large directory may not immediately restore reported free space, especially with local snapshots present. Governance must include snapshot inventory; otherwise “deleted 200GB, df only recovered 20GB” leads to a false upgrade decision.
~/Library/Developer, DerivedData, CoreSimulator, ~/.gradle, ~/Library/Containers, etc.; export CSV for audit.# Top directory sampling on the remote Mac (replace WORK path) export WORK="$HOME" df -h / echo "---- top dirs under Library/Developer ----" du -hd 1 "$HOME/Library/Developer" 2>/dev/null | sort -hr | head -12 echo "---- DerivedData total ----" du -sh "$HOME/Library/Developer/Xcode/DerivedData" 2>/dev/null echo "---- CoreSimulator ----" du -sh "$HOME/Library/Developer/CoreSimulator" 2>/dev/null
On six-region remote Macs, disk decisions come down to separating incompressible working sets from compressible caches. Reclaimable → govern; not reclaimable → upgrade or split machines; not reclaimable and compute-saturated → stop buying disk—that only comforts a queue bottleneck.
Self-hosted Mac colocation or short-lived cloud instances often split “disk” and “ops” into two invoices, so teams underestimate the compound cost of snapshots, simulator assets, and shared disks. Laptop handoffs hit disk and sleep policy at the same time during release weeks. For teams that need dedicated Apple Silicon, predictable disk tiers, and six-region nodes, attaching this matrix to procurement and aligning 1TB/2TB with lease terms on MACCOME Mac cloud usually beats ad-hoc disk adds or blind second machines—and gives CI and on-call the same watermark language.
Once you lock upgrade or second machine, bring region and lease line items into the same review. Pricing and cycle details stay on the product page; keep stability acceptance and Monorepo articles as attachments so release week discusses capacity and pipeline together.
FAQ
After clearing DerivedData the disk is still full—upgrade or add a machine?
If free space drops below 15% again within seven days and Developer subdirectories still dominate du output, evaluate 1TB/2TB with a monthly lease. If CPU and memory queues saturate in the same window, add a second machine per the build-pool article. Tiers and pricing are on the Mac mini rental rates page.
Builds are still slow after expanding to 2TB—is that a disk problem?
Not necessarily. When IO stays idle while compile times stay high, return to stability acceptance and architecture matrices to separate compute from network. Operational details live in the cloud Mac support help center.