Set your usage requirements first

Buy or rent?

For a Mac you use every day, buying is straightforward. For a short-term project, remote collaboration, or always-on builds, moving your workstation to the cloud offers more flexibility. XcNode provides dedicated Apple Silicon physical nodes, not virtual machines.

Two tiers from $21.3/day. Check resource requirements before choosing a rental term.

How to get a Mac

The cost of the machine is only part of the picture

Compare hardware costs, setup time, and the responsibility for idle equipment side by side. VM capabilities vary by service, so don’t assume based on the label “cloud Mac” alone.

Costs and responsibilities across three options
Factor Buy a Mac Cloud VM XcNode dedicated physical Mac
Upfront cost Pay for the machine upfront, then arrange space, power, networking, and remote access. Pay according to the provider’s plan and term; check resource quotas and extra charges. Pay upfront by the day, week, month, or quarter, with no need to buy hardware first.
Time to get started Once your Mac arrives, install the toolchain, configure networking, and verify your builds. Create an instance through the provider; check the OS image and tool versions separately. Check payment and provisioning status in the console. Once you have your credentials, connect and verify your project.
macOS licensing Runs on Apple hardware; software use must still comply with the applicable license terms. Check the host hardware, virtualization method, and terms of service—not just the OS name. Runs native macOS on an Apple Silicon physical node, not in a VM.
Performance consistency You manage resources yourself; local work, tests, and builds may compete for them. Check whether the host is shared, along with CPU quotas, GPU support, and storage limits. Each machine is assigned to a single tenant, but your own concurrent tasks still share its resources.
Team access Manage network access, user permissions, keys, and scheduling for graphical desktop sessions yourself. Depends on instance permissions, access methods, and the provider’s collaboration limits. Use it for remote development or CI; your team manages user permissions, build queues, and desktop sessions.
Cost when idle You still own the machine after the project ends, along with depreciation, storage, and maintenance responsibilities. Stop the service according to the provider’s rules; check whether disks, snapshots, or other resources continue to incur charges. Choose a term to fit the project; billing for an active term does not pause when you stop building.
Compare the specs

Two Mac tiers, specs side by side

Start with unified memory and your project’s resource needs, then compare rental prices. These are base prices and exclude storage upgrades and Thunderbolt 5 linking options.

Two available Mac tiers; all prices are in USD
Spec / term Node Core M4 Node Pro M4
ChipM4M4 Pro
Unified memory16 GB64 GB
SSD256 GB2 TB
Daily$21.3/day$59.1/day
Weekly$57.6/week$159.6/week
Monthly$106.7/month$295.6/month
Quarterly$290.2/quarter$804/quarter
Available locationsSingapore / Tokyo / Seoul / Hong KongSingapore / Tokyo / Seoul / Hong Kong
A good fit forIndividual Xcode builds, sequential automated builds, and TestFlight distribution.Parallel simulator testing, large Swift projects, and local model experiments that need more memory.
Choose a plan Rent Node Core M4 Rent Node Pro M4

Both tiers are available in all four locations. Availability is shown in real time in the console. Choosing a plan is not a performance guarantee: dependency size, build settings, cache hit rates, and test concurrency all affect resource use.

Choose a rental term

Daily or weekly for sprints; monthly or quarterly for ongoing CI

Each price below is for a separate rental term, not an estimate based on adding up daily rates. The longer the term, the more important it is to confirm that your project will keep using the machine.

Four term prices for each tier
Mac tierDailyWeeklyMonthlyQuarterly
Node Core M4$21.3$57.6$106.7$290.2
Node Pro M4$59.1$159.6$295.6$804

For a delivery sprint: define the scope first

For a one-off build, a release, or toolchain validation, start with a daily rental. If the work spans a full week, compare weekly pricing. Include time for downloading dependencies, setting up certificates, and backing up build artifacts—not just the minutes spent compiling.

For ongoing work: confirm you need continuous availability

If you run CI daily, maintain build caches, or keep a team development environment available, compare monthly and quarterly terms. Test with a real project before committing to a longer term. An always-on machine doesn’t mean your runner and build scripts are configured to start automatically.

Charged in USD. Payment methods: USDT-TRC20 and Visa, Mastercard, or Amex via Stripe. Available payment gateways are confirmed by the backend. See the plan page for add-on prices and billing details.

Resource isolation

