mobilerun-ios setup can download a prebuilt runner, provision signing material, sign the runner, install it, and check that it launches. You do not need to compile WDA yourself for the App Store Connect path.
There are three workflows:
Signing is needed only for WDA mode. Native iOS 27+ control does not install a WDA runner. Automatic signing is also not automatic renewal: setup normally skips an installed Mobilerun runner, and auto preserves installed runners. Use explicit
setup --reinstall to renew or replace one.App Store Connect
Prepare an API key
In App Store Connect, open Users and Access → Integrations → App Store Connect API and obtain a team API key with permission to manage the provisioning resources below. Record its Key ID, Issuer ID, and download the.p8 key file. If your account cannot create a suitable key, ask the team’s administrator to configure access.
The CLI needs to register or re-enable devices, register bundle IDs, create development certificates, and create/delete development provisioning profiles. An API key restricted to unrelated App Store operations is insufficient.
Store the key privately on the host. Use its absolute path in the configuration:
Configure an account
Merge this into~/.mobilerun-ios/config.yaml:
mobilerun-ios setup <udid> --wda --backend asc interactively and follow the add-account prompts. Account entries are saved by name; reusing a name replaces that entry. The .p8 file stays at its configured path.
Sign and install
--non-interactive. Host trust, Developer Mode, and developer-certificate trust still require any applicable on-device confirmations.
For auto, set the selection in YAML:
mobilerun-ios auto. Auto signs only when WDA is needed and no runner is installed. If you configure multiple accounts, choose one explicitly; there is no unattended account picker.
What gets provisioned
The ASC backend creates or reuses a development signing certificate, registers the target UDID (or re-enables a disabled registration), ensures the app identifiers exist, and creates a development profile covering the device. Provisioning can replace matching profiles, so use a deliberate automation account/configuration rather than assuming this workflow is read-only on your Apple team. The CLI caches signing credentials under~/.mobilerun-ios/signing/. This directory contains private keys and certificates; protect it like any other credential. After rotating an API key, update the account configuration and verify signing before resuming unattended operation.
Artifact and extension limits
Automatic ASC signing does not configure the Network Extension capability or provision separate profiles for every extension in a custom artifact. Do not assume that pointingrunner_url at a tunnel-enabled artifact is sufficient to enable VPN support.
Xcode signing requires matching profiles for each included extension. For a tunnel-enabled build, use the manual tunnel build with a paid team and matching entitlements/profiles, or supply a fully signed artifact to auto. The default WDA scheme/artifact is distinct from the opt-in tunnel variant; automatic setup is not a request to enable VPN capabilities.
Bundle identifiers
Let the CLI derive the identifier unless you have an existing registration/profile to reuse:- The CLI chooses an account-specific or team-specific identifier to avoid conflicts with other Apple teams.
- A custom installed Mobilerun runner ID can be retained during explicit reinstall.
- An explicit
--bundle-id, environmentMOBILERUN_IOS_BUNDLE_ID, or configuredbundle_idoverrides automatic selection.
WebDriverAgentRunner and end in .xctrunner, for example:
.broadcast and .tunnel extensions must remain under that installed runner’s bundle prefix. Do not copy another team’s fixed identifier or manually mix profiles from different teams.
Local Xcode signing
The Xcode backend signs in place with a keychain identity; it does not export that identity’s private key. It needs a development provisioning profile for the runner and every bundled extension, covering the selected team and target UDID.- Install Xcode and add your Apple Account in Xcode → Settings → Accounts.
- Under Manage Certificates, create an Apple Development certificate if one is missing.
- Follow the manual Xcode build steps to register the phone and create matching profiles for the runner and Broadcast (plus Tunnel when using the tunnel-enabled scheme).
- Use the installed runner bundle ID when selecting a profile. The Xcode test target’s base ID and the installed runner ID are not identical: the latter ends in
.xctrunner.
Pre-signed runners for auto
If another build/signing system already produces an artifact for your phones, configure:runner_url and wda_ipa_url are deliberately different:
runner_url: input to setup/auto’s signing flow; the default is the Mobilerun runner ZIP.wda_ipa_url: already-signed artifact for auto’s missing-runner path and the explicit reset workflow. Ordinarysetupdoes not use it as a shortcut around signing.
Renew or repair signing
Stop any portal or auto process that owns the device, then explicitly reinstall:--backend xcode --identity ... and, where needed, --bundle-id .... Renew expired profiles in Xcode before retrying. Reinstall implies WDA and retains an existing custom runner ID unless overridden.
Give the iPhone internet access so iOS can validate the developer profile. On the phone, open Settings → General → VPN & Device Management, select the developer profile and trust it when prompted. A valid signature on disk is not proof that iOS has accepted trust or can launch the app.