Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

704 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NPM License: MIT Twitter NPM

Welcome 👋

npm install -g go-ios can be used to get going. Run ios --help after the installation for details. For iOS 17+ devices you need to run sudo ios tunnel start for go ios to work. This will start a tunnel daemon. To make this work on Windows, download the latest wintun.dll from here https://git.zx2c4.com/wintun and copy it to C:/Windows/system32

The goal of this project is to provide a stable and production ready opensource solution to automate iOS device on Linux, Windows and Mac OS X. I am delighted to announce that a few companies including headspin.io and Sauce Labs will use or are using go-iOS.

Follow my twitter for updates or check out my medium blog: https://daniel-paulus.medium.com/

If you are interested in using go-iOS please get in touch on LinkedIn, Twitter or the Github discussions above, I always love to hear what people are doing with it.

If you miss something your Mac can do but go-iOS can't, just request a feature in the issues tab.

New REST-API

Go-iOS is getting an experimental REST-API check it out https://github.com/danielpaulus/go-ios/tree/main/restapi

Design principles:

  1. Using golang to compile static, small and fast binaries for all platforms very easily.

    Build Manual: Install golang and run go build

  2. All output as JSON so you can easily use go-iOS from any other programming language

  3. Everything is a module, you can use go-iOS in golang projects as a module dependency easily

Features:

Most notable:

  • Install apps zipped as ipa or unzipped from their .app folder ios install --path=/path/to/app
  • Run XCTests including WebdriverAgent on Linux, Windows and Mac
  • Start and Stop apps
  • Use a debug proxy to reverse engineer every tool Mac OSX has, so you can contrib to go-ios or build your own
  • Pair devices without manual tapping on a popup
  • Install developer images automatically by running ios image auto
  • Set thermal states and network emulation on the device with the ios devicestate command

Help:

ios --help
ios help <command>
ios <command> --help
go-ios local-build

Cross-platform iOS automation CLI.

Usage:
  ios [--help]
  ios help [<command>...]
  ios <command> [<args>...]

Global options:
  -h, --help                 Show help.
  -v, --verbose              Enable debug logging.
  -t, --trace                Enable trace logging.
  --nojson                   Disable JSON output.
  --pretty                   Pretty-print JSON output.
  --udid=<udid>              Target a specific device.
  --tunnel-info-port=<port>  Tunnel info API port (default 28100).
  --tunnel-info-host=<host>  Tunnel info API host (default 127.0.0.1 or GO_IOS_AGENT_HOST).
  --address=<ipv6addr>       Device tunnel address.
  --rsd-port=<port>          Device tunnel RSD port.
  --proxyurl=<url>           Outbound HTTP proxy URL.
  --userspace-port=<port>    Userspace tunnel port.

Commands:
  activate                        Activate a device.
  apps                            List installed applications.
  assistivetouch                  Manage AssistiveTouch state.
  ax                              Accessibility inspector features.
  ax audit                        Run accessibility audit.
  batterycheck                    Battery information.
  batteryregistry                 Battery registry metrics.
  crash cp                        Copy crash reports.
  crash ls                        List crash reports.
  crash rm                        Remove crash reports.
  date                            Print device date.
  debug                           Start LLDB debug session.
  devicename                      Print device name.
  devicestate enable              Enable device condition profile.
  devicestate list                List device condition profiles.
  devmode                         Manage developer mode.
  diagnostics list                List diagnostics.
  diskspace                       Print disk usage.
  dproxy                          Start debug proxy.
  erase                           Erase device.
  file ls                         List files in app/group/temp/crash container.
  file pull                       Pull file from device.
  file push                       Push file to device.
  forward                         Forward host port to device.
  fsync                           App container file sync operations.
  httpproxy                       Install global HTTP proxy profile.
  httpproxy remove                Remove go-ios HTTP proxy profile.
  image auto                      Auto-download and mount developer image.
  image list                      List mounted developer images.
  image mount                     Mount developer image.
  image unmount                   Unmount developer image.
  info                            Dump device info.
  install                         Install app bundle or IPA.
  instruments fps                 Stream frames-per-second samples.
  instruments network             Stream network activity samples.
  instruments notifications       Stream app state notifications.
  ip                              Detect device IP from packet capture.
  kill                            Kill app by bundle ID, PID, or process.
  lang                            Read or set device language and locale.
  launch                          Launch app by bundle ID.
  list                            List connected devices.
  listen                          Listen for device connect/disconnect.
  lockdown get                    Query lockdown values.
  memlimitoff                     Disable process memory limit.
  mobilegestalt                   Query mobilegestalt keys.
  ostrace                         Stream os_trace_relay logs.
  pair                            Pair host with device.
  pcap                            Capture network packets.
  prepare                         Prepare device for automation.
  prepare cloudconfig             Print cloud configuration.
  prepare create-cert             Create supervision certificate.
  prepare printskip               Print prepare skip options.
  profile add                     Install profile on device.
  profile list                    List installed profiles.
  profile remove                  Remove installed profile.
  ps                              List running processes.
  readpair                        Dump pair record.
  reboot                          Reboot device.
  resetax                         Reset accessibility settings.
  resetlocation                   Reset simulated location.
  rsd ls                          List RSD services.
  runtest                         Run XCUITest bundles.
  runwda                          Run WebDriverAgent.
  runxctest                       Run XCTest from .xctestrun file.
  screenshot                      Capture screenshot or stream MJPEG.
  setlocation                     Set simulated location coordinates.
  setlocationgpx                  Set simulated location from GPX.
  sign app                        Sign an app with a P12 and profile; run ui download first for WDA or DeviceKit artifacts.
  sign provision appstoreconnect  Create signing assets through App Store Connect.
  syslog                          Stream device syslog.
  sysmontap                       Stream CPU and memory metrics.
  timeformat                      Manage time format setting.
  tunnel ls                       List running tunnels.
  tunnel start                    Start iOS 17+ tunnel and pair if needed.
  tunnel stopagent                Stop tunnel agent.
  ui                              Control UI through WebDriverAgent or DeviceKit.
  ui download                     Download WDA and/or DeviceKit artifacts and print paths as JSON.
  ui install                      Download defaults, or use --path, then sign and install WDA or DeviceKit.
  uninstall                       Uninstall app by bundle ID.
  version                         Print version.
  voiceover                       Manage VoiceOver state.
  webinspector cdp                Start a Chrome DevTools Protocol bridge.
  webinspector eval               Evaluate JavaScript in an inspectable page.
  webinspector js-shell           Start an interactive JavaScript shell for an inspectable page.
  webinspector launch             Launch and navigate Safari or another app by Remote Automation.
  webinspector list               List inspectable Safari and WebView pages.
  wifi                            Install or remove a Wi-Fi auto-connect profile (supervised + setup = silent, else confirm on device).
  zoom                            Manage Zoom state.

Run 'ios help <command>' or 'ios <command> --help' for command details.

About

This is an operating system independent implementation of iOS device features. You can run UI tests, launch or kill apps, install apps etc. with it.

Topics

Resources

Contributing

Stars

2.2k stars

Watchers

37 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages