setup
setup prepares one connected iPhone. With no UDID, it selects the sole connected device or opens an interactive picker. With multiple phones in a non-interactive session, pass the UDID explicitly.
The walkthrough checks and repairs prerequisites in order: Developer Mode, a compatible developer disk image (DDI), and—when WDA is selected—the runner’s signing, installation, and ability to launch. It handles reconnects around Developer Mode changes, but cannot accept on-device trust, unlock, or confirmation prompts for you.
A rerun skips satisfied steps. In particular, an installed Mobilerun runner is not automatically re-signed. If its signature has expired, use --reinstall.
Stop the device’s portal before running
setup or verify. Only one setup or portal session can use the device at a time. Use mobilerun-ios stop <udid> for a detached portal, or stop the foreground process with Ctrl+C.Flags
--log-level, --verbose / -v, and --tunnel-mode are inherited global flags. See Configuration for their environment equivalents.
Examples
Control-mode persistence
The selected mode is stored in~/.mobilerun-ios/devices/<udid>.json, not in config.yaml. Without a saved choice, versions below iOS 27 use WDA; iOS 27+ preserves an installed runner or selects native control when none exists.
MOBILERUN_IOS_REMOTE_XPC_ONLY=true selects native control; false selects WDA. An explicit setup mode that conflicts with this environment override is rejected. Unset or align the environment variable before changing the saved choice. See native operation for the video tunnel and feature limitations.
verify
verify requires exactly one UDID. It prints a check table and exits non-zero if readiness is incomplete or cannot be determined. It does not repair Developer Mode, mount a missing DDI, or install a runner.
Checks follow the same saved/default mode as setup:
- Device identity and Developer Mode.
- Mounted developer disk image.
- Runner presence in WDA mode.
- Required native services and device capabilities in native mode. If prerequisites are missing, native readiness is reported as not checked, not as proof that native control is unsupported.
When verification fails
After repairs, rerun verification, start the portal, then confirm streaming and a task in the cloud dashboard.