AXedocs
Install

Command Reference

Every AXe command with source-derived flags, defaults, UDID requirements, and batch support.

axe list-simulators

List every simulator AXe can see, with state and UDID.

discoveryno UDID
axe describe-ui

Dump the accessibility tree as JSON for the whole screen or a single point.

discoveryrequires UDID
FlagTypeDefaultDescription
--udid requiredstringTarget simulator UDID.
--pointx,yDescribe only the element under that screen point.
axe tap

Tap a coordinate or the activation point of an accessibility match.

interactionrequires UDIDbatch step
FlagTypeDefaultDescription
-x / -ydoubleTap point. Both must be provided together.
--idstringMatch by AXUniqueId.
--labelstringMatch by AXLabel.
--valuestringMatch by AXValue.
--element-typestringNarrow selector results, for example Button, TextField, or Switch.
--tap-styleautomatic, simulator, physicalautomaticTap 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-timeoutdouble0Seconds to poll for a selector before failing.
--poll-intervaldouble0.25Polling cadence while waiting.
--pre-delaydoubleSeconds to wait before tapping. Range 0–10.
--post-delaydoubleSeconds to wait after tapping. Range 0–10.
--udid requiredstringTarget simulator UDID.
  • Provide either -x and -y, or exactly one of --id, --label, or --value.
axe slider

Set a slider to a verified 0–100 percentage via accessibility selector.

interactionrequires UDID
FlagTypeDefaultDescription
--idstringMatch by AXUniqueId.
--labelstringMatch by AXLabel.
--element-typestringNarrow matches, usually Slider.
--value requireddoubleTarget percentage, 0–100.
--wait-timeoutdouble0Seconds to poll for the slider before failing.
--poll-intervaldouble0.25Polling cadence while waiting.
--udid requiredstringTarget simulator UDID.
  • Uses one calibrated low-level HID drag, then re-reads AXValue and fails if outside tolerance.
  • Not supported as a batch step.
axe swipe

Multi-touch swipe gesture between two screen points.

interactionrequires UDIDbatch step
FlagTypeDefaultDescription
--start-x / --start-y requireddoubleStarting point.
--end-x / --end-y requireddoubleEnding point. Must differ from start.
--durationdouble1.0Total swipe duration in seconds.
--deltadouble50Distance between touch sample points in pixels.
--pre-delaydoubleRange 0–10.
--post-delaydoubleRange 0–10.
--udid requiredstringTarget simulator UDID.
axe drag

Low-level point-to-point drag using explicit touch move events.

interactionrequires UDID
FlagTypeDefaultDescription
--start-x / --start-y requireddoubleStarting point.
--end-x / --end-y requireddoubleEnding point. Must differ from start.
--durationdouble0.6Total drag duration in seconds.
--stepsint60Touch move event count. Range 1–1000.
--pre-delaydoubleRange 0–10.
--post-delaydoubleRange 0–10.
--udid requiredstringTarget simulator UDID.
  • Not supported as a batch step.
axe touch

Single-contact touch down, touch up, or both at one coordinate.

interactionrequires UDIDbatch step
FlagTypeDefaultDescription
-x / -y requireddoubleTouch point.
--downflagEmit a touch down event.
--upflagEmit a touch up event.
--delaydoubleSeconds between down and up when both are set. Range 0–10.
--udid requiredstringTarget simulator UDID.
  • At least one of --down or --up is required.
axe gesture

Run a preset gesture pattern such as scroll-down or swipe-from-left-edge.

interactionrequires UDIDbatch step
FlagTypeDefaultDescription
preset requiredenumscroll-up, scroll-down, scroll-left, scroll-right, or edge-swipe preset.
--screen-widthdouble390Logical screen width. Range 1–2000.
--screen-heightdouble844Logical screen height. Range 1–3000.
--durationdoubleRange 0–10. Preset default applies if omitted.
--deltadoubleRange 1–200. Preset default applies if omitted.
--pre-delaydoubleRange 0–10.
--post-delaydoubleRange 0–10.
--udid requiredstringTarget simulator UDID.
axe button

Press a hardware button: home, lock, side-button, siri, or apple-pay.

interactionrequires UDIDbatch step
FlagTypeDefaultDescription
buttonType requiredenumapple-pay, home, lock, side-button, or siri.
--durationdoubleHold duration. Range >0 and <=10.
--udid requiredstringTarget simulator UDID.
axe type

Type text from an argument, stdin, or a file via HID keyboard events.

