Upgrading from v0.4.x? The runner and signing keys moved under
wda: and signing:, and v0.5.0 ignores the old names. See Migrate to v0.5.0.File location and precedence
The configuration file is~/.mobilerun-ios/config.yaml. It can be missing. login and the interactive account setup in setup create or update it, and they change only the keys they write.
For each setting, the first value found wins:
- A command flag that you pass explicitly.
- A
MOBILERUN_IOS_*environment variable. For nested keys, write the name in upper case and replace dots with underscores:wda.unsigned_urlbecomesMOBILERUN_IOS_WDA_UNSIGNED_URL. - The value in
config.yaml. - The built-in default.
~. A running auto process reads the configuration once at startup, so restart it after you change the file or its environment.
Cloud authentication
On an interactive host, use
mobilerun-ios login and mobilerun-ios whoami. On an unattended host, inject an API key:
logout removes the saved token. It does not clear MOBILERUN_IOS_TOKEN. Do not paste tokens into bug reports.
Developer disk images
~/.mobilerun-ios/devimages/. For one run, setup --ddi-path and setup --ddi-url override these keys. iOS 16 uses a classic image: setup takes Xcode’s if one is installed and otherwise downloads one.
WDA runner
Default
wda.unsigned_url:
WebDriverAgentRunnerTunnel-Runner.zip from the same release. To pin a version, replace latest/download with download/<tag>. See WDA signing for how the CLI chooses between unsigned_url and signed_url.
Signing
setup, auto, and reset all read these keys. The setup flags --backend, --account, and --identity override them for one run.
Each
signing.accounts entry has these fields:
Fleet profile
These settings are for hosts that prepare phones still in Setup Assistant, or that reset phones. You do not need them to serve a phone that is already set up. The CLI installs one supervised configuration profile,com.mobilerun.fleet, with Wi-Fi and restrictions. It installs the profile during reset and during factory-state onboarding in setup and auto. It also checks the profile every time setup or auto attaches a phone that this host supervises, and reinstalls it when the section changed. The profile comes from the profile: section:
Rules for this section:
- It is read from the file only. The only environment overrides are
MOBILERUN_IOS_PROFILE_WIFI_PASSWORDandMOBILERUN_IOS_PROFILE_REMOVAL_PASSWORD. Use them to keep secrets out of the file. - Quote values that YAML reads as numbers, such as an all-digit password or an SSID like
2024. A number is rejected. - An unknown key directly under
profile:, such asrestriction:, is an error. - The Wi-Fi network must be protected (open networks are not supported) and must reach the internet. iOS checks a new developer-signed runner with Apple before it launches it.
- A host with no
profile:section leaves phones that are already set up unchanged.resetand factory-state onboarding still need the section.
wifi_ssid, wifi_password, and wifi_enc_type are deprecated aliases for profile.wifi.ssid, .password, and .encryption. They still work and log a warning.
Supervision and onboarding
The fleet profile needs the supervision identity: the profile’s content digest is keyed with the supervision private key, so the readable profile description reveals nothing about the Wi-Fi or removal password. Create the identity through your device-management process; it is separate from App Store Connect keys and WDA signing certificates. Do not replace the identity of a phone that is already managed.
Environment-only settings
These are notconfig.yaml keys. The flag column refers to the root portal command unless it says otherwise. auto accepts only some of these flags, so use the environment variables with auto.
MOBILERUN_IOS_WDA_BUNDLE_ID is the environment form of wda.bundle_id. The root portal’s --wda-bundle-id sets it for one run.
Video and audio
These values are requests. Not every phone or capture path supports every value. Flags reject out-of-range numbers; environment values are clamped to the range.
ffmpeg@8 with the CLI, and the installer adds it when Homebrew is available. The CLI finds Homebrew’s ffmpeg@8 without a PATH change.
Files managed by the CLI
Do not edit CLI-managed files while the CLI is running.