NoMacSign in
← Blog

Run the iOS Simulator in the cloud from an agent

Boot an iPhone simulator on a cloud Mac, install your build and capture screenshots with simctl, driven by a coding agent. Including the 90-second first boot.

· 8 min read

Need a Mac for this? NoMac gives your agent full macOS with Xcode, from $9.99 a month, billed by the second. Start now →


The iOS Simulator only runs on macOS. There is no official Windows or Linux build, and the web-based “iOS simulators” you find online either stream someone else's Mac or imitate an iPhone in a browser without running your code. If you need your actual app running on an actual simulator without owning a Mac, you need a Mac somewhere else.

This guide runs the simulator on a cloud Mac, driven entirely from the command line, so a coding agent can do it as easily as you can.

Headless is fine. You do not need a screen to run the simulator. xcrun simctl boots devices, installs apps, launches them and captures screenshots without any window. An agent reads the screenshot like you would.

1. Start a Mac and check the runtimes

nomac start --json
nomac ssh -- xcrun simctl list runtimes
nomac ssh -- xcrun simctl list devices available

NoMac sessions come with an iOS 26 simulator runtime and the current iPhone and iPad device types. If you need another runtime, you have root and can download it, but it takes a while and disappears at stop, so prefer the one that is there.

2. Boot a device, and give it time

nomac ssh -- xcrun simctl boot "iPhone 17 Pro"
nomac ssh -- xcrun simctl bootstatus "iPhone 17 Pro" -b

A first boot on a fresh machine takes about 90 seconds, most of it CoreSimulator migrating data. bootstatus -b waits until the device is really ready. If an agent runs this through a managed job with a short timeout, the job is killed halfway and the agent wrongly concludes that the simulator does not work. Managed commands on NoMac default to 300 seconds, which is enough.

3. Build for the simulator

nomac sync .
nomac ssh -- xcodebuild -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
  -derivedDataPath build build

Simulator builds need no signing and no Apple Developer account. The app bundle lands under build/Build/Products/Debug-iphonesimulator/.

4. Install, launch and screenshot

nomac ssh -- xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/MyApp.app
nomac ssh -- xcrun simctl launch booted com.example.MyApp
nomac ssh -- mkdir -p shots
nomac ssh -- xcrun simctl io booted screenshot shots/home.png
nomac pull ./shots --from shots

Pull the PNG back and look at it, or let the agent look at it. A rendered simulator screenshot on an iPhone 17 Pro is 1206 by 2622 pixels, the same as the device.

5. Useful simctl commands for agents

  • ·simctl openurl booted myapp://settings jumps straight to a deep link, which is the easiest way to reach a screen without tapping.
  • ·simctl ui booted appearance dark checks dark mode.
  • ·simctl status_bar booted override --time 9:41 gives clean screenshots.
  • ·simctl privacy booted grant photos com.example.MyApp skips permission prompts.
  • ·simctl spawn booted log stream --predicate 'process == "MyApp"' streams your app's logs.

For tapping and typing, simctl alone is not enough. Tools like XcodeBuildMCP and agent-device add UI automation on top; you can install them on the session with root. Or write the flow as an XCUITest and run it with xcodebuild test.

What this is good for, and what it is not

  • ·Good: proving a screen renders, checking layouts across devices and dark mode, running unit and UI tests, generating App Store screenshots, reproducing a crash with logs.
  • ·Not good: hands-on exploratory play. There is no live screen to drag around. For feel, put a build on your own phone with TestFlight.
  • ·Not a device: the simulator has no camera, real push notifications or true performance characteristics. Test those on hardware.

Stop when you are done

nomac stop --json

Stopping deletes the VM, the simulator and everything on it, so pull screenshots and logs first. To set this up for Claude Code over MCP, see give Claude Code a Mac in five minutes.

Give your agent a Mac in a minute.

Full macOS with Xcode and root, over MCP, CLI, API or SSH. Billed by the second, deleted when you stop. No Apple account needed to start.

Get started for $9.99

7-day money-back guarantee on your first purchase. Cancel anytime.

Connect your agent →