keyboardrequires UDIDbatch step
FlagTypeDefaultDescription
textpositionalInline text. Mutually exclusive with --stdin and --file.
--stdinflagRead all stdin as text.
--filepathRead text from a file.
--udid requiredstringTarget simulator UDID.
  • Exactly one input source must be supplied.
  • US keyboard characters only; accented and non-ASCII characters fail.
axe key

Press a single HID keycode, optionally held.

keyboardrequires UDIDbatch step
FlagTypeDefaultDescription
keycode requiredint 0–255Positional HID keycode.
--durationdoubleHold duration. Range >0 and <=10.
--udid requiredstringTarget simulator UDID.
axe key-sequence

Press up to 100 keycodes in order.

keyboardrequires UDIDbatch step
FlagTypeDefaultDescription
--keycodes requiredcomma-separated ints 0–255List of HID keycodes.
--delaydouble0.1Seconds between presses. Range 0–5.
--udid requiredstringTarget simulator UDID.
axe key-combo

Hold up to eight modifier keycodes and press one target key atomically.

keyboardrequires UDIDbatch step
FlagTypeDefaultDescription
--modifiers requiredcomma-separated ints 0–255Modifiers held in order, released in reverse order.
--key requiredint 0–255Target keycode pressed once while modifiers are held.
--udid requiredstringTarget simulator UDID.
axe screenshot

Capture a PNG of the simulator display.

mediarequires UDID
FlagTypeDefaultDescription
--outputpathFile path, directory path, or omitted. Existing files are replaced.
--udid requiredstringTarget simulator UDID.
  • Prints the saved path to stdout. Not supported as a batch step.
axe record-video

Record the simulator to an MP4 until Ctrl+C.

mediarequires UDID
FlagTypeDefaultDescription
--fpsint 1–3010Capture frame rate.
--qualityint 1–10080H.264 quality factor.
--scaledouble 0.1–1.01.0Output scale.
--outputpathMP4 path or directory; auto-generated if omitted.
--udid requiredstringTarget simulator UDID.
  • SIGINT/SIGTERM finalizes the MP4 cleanly and prints its path to stdout.
axe stream-video

Stream simulator frames to stdout in mjpeg, raw, ffmpeg, or bgra format.

mediarequires UDID
FlagTypeDefaultDescription
--formatmjpeg|raw|ffmpeg|bgramjpegOutput format.
--fpsint 1–3010Capture frame rate. Ignored by bgra.
--qualityint 1–10080JPEG quality for compressed formats.
--scaledouble 0.1–1.01.0Output scale.
--udid requiredstringTarget simulator UDID.
  • Stdout is binary; pipe or redirect it.
axe batch

Run an ordered set of supported interaction steps in one HID session.

batchrequires UDID
FlagTypeDefaultDescription
--stepstring, repeatableInline step. Exactly one source allowed across --step, --file, and --stdin.
--filepathRead one step per line. Blank lines and # comments are ignored.
--stdinflagRead one step per line from stdin.
--ax-cacheperBatch|perStep|noneperBatchAccessibility snapshot reuse policy.
--type-submissionchunked|compositechunkedHow type steps submit HID events.
--type-chunk-sizeint >0200HID events per chunk when chunked.
--tap-styleautomatic, simulator, physicalautomaticDefault 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-errorflagCollect failures and report them at the end.
--wait-timeoutdouble0Seconds to poll for selector elements.
--poll-intervaldouble0.25Polling cadence.
--verboseflagVerbose stderr logging.
--udid requiredstringTarget simulator UDID. Per-step --udid is rejected.
  • Supported steps: tap, swipe, gesture, touch, type, button, key, key-sequence, key-combo, and sleep.
axe init

Install, uninstall, or print the bundled AXe agent skill.

setupno UDID
FlagTypeDefaultDescription
--clientauto|claude|agentsautoTarget AI client.
--destpathCustom skills directory. Overrides --client.
--forceflagOverwrite an existing skill file.
--uninstallflagRemove the installed skill.
--printflagPrint 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.

shell
axe list-simulators

describe-ui#

Dumps the accessibility tree as JSON. Use --point x,y to inspect only the element under one coordinate.

shell
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.

shell
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:

ValueBehavior
automaticDefault. Uses physical touch for switch-like controls, and simulator tapAt for other targets.
simulatorAlways sends a simulator tap event at the resolved point.
physicalAlways 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.

shell
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#

shell
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#

shell
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#

shell
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.mjpeg

screenshot, record-video, and stream-video are standalone commands, not batch steps. Video commands stop cleanly on Ctrl+C/SIGTERM.

Batch#

shell
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#

shell
axe init
axe init --client claude
axe init --dest ~/.claude/skills
axe init --print
axe init --uninstall --client agents

Non-interactive axe init runs must pass --client, --dest, or --print.