| name | foxctl Mobile |
| description | Unified mobile simulator automation for iOS and Android - list devices, install apps, take screenshots, interact with UI, and debug Expo apps. |
Mobile Simulator Automation
Cross-platform mobile automation for iOS Simulator (via IDB) and Android Emulator (via ADB).
Prerequisites
- iOS:
brew install idb-companion
- Android:
brew install android-platform-tools or Android SDK
Quick Start
List All Devices
Get devices from both platforms:
foxctl run mobile --input '{"operation": "list_devices"}'
Platform-Specific Operations
For operations other than list_devices, specify the platform:
foxctl run mobile --input '{"platform": "ios", "operation": "screenshot"}'
foxctl run mobile --input '{"platform": "android", "operation": "screenshot"}'
Common Operations
Device Management
foxctl run mobile --input '{"operation": "list_devices"}'
foxctl run mobile --input '{"platform": "ios", "operation": "device_info", "device": "<udid>"}'
foxctl run mobile --input '{"platform": "android", "operation": "device_info", "device": "emulator-5554"}'
App Lifecycle
foxctl run mobile --input '{"platform": "ios", "operation": "install", "app": "/path/to/app.app"}'
foxctl run mobile --input '{"platform": "android", "operation": "install", "app": "/path/to/app.apk"}'
foxctl run mobile --input '{"platform": "ios", "operation": "launch", "app": "com.example.myapp"}'
foxctl run mobile --input '{"platform": "android", "operation": "launch", "app": "com.example.myapp"}'
foxctl run mobile --input '{"platform": "ios", "operation": "terminate", "app": "com.example.myapp"}'
Screenshots
foxctl run mobile --input '{"platform": "ios", "operation": "screenshot"}'
foxctl run mobile --input '{"platform": "android", "operation": "screenshot"}'
foxctl run mobile --input '{"platform": "ios", "operation": "screenshot", "output": "/tmp/screen.png"}'
UI Interaction
foxctl run mobile --input '{"platform": "ios", "operation": "tap", "x": 200, "y": 400}'
foxctl run mobile --input '{"platform": "android", "operation": "swipe", "x": 200, "y": 600, "x2": 200, "y2": 200}'
foxctl run mobile --input '{"platform": "ios", "operation": "type_text", "text": "Hello World"}'
UI Inspection
foxctl run mobile --input '{"platform": "ios", "operation": "ui_tree"}'
foxctl run mobile --input '{"platform": "android", "operation": "ui_tree"}'
Debugging
foxctl run mobile --input '{"platform": "ios", "operation": "logs"}'
foxctl run mobile --input '{"platform": "android", "operation": "logs"}'
Open URLs
foxctl run mobile --input '{"platform": "ios", "operation": "open_url", "url": "https://example.com"}'
Expo Development
For Expo-specific features like shake gesture and dev menu, use the iOS-specific skill:
foxctl run mobile/ios --input '{"operation": "shake"}'
foxctl run mobile/ios --input '{"operation": "expo_deep_link", "expo_url": "exp://192.168.1.100:8081"}'
foxctl run mobile/ios --input '{"operation": "expo_reload"}'
Available Operations
| Operation | iOS | Android | Description |
|---|
list_devices | Yes | Yes | List available simulators/emulators |
device_info | Yes | Yes | Get device properties |
install | Yes | Yes | Install app |
launch | Yes | Yes | Launch app by bundle ID/package |
terminate | Yes | Yes | Stop running app |
screenshot | Yes | Yes | Capture screen (stored in CAS) |
tap | Yes | Yes | Tap at x,y coordinates |
swipe | Yes | Yes | Swipe from x1,y1 to x2,y2 |
type_text | Yes | Yes | Input text |
ui_tree | Yes | Yes | Get accessibility tree |
logs | Yes | Yes | Get device logs |
open_url | Yes | Yes | Open URL |
Platform-Specific Skills
For advanced platform-specific operations, use:
/foxctl-mobile-ios - iOS Simulator with Expo features
/foxctl-mobile-android - Android Emulator with ADB features