Skip to main content
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:
  1. A command flag that you pass explicitly.
  2. A MOBILERUN_IOS_* environment variable. For nested keys, write the name in upper case and replace dots with underscores: wda.unsigned_url becomes MOBILERUN_IOS_WDA_UNSIGNED_URL.
  3. The value in config.yaml.
  4. The built-in default.
Some settings are not YAML keys. Video and audio tuning, control mode, tunnel mode, local authentication, logging, and telemetry are only flags and environment variables. Adding video_fps, remote_xpc_only, or local_token to YAML has no effect. The auto concurrency and retry limits are command flags. The profile: section is read from the file only; see Fleet profile.
Keep secrets out of source control. When you create the file yourself, restrict access:
Use absolute paths for keys, certificates, and images. YAML does not expand ~. 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

Downloaded images are cached in ~/.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:
For the VPN tunnel runner, use 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:
Merge this into your file; do not overwrite the login token. For what each backend does on your Apple team, see WDA signing.

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_PASSWORD and MOBILERUN_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 as restriction:, 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. reset and 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.
These keys do not allow erasing a phone. setup and auto never erase, and auto rejects remote factory-reset requests. Only the explicit reset command erases, after confirmation.

Environment-only settings

These are not config.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 is needed for native audio, recordings, and the H.264 fallback. Homebrew installs 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.