> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mobster.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# mobster verify

> Run one check once, from flags or a file, and print passed or failed.

Check an iOS app on a headless simulator that Mobster manages. Mobster installs and launches the app, runs the steps (Smart, on your OpenAI or Anthropic key) or none (a launch-only check), and checks your declared assertions. No model grades the outcome. Each run writes a report, with frames when available.

A check is a saved YAML file. verify is the one-off form of `mobster test`: it runs one check, from flags or `--check` FILE, and `--save` NAME keeps it for `mobster test`.

## Usage

```text theme={"theme":"css-variables"}
mobster verify [options] [STEP ...]
```

## Arguments and options

| Name | Default | Description |
| - | - | - |
| `[STEP ...]` | none | one step of the flow in plain English; none means a launch-only check |
| `--check FILE` | none | run a saved check (.yaml or .json); not combined with steps or expectations |
| `--app PATH` | none | the .app built for the iOS Simulator; it is installed before the run |
| `--bundle ID` | read from `--app` | the app's bundle ID |
| `--device NAME` | iPhone 17 Pro, else the newest iPhone | a device from `mobster devices` (its id, UDID or name), or the simulator device type |
| `--runtime NAME` | the newest installed | the iOS runtime, such as "iOS 26.4" |
| `--reset LEVEL` | reinstall with `--app`, else data; com.apple.\* apps are never reset | none, data or reinstall |
| `--launch-arg ARG` | none | a launch argument; repeatable (write `--launch-arg=-Flag` for one that starts with -) |
| `--launch-env KEY=VALUE` | none | a launch environment variable; repeatable |
| `--open-url URL` | none | a deep link opened after launch |
| `--text TEXT` | none | expect TEXT on screen; repeatable |
| `--no-text TEXT` | none | expect TEXT not on screen; repeatable |
| `--visible SEL` | none | expect an element on screen: key=value\[,key=value] with keys id, label, value, role, enabled and selected; repeatable |
| `--absent SEL` | none | expect no element to match SEL; repeatable |
| `--expect JSON` | none | any expectation as JSON, such as '\{"count": \{"id": "/^plan\_/"}, "equals": 3}'; repeatable |
| `--name TEXT` | the first step, or "Launch check" | the check's name in reports |
| `--keyless` | off | never call a model; a check with steps then can't run |
| `--max-usd USD` | 0.25, at most 1.00 | Smart's spend cap for the run |
| `--max-seconds S` | 180, at most 600 | Smart's time limit for the flow |
| `--assert-timeout S` | 5 | how long expectations may wait for the screen to settle |
| `--out DIR` | ./.mobster/runs | where runs go |
| `--save NAME` | none | also save the check as .mobster/checks/NAME.yaml (a-z, 0-9 and -) |
| `--json` | see description | print the result as JSON (the default when stdout isn't a terminal) |
| `--env-file PATH` | `$MOBSTER_ENV_FILE` | load KEY=VALUE lines, such as OPENAI\_API\_KEY or ANTHROPIC\_API\_KEY for Smart; variables already set win |

```text theme={"theme":"css-variables"}
exit codes: 0 passed, 1 failed, 2 needs review, 3 couldn't run (usage errors too),
            130 ctrl+c

examples:
  mobster verify --bundle com.apple.Preferences --text General
  mobster verify --app build/YourApp.app --open-url yourapp://tasks --text "Add a task"
  mobster verify "Open General, then About" --bundle com.apple.Preferences --text "iOS Version"
  mobster verify --check .mobster/checks/task-done.yaml --json
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.