A dedicated physical Mac solves the shared-host problem

Native GPU access, unified memory, and a full macOS environment are one set of capabilities. Task scheduling, project compatibility, and network performance are separate factors you’ll need to verify.

The whole machine is assigned to one tenant

XcNode doesn’t split a machine into virtual instances for multiple tenants. CPU, GPU, and unified memory aren’t shared with other tenants, and there’s no virtual GPU mapping. Xcode, simulators, and Metal run in a native macOS environment.

Dedicated doesn’t mean unlimited concurrency. Build processes, simulators, indexing, and model inference still share the machine’s memory. Check memory pressure before increasing concurrency, and don’t start by running every runner at full capacity.

One tenant, one physical node

Test the environment with your actual workload

To assess whether a VM suits your project, check GPU support, system permissions, host sharing, and tool compatibility. Not all VMs are necessarily slow, and being able to boot macOS doesn’t make a VM a complete development environment.

Physical nodes still require you to check the Xcode version, dependency architecture, signing settings, and simulator runtimes. Remote desktop performance is also affected by round-trip latency. For command-line builds, SSH and an automated queue are usually a better fit.

Test first, then add parallel tasks
Prepare to migrate

Data → Toolchain → CI

Break the migration into three stages, each with clear acceptance criteria. These time estimates are for manual preparation, not delivery guarantees; transferring a large repository, downloading dependencies, and running a full test suite may take longer.

01 · Data

Sync your project and essential files first

Estimated prep: 15–60 minutes

Clone the source with Git, use Git LFS for large files, or sync your working directory with rsync. Don’t copy every cache. First check that the repository, submodules, and build resources are complete, then transfer signing certificates over a secure connection.

rsync -av --exclude DerivedData \
  ~/project/ cloud-mac:~/project/

Verify: The source version matches, required resources are accessible, and no sensitive files are in a public repository.

02 · Toolchain

Pin versions instead of guessing

Estimated prep: 20–90 minutes

Check the Xcode path and version, and document your Homebrew, Ruby, and Fastlane dependencies. Run a scripted build first, then connect your CI platform. This makes it easier to tell toolchain issues from runner issues.

xcode-select -p
xcodebuild -version
bundle exec fastlane --version

Verify: Versions are documented, and the same build command runs repeatedly to produce the expected artifacts.

03 · CI setup

Register the runner, then configure startup

Estimated prep: 15–45 minutes

Get the registration command from GitHub Actions or GitLab CI and link the runner to your team project. Start with low concurrency and verify builds, tests, and artifact uploads. Once the service account can access the project, keychain, and cache directories, configure the runner to start at boot.

cd ~/actions-runner
./svc.sh install
./svc.sh start

Verify: The queue can assign jobs, logs are traceable, and the service behaves as expected after a restart.

In the command, cloud-mac is the node alias you set in your SSH config. The runner example requires you to download and register the runner first. After migration, keep a local backup and verify archived artifacts and test results before cleaning up the old environment.

Three final questions

Choose a tier, then a rental term

Memory needs determine the tier; how long you’ll use it determines the term. Running CI continuously doesn’t automatically mean you need Pro.

Need more memory for parallel testing?

If you run multiple simulators, large Swift projects, or local models at the same time—and have seen clear signs of memory pressure—consider Node Pro M4 with 64 GB of unified memory. For sequential builds and individual releases, start by testing Node Core M4.

Will this machine run CI continuously?

Look at how many jobs run at once, not just the “CI” label. Test Core with sequential pipelines; consider Pro for parallel tests. If you need to run jobs and retain caches every day, compare monthly and quarterly pricing, and configure automatic service startup and artifact backups.

Do you know how long you’ll need it?

For troubleshooting, build validation, or a one-off release sprint, compare daily and weekly terms first. Once you’ve validated the environment and confirmed ongoing project use, compare monthly and quarterly terms. Before you finish, export artifacts, back up your project, and check renewal or expiry details. Don’t rely on the node as your only copy of your data.

Choose the location separately from the Mac tier. Both tiers are available in Singapore, Tokyo, Seoul, and Hong Kong. Test connectivity from the networks your team uses and choose the location that works best for your main users. Geographic distance alone can’t guarantee low latency.

Rent for your project—no need to buy a Mac first

Start with a real build. Choose a Mac tier, location, and rental term, confirm the final specs and price in the console, then place your order.