Skip to main content

Run an iOS Simulator

Create a remote iOS simulator session, open the signed stream URL in a browser, install simulator-compatible app builds, and release the session when finished. For CLI setup, see CLI Quickstart. For reusable app artifacts, see Assets.

Create a session

run-cloud ios create
The response includes:
FieldUse
idrun.cloud session id. Use it with get, delete, and open-url.
urlSigned browser URL for the live simulator stream. Do not publish it in logs.
statusSession status: active, released, or failed.
createdAtSession creation timestamp.
releasedAtRelease timestamp once the session is closed.
expiresAtSession expiry timestamp when available.
inactivityTimeoutSecondsAuto-close timeout in seconds, or null when disabled.
inactivityCountdownSecondsVisible countdown duration before auto-close, or null when disabled.
For scripts, use JSON:
run-cloud ios create --json

Configure the session

run-cloud ios create \
  --model iphone \
  --display-name "CI smoke" \
  --label env=ci \
  --inactivity-timeout 60s \
  --hard-timeout 10m \
  --json
Supported flags:
FlagPurpose
--model MODELPreferred simulator family: iphone or ipad.
--region REGIONPreferred region when available.
--display-name NAMEHuman-readable label.
--label KEY=VALUERepeatable metadata label.
--install FILEUpload and install a local app artifact.
--install-asset NAME_OR_IDInstall an already uploaded asset.
--inactivity-timeout DURATIONAuto-close after user inactivity. Use 60s, 3m, 1h, or none.
--hard-timeout DURATIONMaximum requested session lifetime.
--rmMark the session as auto-delete-on-exit intent.
--jsonMachine-readable output.
If --inactivity-timeout is omitted or set to none, run.cloud creates a metered session without inactivity auto-close. When a timeout is supplied, the signed simulator URL carries that policy to the iOS simulator; the embedded iframe shows the final 10-second countdown, ends the iOS simulator lease, and posts a session ended message to its parent page. Billing is account-level. Active sessions consume minute balance, and a depleted balance closes the simulator session.

Install an app

Install a local simulator build while creating the session:
run-cloud ios create --install ./MyApp.tar.gz --json
Or upload once and reuse the artifact:
run-cloud asset push ./MyApp.tar.gz -n my-app --json
run-cloud ios create --install-asset my-app --json
--install accepts .tar.gz, .zip, .app archives, and .ipa files. iOS Simulator reliability still depends on the app being built for the simulator runtime. Device-signed App Store IPAs are not a substitute for simulator builds.
run-cloud ios open-url https://example.com --id "$SESSION_ID"
run-cloud ios open-url myapp://settings --id "$SESSION_ID"

Inspect sessions

run-cloud ios list
run-cloud ios list --all
run-cloud ios get "$SESSION_ID" --json
list shows active sessions by default. Pass --all to include released sessions.

Release the session

run-cloud ios delete "$SESSION_ID" --json
Explicit release charges the final started minute and closes the iOS simulator session. If the account balance reaches zero, active sessions are closed automatically.