List every simulator AXe can see, with state and UDID.
Command Reference
Every AXe command with source-derived flags, defaults, UDID requirements, and batch support.
Dump the accessibility tree as JSON for the whole screen or a single point.
| Flag | Type | Default | Description |
|---|---|---|---|
--udid required | string | — | Target simulator UDID. |
--point | x,y | — | Describe only the element under that screen point. |
Tap a coordinate or the activation point of an accessibility match.
| Flag | Type | Default | Description |
|---|---|---|---|
-x / -y | double | — | Tap point. Both must be provided together. |
--id | string | — | Match by AXUniqueId. |
--label | string | — | Match by AXLabel. |
--value | string | — | Match by AXValue. |
--element-type | string | — | Narrow selector results, for example Button, TextField, or Switch. |
--tap-style | automatic, simulator, physical | automatic | Tap dispatch style. automatic uses physical touch for switch-like controls and simulator tapAt for other targets; simulator always uses tapAt; physical always uses touch down/up. |
--wait-timeout | double | 0 | Seconds to poll for a selector before failing. |
--poll-interval | double | 0.25 | Polling cadence while waiting. |
--pre-delay | double | — | Seconds to wait before tapping. Range 0–10. |
--post-delay | double | — | Seconds to wait after tapping. Range 0–10. |
--udid required | string | — | Target simulator UDID. |
- Provide either -x and -y, or exactly one of --id, --label, or --value.
Set a slider to a verified 0–100 percentage via accessibility selector.
| Flag | Type | Default | Description |
|---|---|---|---|
--id | string | — | Match by AXUniqueId. |
--label | string | — | Match by AXLabel. |
--element-type | string | — | Narrow matches, usually Slider. |
--value required | double | — | Target percentage, 0–100. |
--wait-timeout | double | 0 | Seconds to poll for the slider before failing. |
--poll-interval | double | 0.25 | Polling cadence while waiting. |
--udid required | string | — | Target simulator UDID. |
- Uses one calibrated low-level HID drag, then re-reads AXValue and fails if outside tolerance.
- Not supported as a batch step.
Multi-touch swipe gesture between two screen points.
| Flag | Type | Default | Description |
|---|---|---|---|
--start-x / --start-y required | double | — | Starting point. |
--end-x / --end-y required | double | — | Ending point. Must differ from start. |
--duration | double | 1.0 | Total swipe duration in seconds. |
--delta | double | 50 | Distance between touch sample points in pixels. |
--pre-delay | double | — | Range 0–10. |
--post-delay | double | — | Range 0–10. |
--udid required | string | — | Target simulator UDID. |
Low-level point-to-point drag using explicit touch move events.
| Flag | Type | Default | Description |
|---|---|---|---|
--start-x / --start-y required | double | — | Starting point. |
--end-x / --end-y required | double | — | Ending point. Must differ from start. |
--duration | double | 0.6 | Total drag duration in seconds. |
--steps | int | 60 | Touch move event count. Range 1–1000. |
--pre-delay | double | — | Range 0–10. |
--post-delay | double | — | Range 0–10. |
--udid required | string | — | Target simulator UDID. |
- Not supported as a batch step.
Single-contact touch down, touch up, or both at one coordinate.
| Flag | Type | Default | Description |
|---|---|---|---|
-x / -y required | double | — | Touch point. |
--down | flag | — | Emit a touch down event. |
--up | flag | — | Emit a touch up event. |
--delay | double | — | Seconds between down and up when both are set. Range 0–10. |
--udid required | string | — | Target simulator UDID. |
- At least one of --down or --up is required.
Run a preset gesture pattern such as scroll-down or swipe-from-left-edge.
| Flag | Type | Default | Description |
|---|---|---|---|
preset required | enum | — | scroll-up, scroll-down, scroll-left, scroll-right, or edge-swipe preset. |
--screen-width | double | 390 | Logical screen width. Range 1–2000. |
--screen-height | double | 844 | Logical screen height. Range 1–3000. |
--duration | double | — | Range 0–10. Preset default applies if omitted. |
--delta | double | — | Range 1–200. Preset default applies if omitted. |
--pre-delay | double | — | Range 0–10. |
--post-delay | double | — | Range 0–10. |
--udid required | string | — | Target simulator UDID. |
Press a hardware button: home, lock, side-button, siri, or apple-pay.
| Flag | Type | Default | Description |
|---|---|---|---|
buttonType required | enum | — | apple-pay, home, lock, side-button, or siri. |
--duration | double | — | Hold duration. Range >0 and <=10. |
--udid required | string | — | Target simulator UDID. |
Type text from an argument, stdin, or a file via HID keyboard events.
| Flag | Type | Default | Description |
|---|---|---|---|
text | positional | — | Inline text. Mutually exclusive with --stdin and --file. |
--stdin | flag | — | Read all stdin as text. |
--file | path | — | Read text from a file. |
--udid required | string | — | Target simulator UDID. |
- Exactly one input source must be supplied.
- US keyboard characters only; accented and non-ASCII characters fail.
Press a single HID keycode, optionally held.
| Flag | Type | Default | Description |
|---|---|---|---|
keycode required | int 0–255 | — | Positional HID keycode. |
--duration | double | — | Hold duration. Range >0 and <=10. |
--udid required | string | — | Target simulator UDID. |
Press up to 100 keycodes in order.
| Flag | Type | Default | Description |
|---|---|---|---|
--keycodes required | comma-separated ints 0–255 | — | List of HID keycodes. |
--delay | double | 0.1 | Seconds between presses. Range 0–5. |
--udid required | string | — | Target simulator UDID. |
Hold up to eight modifier keycodes and press one target key atomically.
| Flag | Type | Default | Description |
|---|---|---|---|
--modifiers required | comma-separated ints 0–255 | — | Modifiers held in order, released in reverse order. |
--key required | int 0–255 | — | Target keycode pressed once while modifiers are held. |
--udid required | string | — | Target simulator UDID. |
Capture a PNG of the simulator display.
| Flag | Type | Default | Description |
|---|---|---|---|
--output | path | — | File path, directory path, or omitted. Existing files are replaced. |
--udid required | string | — | Target simulator UDID. |
- Prints the saved path to stdout. Not supported as a batch step.
Record the simulator to an MP4 until Ctrl+C.
| Flag | Type | Default | Description |
|---|---|---|---|
--fps | int 1–30 | 10 | Capture frame rate. |
--quality | int 1–100 | 80 | H.264 quality factor. |
--scale | double 0.1–1.0 | 1.0 | Output scale. |
--output | path | — | MP4 path or directory; auto-generated if omitted. |
--udid required | string | — | Target simulator UDID. |
- SIGINT/SIGTERM finalizes the MP4 cleanly and prints its path to stdout.
Stream simulator frames to stdout in mjpeg, raw, ffmpeg, or bgra format.
| Flag | Type | Default | Description |
|---|---|---|---|
--format | mjpeg|raw|ffmpeg|bgra | mjpeg | Output format. |
--fps | int 1–30 | 10 | Capture frame rate. Ignored by bgra. |
--quality | int 1–100 | 80 | JPEG quality for compressed formats. |
--scale | double 0.1–1.0 | 1.0 | Output scale. |
--udid required | string | — | Target simulator UDID. |
- Stdout is binary; pipe or redirect it.
Run an ordered set of supported interaction steps in one HID session.
| Flag | Type | Default | Description |
|---|---|---|---|
--step | string, repeatable | — | Inline step. Exactly one source allowed across --step, --file, and --stdin. |
--file | path | — | Read one step per line. Blank lines and # comments are ignored. |
--stdin | flag | — | Read one step per line from stdin. |
--ax-cache | perBatch|perStep|none | perBatch | Accessibility snapshot reuse policy. |
--type-submission | chunked|composite | chunked | How type steps submit HID events. |
--type-chunk-size | int >0 | 200 | HID events per chunk when chunked. |
--tap-style | automatic, simulator, physical | automatic | Default tap dispatch for tap steps. automatic uses physical touch for switch-like controls and simulator tapAt for other targets; simulator always uses tapAt; physical always uses touch down/up. |
--continue-on-error | flag | — | Collect failures and report them at the end. |
--wait-timeout | double | 0 | Seconds to poll for selector elements. |
--poll-interval | double | 0.25 | Polling cadence. |
--verbose | flag | — | Verbose stderr logging. |
--udid required | string | — | Target simulator UDID. Per-step --udid is rejected. |
- Supported steps: tap, swipe, gesture, touch, type, button, key, key-sequence, key-combo, and sleep.
Install, uninstall, or print the bundled AXe agent skill.
| Flag | Type | Default | Description |
|---|---|---|---|
--client | auto|claude|agents | auto | Target AI client. |
--dest | path | — | Custom skills directory. Overrides --client. |
--force | flag | — | Overwrite an existing skill file. |
--uninstall | flag | — | Remove the installed skill. |
--print | flag | — | Print SKILL.md to stdout. |
- Non-interactive sessions must pass --client or --dest unless --print is used.
Discovery
list-simulators
Prints every simulator AXe can see. No --udid required.
axe list-simulatorsdescribe-ui
Dumps the accessibility tree as JSON. Use --point x,y to inspect only the element under one coordinate.
axe describe-ui --udid <UDID>
axe describe-ui --point 100,200 --udid <UDID>Interaction
tap
Tap a coordinate or the activation point of exactly one selector match.
axe tap -x 120 -y 240 --udid <UDID>
axe tap --id SearchField --udid <UDID>
axe tap --label "Continue" --element-type Button --wait-timeout 5 --udid <UDID>
axe tap --value "12.5" --udid <UDID>tap accepts either both -x and -y, or exactly one of --id, --label, or --value.
Tap style controls how AXe sends the tap:
| Value | Behavior |
|---|---|
automatic | Default. Uses physical touch for switch-like controls, and simulator tapAt for other targets. |
simulator | Always sends a simulator tap event at the resolved point. |
physical | Always sends touch down/up events at the resolved point. |
slider
Sets a slider to a 0–100 percentage and verifies AXValue after one calibrated drag.
axe slider --id volume-slider --value 75 --udid <UDID>
axe slider --label Volume --value 40 --element-type Slider --udid <UDID>slider accepts exactly one of --id or --label. It is not a batch step.
swipe, drag, touch, gesture, and button
axe swipe --start-x 100 --start-y 300 --end-x 300 --end-y 100 --udid <UDID>
axe drag --start-x 100 --start-y 400 --end-x 300 --end-y 400 --steps 40 --udid <UDID>
axe touch -x 150 -y 250 --down --up --delay 1.0 --udid <UDID>
axe gesture scroll-down --udid <UDID>
axe button home --udid <UDID>swipe, touch, gesture, and button are batch steps. drag is standalone.
Keyboard
axe type 'Hello, world!' --udid <UDID>
echo "Multi-line input" | axe type --stdin --udid <UDID>
axe key 40 --udid <UDID>
axe key-sequence --keycodes 11,8,15,15,18 --delay 0.1 --udid <UDID>
axe key-combo --modifiers 227 --key 4 --udid <UDID>type takes exactly one input source: positional text, --stdin, or --file. key-sequence uses comma-separated --keycodes; key-combo uses comma-separated --modifiers plus one --key.
Media
axe screenshot --output screen.png --udid <UDID>
axe record-video --output run.mp4 --fps 15 --quality 80 --scale 1.0 --udid <UDID>
axe stream-video --format mjpeg --fps 10 --udid <UDID> > stream.mjpegscreenshot, record-video, and stream-video are standalone commands, not batch steps. Video commands stop cleanly on Ctrl+C/SIGTERM.
Batch
axe batch --udid <UDID> \
--step "tap --id Email" \
--step "type 'cam@example.com'" \
--step "key 40"Supported steps are tap, swipe, gesture, touch, type, button, key, key-sequence, key-combo, and pseudo-step sleep <seconds>. slider, drag, screenshot, describe-ui, video commands, list-simulators, and init are not accepted.
Setup
axe init
axe init --client claude
axe init --dest ~/.claude/skills
axe init --print
axe init --uninstall --client agentsNon-interactive axe init runs must pass --client, --dest, or --print.