cameroncooke/AXe

AXe is a CLI tool for interacting with Simulators using Apple's Private Accessibility APIs.

Swift

2,270

136 commits

updated Jul 21, 2026

See the code

README

AXe

AXe is a comprehensive CLI tool for interacting with iOS Simulators using Apple's HID (Human Interface Device) functionality.

CI Licence: MIT

Install

brew tap cameroncooke/axe
brew install axe

Or install in one command:

brew install cameroncooke/axe/axe

Verify the CLI:

axe --help
axe list-simulators

Xcode compatibility

AXe supports Xcode 26 and Xcode 27. Xcode 27 simulator automation uses Device Hub; Simulator.app is not required.

Release artifacts are built once with the Xcode version selected by the release environment and run unchanged with either supported Xcode selected. Compatibility was validated with Xcode 26.5 (build 17F42) and iOS 26.5 (23F77), and with Xcode 27 Beta 3 (build 27A5218g) and iOS 27 (24A5380g).

AXe builds IDB from the immutable fork revision configured in scripts/build.sh, based on a verified upstream IDB revision. The build does not apply a local patch queue.

E2E development

make e2e rebuilds the local IDB XCFrameworks, builds AXe, and runs the simulator tests with the Xcode selected by DEVELOPER_DIR or xcode-select. XcodeGen is required to generate the IDB projects. When Xcode 27 is selected, the runner starts Device Hub, chooses an available iOS 27 iPhone 17 Pro, and boots it with simctl.

To validate a release payload unchanged under another supported Xcode, first build the test bundle with that Xcode, then run AXE_BIN_PATH=/path/to/release/axe ./test-runner.sh --tests-only. The supplied executable must retain its packaged frameworks beside it.

Basic usage

# Find a booted simulator UDID
axe list-simulators
export UDID=<UDID>

# Inspect the current UI
axe describe-ui --udid "$UDID"

# Interact with the simulator
axe tap --label "Continue" --udid "$UDID"
axe type 'Hello world' --udid "$UDID"
axe screenshot --output ./screen.png --udid "$UDID"

Documentation

Full documentation is available at axe-cli.com/docs.

Disclaimer

AXe is an independent open-source iOS Simulator automation project and is not affiliated with, endorsed by, or associated with Deque Systems or its axe® accessibility products.

Licence

This project is licensed under the MIT License. See LICENSE for details.

Third-party licensing notices, including Meta's IDB MIT attribution, are in THIRD_PARTY_LICENSES.

automation-framework
command-line-tool
idb
ios
simulators
swift
ui-automation

cameroncooke/AXe

AXe is a CLI tool for interacting with Simulators using Apple's Private Accessibility APIs.

Swift

2,270

136 commits

updated Jul 21, 2026

See the code

README

AXe

AXe is a comprehensive CLI tool for interacting with iOS Simulators using Apple's HID (Human Interface Device) functionality.

CI Licence: MIT

Install

brew tap cameroncooke/axe
brew install axe

Or install in one command:

brew install cameroncooke/axe/axe

Verify the CLI:

axe --help
axe list-simulators

Xcode compatibility

AXe supports Xcode 26 and Xcode 27. Xcode 27 simulator automation uses Device Hub; Simulator.app is not required.

Release artifacts are built once with the Xcode version selected by the release environment and run unchanged with either supported Xcode selected. Compatibility was validated with Xcode 26.5 (build 17F42) and iOS 26.5 (23F77), and with Xcode 27 Beta 3 (build 27A5218g) and iOS 27 (24A5380g).

AXe builds IDB from the immutable fork revision configured in scripts/build.sh, based on a verified upstream IDB revision. The build does not apply a local patch queue.

E2E development

make e2e rebuilds the local IDB XCFrameworks, builds AXe, and runs the simulator tests with the Xcode selected by DEVELOPER_DIR or xcode-select. XcodeGen is required to generate the IDB projects. When Xcode 27 is selected, the runner starts Device Hub, chooses an available iOS 27 iPhone 17 Pro, and boots it with simctl.

To validate a release payload unchanged under another supported Xcode, first build the test bundle with that Xcode, then run AXE_BIN_PATH=/path/to/release/axe ./test-runner.sh --tests-only. The supplied executable must retain its packaged frameworks beside it.

Basic usage

# Find a booted simulator UDID
axe list-simulators
export UDID=<UDID>

# Inspect the current UI
axe describe-ui --udid "$UDID"

# Interact with the simulator
axe tap --label "Continue" --udid "$UDID"
axe type 'Hello world' --udid "$UDID"
axe screenshot --output ./screen.png --udid "$UDID"

Documentation

Full documentation is available at axe-cli.com/docs.

Disclaimer

AXe is an independent open-source iOS Simulator automation project and is not affiliated with, endorsed by, or associated with Deque Systems or its axe® accessibility products.

Licence

This project is licensed under the MIT License. See LICENSE for details.

Third-party licensing notices, including Meta's IDB MIT attribution, are in THIRD_PARTY_LICENSES.

automation-framework
command-line-tool
idb
ios
simulators
swift
ui-automation

Significant stargazers

(top 24 of 57)

IKEDA Sho

664 followers · starred Oct 2025

Kevin Deldycke

2,207 followers · starred Oct 2025

Miguel de Icaza

5,288 followers · starred Dec 2025

杨朱 · Kiki

152 followers · starred May 2026