{"id":20394817,"url":"https://github.com/danielpaulus/go-ios","last_synced_at":"2026-01-26T11:02:03.078Z","repository":{"id":37726101,"uuid":"188971040","full_name":"danielpaulus/go-ios","owner":"danielpaulus","description":"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. ","archived":false,"fork":false,"pushed_at":"2026-01-23T16:28:07.000Z","size":95161,"stargazers_count":1772,"open_issues_count":191,"forks_count":285,"subscribers_count":36,"default_branch":"main","last_synced_at":"2026-01-24T03:28:22.418Z","etag":null,"topics":["appium-ios","dtx","dtx-framework","golang","hacktoberfest","hacktoberfest2022","hacktoberfest2023","instruments","ios","linux","xcuitest"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danielpaulus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["danielpaulus"]}},"created_at":"2019-05-28T06:51:01.000Z","updated_at":"2026-01-23T16:27:55.000Z","dependencies_parsed_at":"2026-01-19T13:01:38.322Z","dependency_job_id":null,"html_url":"https://github.com/danielpaulus/go-ios","commit_stats":{"total_commits":262,"total_committers":39,"mean_commits":6.717948717948718,"dds":0.6183206106870229,"last_synced_commit":"6a94ebeb7d615f0aa51b60198795938d8d11938f"},"previous_names":[],"tags_count":197,"template":false,"template_full_name":null,"purl":"pkg:github/danielpaulus/go-ios","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpaulus%2Fgo-ios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpaulus%2Fgo-ios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpaulus%2Fgo-ios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpaulus%2Fgo-ios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielpaulus","download_url":"https://codeload.github.com/danielpaulus/go-ios/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielpaulus%2Fgo-ios/sbom","scorecard":{"id":320262,"data":{"date":"2025-08-11","repo":{"name":"github.com/danielpaulus/go-ios","commit":"275144b5ec22aec9da08db3efca078f6ba2cce5e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4,"checks":[{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":5,"reason":"6 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/deploy.yml:1","Warn: no topLevel permission defined: .github/workflows/real-device.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/deploy.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/deploy.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy.yml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/deploy.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/deploy.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/real-device.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/real-device.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/real-device.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/real-device.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/real-device.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/real-device.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/real-device.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/real-device.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/real-device.yml:102: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/real-device.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/real-device.yml:108: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/real-device.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/real-device.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/real-device.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/real-device.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/real-device.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:112: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:136: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/danielpaulus/go-ios/test.yml/main?enable=pin","Warn: containerImage not pinned by hash: usbmuxdbuild/Dockerfile:1: pin your Docker image by updating ubuntu:latest to ubuntu:latest@sha256:7c06e91f61fa88c08cc74f7e1b7c69ae24910d745357e0dfe1d2c0322aaf20f9","Warn: goCommand not pinned by hash: .github/workflows/deploy.yml:38","Warn: npmCommand not pinned by hash: .github/workflows/release.yml:160","Info:   0 out of  25 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   5 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   1 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.0.182 not signed: https://api.github.com/repos/danielpaulus/go-ios/releases/232770368","Warn: release artifact v1.0.181 not signed: https://api.github.com/repos/danielpaulus/go-ios/releases/230725462","Warn: release artifact v1.0.180 not signed: https://api.github.com/repos/danielpaulus/go-ios/releases/226150491","Warn: release artifact v1.0.179 not signed: https://api.github.com/repos/danielpaulus/go-ios/releases/226146587","Warn: release artifact v1.0.178 not signed: https://api.github.com/repos/danielpaulus/go-ios/releases/224223230","Warn: release artifact v1.0.182 does not have provenance: https://api.github.com/repos/danielpaulus/go-ios/releases/232770368","Warn: release artifact v1.0.181 does not have provenance: https://api.github.com/repos/danielpaulus/go-ios/releases/230725462","Warn: release artifact v1.0.180 does not have provenance: https://api.github.com/repos/danielpaulus/go-ios/releases/226150491","Warn: release artifact v1.0.179 does not have provenance: https://api.github.com/repos/danielpaulus/go-ios/releases/226146587","Warn: release artifact v1.0.178 does not have provenance: https://api.github.com/repos/danielpaulus/go-ios/releases/224223230"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":1,"reason":"SAST tool is not run on all commits -- score normalized to 1","details":["Warn: 3 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"11 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2024-2459 / GHSA-ppxx-5m9h-6vxf","Warn: Project is vulnerable to: GO-2024-2682 / GHSA-c33x-xqrf-c478","Warn: Project is vulnerable to: GO-2024-3302 / GHSA-px8v-pp82-rcvr","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2024-2611 / GHSA-8r3f-844c-mc37","Warn: Project is vulnerable to: GHSA-3vp4-m3rf-835h","Warn: Project is vulnerable to: GO-2023-1737 / GHSA-2c4m-59x9-fr2g"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T01:11:14.318Z","repository_id":37726101,"created_at":"2025-08-18T01:11:14.319Z","updated_at":"2025-08-18T01:11:14.319Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28776231,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T09:42:00.929Z","status":"ssl_error","status_checked_at":"2026-01-26T09:42:00.591Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appium-ios","dtx","dtx-framework","golang","hacktoberfest","hacktoberfest2022","hacktoberfest2023","instruments","ios","linux","xcuitest"],"created_at":"2024-11-15T03:54:23.238Z","updated_at":"2026-01-26T11:02:03.040Z","avatar_url":"https://github.com/danielpaulus.png","language":"Go","funding_links":["https://github.com/sponsors/danielpaulus"],"categories":[],"sub_categories":[],"readme":"[![](https://dcbadge.vercel.app/api/server/Zr8J3bCdkv)](https://discord.gg/Zr8J3bCdkv)\n[![NPM](https://nodei.co/npm/go-ios.png?mini=true)](https://npmjs.org/package/go-ios)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Twitter](https://img.shields.io/twitter/url/https/twitter.com/daniel1paulus.svg?style=social\u0026label=Follow%20%40daniel1paulus)](https://twitter.com/daniel1paulus)\n[![NPM](https://img.shields.io/npm/dw/go-ios?style=flat-square)](https://npmjs.org/package/go-ios)\n\n\u003cimg src=\"logo.png\" width=\"256\"/\u003e\n\nWelcome 👋\n\n`npm install -g go-ios` can be used to get going. Run `ios --help` after the installation for details. \nFor iOS 17+ devices you need to run `sudo ios tunnel start` for go ios to work. This will start a tunnel daemon. \nTo make this work on Windows, download the latest wintun.dll from here `https://git.zx2c4.com/wintun` and copy it to `C:/Windows/system32`\n\nThe 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](https://www.headspin.io/) and [Sauce Labs](https://saucelabs.com/) will use or are using go-iOS. \n\nFollow my twitter for updates or check out my medium blog: https://daniel-paulus.medium.com/\n\nIf 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. \n\nIf you miss something your Mac can do but go-iOS can't, just request a feature in the issues tab.\n# New REST-API\nGo-iOS is getting an experimental REST-API check it out [https://github.com/danielpaulus/go-ios/tree/main/restapi](https://github.com/danielpaulus/go-ios/tree/main/restapi) \n\n# Design principles:\n1. Using golang to compile static, small and fast binaries for all platforms very easily. \n   \n   *Build Manual*: Install golang and run `go build`\n2. All output as JSON so you can easily use go-iOS from any other programming language\n3. Everything is a module, you can use go-iOS in golang projects as a module dependency easily\n\n# Features:\n Most notable:\n - Install apps zipped as ipa or unzipped from their .app folder `ios install --path=/path/to/app`\n - Run XCTests including WebdriverAgent on Linux, Windows and Mac\n - Start and Stop apps\n - Use a debug proxy to reverse engineer every tool Mac OSX has, so you can contrib to go-ios or build      your own\n - Pair devices without manual tapping on a popup\n - Install developer images automatically by running `ios image auto`\n - Set thermal states and network emulation on the device with the `ios devicestate` command\n\nAll features:\n\n```\nOptions:\n  -v --verbose              Enable Debug Logging.\n  -t --trace                Enable Trace Logging (dump every message).\n  --nojson                  Disable JSON output\n  --pretty                  Pretty-print JSON command output\n  -h --help                 Show this screen.\n  --udid=\u003cudid\u003e             UDID of the device.\n  --tunnel-info-port=\u003cport\u003e When go-ios is used to manage tunnels for iOS 17+ it exposes them on an HTTP-API for localhost (default port: 28100)\n  --address=\u003cipv6addrr\u003e     Address of the device on the interface. This parameter is optional and can be set if a tunnel created by MacOS needs to be used.\n  \u003e                         To get this value run \"log stream --debug --info --predicate 'eventMessage LIKE \"*Tunnel established*\" OR eventMessage LIKE \"*for server port*\"'\",\n  \u003e                         connect a device and open Xcode\n  --rsd-port=\u003cport\u003e         Port of remote service discovery on the device through the tunnel\n  \u003e                         This parameter is similar to '--address' and can be obtained by the same log filter\n  --proxyurl=\u003curl\u003e          Set this if you want go-ios to use a http proxy for outgoing requests, like for downloading images or contacting Apple during device activation.\n  \u003e                         A simple format like: \"http://PROXY_LOGIN:PROXY_PASS@proxyIp:proxyPort\" works. Otherwise use the HTTP_PROXY system env var.\n  --userspace-port=\u003cport\u003e   Optional. Set this if you run a command supplying rsd-port and address and your device is using userspace tunnel\n\nThe commands work as following:\n\tThe default output of all commands is JSON. Should you prefer human readable outout, specify the --nojson option with your command.\n\tBy default, the first device found will be used for a command unless you specify a --udid=some_udid switch.\n\tSpecify -v for debug logging and -t for dumping every message.\n\n      ios --version | version [options]                                  Prints the version\n   ios -h | --help                                                    Prints this screen.\n   ios activate [options]                                             Activate a device\n   ios apps [--system] [--all] [--list] [--filesharing]               Retrieves a list of installed applications. --system prints out preinstalled system apps. --all prints all apps, including system, user, and hidden apps. --list only prints bundle ID, bundle name and version number. --filesharing only prints apps which enable documents sharing.\n   ios assistivetouch (enable | disable | toggle | get) [--force] [options] Enables, disables, toggles, or returns the state of the \"AssistiveTouch\" software home-screen button. iOS 11+ only (Use --force to try on older versions).\n   ios ax [--font=\u003cfontSize\u003e] [options]                               Access accessibility inspector features.\n   ios batterycheck [options]                                         Prints battery info.\n   ios batteryregistry [options]                                      Prints battery registry stats like Temperature, Voltage.\n   ios crash cp \u003csrcpattern\u003e \u003ctarget\u003e [options]                       copy \"file pattern\" to the target dir. Ex.: 'ios crash cp \"*\" \"./crashes\"'\n   ios crash ls [\u003cpattern\u003e] [options]                                 run \"ios crash ls\" to get all crashreports in a list,\n   \u003e                                                                  or use a pattern like 'ios crash ls \"*ips*\"' to filter\n   ios crash rm \u003ccwd\u003e \u003cpattern\u003e [options]                             remove file pattern from dir. Ex.: 'ios crash rm \".\" \"*\"' to delete everything\n   ios date [options]                                                 Prints the device date\n   ios debug [--stop-at-entry] \u003capp_path\u003e                             Start debug with lldb\n   ios devicename [options]                                           Prints the devicename\n   ios devicestate enable \u003cprofileTypeId\u003e \u003cprofileId\u003e [options]       Enables a profile with ids (use the list command to see options). It will only stay active until the process is terminated.\n   \u003e                                                                  Ex. \"ios devicestate enable SlowNetworkCondition SlowNetwork3GGood\"\n   ios devicestate list [options]                                     Prints a list of all supported device conditions, like slow network, gpu etc.\n   ios devmode (enable | get) [--enable-post-restart] [options]\t  Enable developer mode on the device or check if it is enabled. Can also completely finalize developer mode setup after device is restarted.\n   ios diagnostics list [options]                                     List diagnostic infos\n   ios diskspace [options]\t\t\t\t\t\t\t\t\t\t\t  Prints disk space info.\n   ios dproxy [--binary] [--mode=\u003call(default)|usbmuxd|utun\u003e] [--iface=\u003ciface\u003e] [options] Starts the reverse engineering proxy server.\n   \u003e                                                                  It dumps every communication in plain text so it can be implemented easily.\n   \u003e                                                                  Use \"sudo launchctl unload -w /Library/Apple/System/Library/LaunchDaemons/com.apple.usbmuxd.plist\"\n   \u003e                                                                  to stop usbmuxd and load to start it again should the proxy mess up things.\n   \u003e                                                                  The --binary flag will dump everything in raw binary without any decoding.\n   ios erase [--force] [options]                                      Erase the device. It will prompt you to input y+Enter unless --force is specified.\n   ios forward [options] \u003chostPort\u003e \u003ctargetPort\u003e                      Similar to iproxy, forward a TCP connection to the device.\n   ios fsync [--app=bundleId] [options] (pull | push) --srcPath=\u003csrcPath\u003e --dstPath=\u003cdstPath\u003e    Pull or Push file from srcPath to dstPath.\n   ios fsync [--app=bundleId] [options] (rm [--r] | tree | mkdir) --path=\u003ctargetPath\u003e            Remove | treeview | mkdir in target path. --r used alongside rm will recursively remove all files and directories from target path.\n   ios httpproxy \u003chost\u003e \u003cport\u003e [\u003cuser\u003e] [\u003cpass\u003e] --p12file=\u003corgid\u003e [--password=\u003cp12password\u003e] set global http proxy on supervised device. Use the password argument or set the environment variable 'P12_PASSWORD'\n   \u003e                                                                  Specify proxy password either as argument or using the environment var: PROXY_PASSWORD\n   \u003e                                                                  Use p12 file and password for silent installation on supervised devices.\n   ios httpproxy remove [options]                                     Removes the global http proxy config. Only works with http proxies set by go-ios!\n   ios image auto [--basedir=\u003cwhere_dev_images_are_stored\u003e] [options] Automatically download correct dev image from the internets and mount it.\n   \u003e                                                                  You can specify a dir where images should be cached.\n   \u003e                                                                  The default is the current dir.\n   ios image list [options]                                           List currently mounted developers images' signatures\n   ios image mount [--path=\u003cimagepath\u003e] [options]                     Mount a image from \u003cimagepath\u003e\n   \u003e                                                                  For iOS 17+ (personalized developer disk images) \u003cimagepath\u003e must point to the \"Restore\" directory inside the developer disk\n   ios image unmount [options]                                        Unmount developer disk image\n   ios info [display | lockdown] [options]                            Prints a dump of device information from the given source.\n   ios install --path=\u003cipaOrAppFolder\u003e [options]                      Specify a .app folder or an installable ipa file that will be installed.\n   ios instruments notifications [options]                            Listen to application state notifications\n   ios ip [options]                                                   Uses the live pcap iOS packet capture to wait until it finds one that contains the IP address of the device.\n   \u003e                                                                  It relies on the MAC address of the WiFi adapter to know which is the right IP.\n   \u003e                                                                  You have to disable the \"automatic wifi address\"-privacy feature of the device for this to work.\n   \u003e                                                                  If you wanna speed it up, open apple maps or similar to force network traffic.\n   \u003e                                                                  f.ex. \"ios launch com.apple.Maps\"\n   ios kill (\u003cbundleID\u003e | --pid=\u003cprocessID\u003e | --process=\u003cprocessName\u003e) [options] Kill app with the specified bundleID, process id, or process name on the device.\n   ios lang [--setlocale=\u003clocale\u003e] [--setlang=\u003cnewlang\u003e] [options]    Sets or gets the Device language. ios lang will print the current language and locale, as well as a list of all supported langs and locales.\n   ios launch \u003cbundleID\u003e [--wait] [--kill-existing] [--arg=\u003ca\u003e]... [--env=\u003ce\u003e]... [options] Launch app with the bundleID on the device. Get your bundle ID from the apps command. --wait keeps the connection open if you want logs.\n   ios list [options] [--details]                                     Prints a list of all connected device's udids. If --details is specified, it includes version, name and model of each device.\n   ios listen [options]                                               Keeps a persistent connection open and notifies about newly connected or disconnected devices.\n   ios lockdown get [\u003ckey\u003e] [--domain=\u003cdomain\u003e] [options]             Query lockdown values. Without arguments returns all values. Specify a key to get a specific value.\n   \u003e                                                                  Use --domain to query from a specific domain (e.g., com.apple.disk_usage, com.apple.PurpleBuddy).\n   \u003e                                                                  Examples: \"ios lockdown get DeviceName\", \"ios lockdown get --domain=com.apple.PurpleBuddy\"\n   ios memlimitoff (--process=\u003cprocessName\u003e) [options]                Waives memory limit set by iOS (For instance a Broadcast Extension limit is 50 MB).\n   ios mobilegestalt \u003ckey\u003e... [--plist] [options]                     Lets you query mobilegestalt keys. Standard output is json but if desired you can get\n   \u003e                                                                  it in plist format by adding the --plist param.\n   \u003e                                                                  Ex.: \"ios mobilegestalt MainScreenCanvasSizes ArtworkTraits --plist\"\n   ios pair [--p12file=\u003corgid\u003e] [--password=\u003cp12password\u003e] [options]  Pairs the device. If the device is supervised, specify the path to the p12 file\n   \u003e                                                                  to pair without a trust dialog. Specify the password either with the argument or\n   \u003e                                                                  by setting the environment variable 'P12_PASSWORD'\n   ios pcap [options] [--pid=\u003cprocessID\u003e] [--process=\u003cprocessName\u003e]   Starts a pcap dump of network traffic, use --pid or --process to filter specific processes.\n   ios prepare [--skip-all] [--skip=\u003coption\u003e]... [--certfile=\u003ccert_file_path\u003e] [--orgname=\u003corg_name\u003e] [--p12password=\u003cp12password\u003e] [--locale] [--lang] [options] prepare a device. Use skip-all to skip everything multiple --skip args to skip only a subset.\n   \u003e                                                                  You can use 'ios prepare printskip' to get a list of all options to skip. Use certfile and orgname if you want to supervise the device.\n   \u003e                                                                  The certfile can be a DER file, PEM file, or P12 file. For P12 files, specify the password with --p12password or P12_PASSWORD env var.\n   \u003e                                                                  If you need certificates to supervise, run 'ios prepare create-cert' and go-ios will generate one you can use.\n   \u003e                                                                  locale and lang are optional, the default is en_US and en. Run 'ios lang' to see a list of all supported locales and languages.\n   ios prepare create-cert                                            A nice util to generate a certificate you can use for supervising devices. Make sure you rename and store it in a safe place.\n   ios prepare printskip                                              Print all options you can skip.\n   ios profile add \u003cprofileFile\u003e [--p12file=\u003corgid\u003e] [--password=\u003cp12password\u003e] Install profile file on the device. If supervised set p12file and password or the environment variable 'P12_PASSWORD'\n   ios profile list                                                   List the profiles on the device\n   ios profile remove \u003cprofileName\u003e                                   Remove the profileName from the device\n   ios ps [--apps] [options]                                          Dumps a list of running processes on the device.\n   \u003e                                                                  Use --nojson for a human-readable listing including BundleID when available. (not included with JSON output)\n   \u003e                                                                  --apps limits output to processes flagged by iOS as \"isApplication\". This greatly-filtered list\n   \u003e                                                                  should at least include user-installed software.  Additional packages will also be displayed depending on the version of iOS.\n   ios readpair                                                       Dump detailed information about the pairrecord for a device.\n   ios reboot [options]                                               Reboot the given device\n   ios resetax [options]                                              Reset accessibility settings to defaults.\n   ios resetlocation [options]                                        Resets the location of the device to the actual one\n   ios rsd ls [options]\t\t\t\t\t\t\t\t\t\t\t  List RSD services and their port.\n   ios runtest [--bundle-id=\u003cbundleid\u003e] [--test-runner-bundle-id=\u003ctestbundleid\u003e] [--xctest-config=\u003cxctestconfig\u003e] [--log-output=\u003cfile\u003e] [--xctest] [--test-to-run=\u003ctests\u003e]... [--test-to-skip=\u003ctests\u003e]... [--env=\u003ce\u003e]... [options]                    Run a XCUITest. If you provide only bundle-id go-ios will try to dynamically create test-runner-bundle-id and xctest-config.\n   \u003e                                                                  If you provide '-' as log output, it prints resuts to stdout.\n   \u003e                                                                  To be able to filter for tests to run or skip, use one argument per test selector. Example: runtest --test-to-run=(TestTarget.)TestClass/testMethod --test-to-run=(TestTarget.)TestClass/testMethod (the value for 'TestTarget' is optional)\n   \u003e                                                                  The method name can also be omitted and in this case all tests of the specified class are run\n   ios runwda [--bundleid=\u003cbundleid\u003e] [--testrunnerbundleid=\u003ctestbundleid\u003e] [--xctestconfig=\u003cxctestconfig\u003e] [--log-output=\u003cfile\u003e] [--arg=\u003ca\u003e]... [--env=\u003ce\u003e]...[options]  runs WebDriverAgents\n   \u003e                                                                  specify runtime args and env vars like --env ENV_1=something --env ENV_2=else  and --arg ARG1 --arg ARG2\n   ios runxctest [--xctestrun-file-path=\u003cxctestrunFilePath\u003e]  [--log-output=\u003cfile\u003e] [options]                    Run a XCTest. The --xctestrun-file-path specifies the path to the .xctestrun file to configure the test execution.\n   \u003e                                                                  If you provide '-' as log output, it prints resuts to stdout.\n   ios screenshot [options] [--output=\u003coutfile\u003e] [--stream] [--port=\u003cport\u003e]  Takes a screenshot and writes it to the current dir or to \u003coutfile\u003e  If --stream is supplied it\n   \u003e                                                                  starts an mjpeg server at 0.0.0.0:3333. Use --port to set another port.\n   ios setlocation [options] [--lat=\u003clat\u003e] [--lon=\u003clon\u003e]              Updates the location of the device to the provided by latitude and longitude coordinates. Example: setlocation --lat=40.730610 --lon=-73.935242\n   ios setlocationgpx [options] [--gpxfilepath=\u003cgpxfilepath\u003e]         Updates the location of the device based on the data in a GPX file. Example: setlocationgpx --gpxfilepath=/home/username/location.gpx\n   ios syslog [--parse] [options]                                     Prints a device's log output, Use --parse to parse the fields from the log\n   ios sysmontap                                                      Get system stats like MEM, CPU\n   ios timeformat (24h | 12h | toggle | get) [--force] [options] Sets, or returns the state of the \"time format\". iOS 11+ only (Use --force to try on older versions).\n   ios tunnel ls                                                      List currently started tunnels. Use --enabletun to activate using TUN devices rather than user space network. Requires sudo/admin shells. \n   ios tunnel start [options] [--pair-record-path=\u003cpairrecordpath\u003e] [--enabletun]   Creates a tunnel connection to the device. If the device was not paired with the host yet, device pairing will also be executed.\n   \u003e           \t\t\t\t\t\t\t\t\t\t\t\t\t\t  On systems with System Integrity Protection enabled the argument '--pair-record-path=default' can be used to point to /var/db/lockdown/RemotePairing/user_501.\n   \u003e                                                                  If nothing is specified, the current dir is used for the pair record.\n   \u003e                                                                  This command needs to be executed with admin privileges.\n   \u003e                                                                  (On MacOS the process 'remoted' must be paused before starting a tunnel is possible 'sudo pkill -SIGSTOP remoted', and 'sudo pkill -SIGCONT remoted' to resume)\n   ios voiceover (enable | disable | toggle | get) [--force] [options] Enables, disables, toggles, or returns the state of the \"VoiceOver\" software home-screen button. iOS 11+ only (Use --force to try on older versions).\n   ios zoom (enable | disable | toggle | get) [--force] [options] Enables, disables, toggles, or returns the state of the \"ZoomTouch\" software home-screen button. iOS 11+ only (Use --force to try on older versions).\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielpaulus%2Fgo-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielpaulus%2Fgo-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielpaulus%2Fgo-ios/lists"}