{"id":51021078,"url":"https://github.com/lautarovculic/ioscpy","last_synced_at":"2026-06-21T16:30:49.714Z","repository":{"id":366082125,"uuid":"1274999314","full_name":"lautarovculic/ioscpy","owner":"lautarovculic","description":"A macOS CLI that mirrors and controls a jailbroken iPhone over USB.","archived":false,"fork":false,"pushed_at":"2026-06-20T07:33:56.000Z","size":1444,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-20T08:07:03.594Z","etag":null,"topics":["hacking","hacking-tools","ios","ios-development","ios-hacking","ios-security","ioscpy","mobile","mobile-hacking","mobile-security","scrcpy"],"latest_commit_sha":null,"homepage":"https://lautarovculic.com","language":"Rust","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/lautarovculic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2026-06-20T06:02:35.000Z","updated_at":"2026-06-20T07:34:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lautarovculic/ioscpy","commit_stats":null,"previous_names":["lautarovculic/ioscpy"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lautarovculic/ioscpy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lautarovculic%2Fioscpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lautarovculic%2Fioscpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lautarovculic%2Fioscpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lautarovculic%2Fioscpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lautarovculic","download_url":"https://codeload.github.com/lautarovculic/ioscpy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lautarovculic%2Fioscpy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34618474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["hacking","hacking-tools","ios","ios-development","ios-hacking","ios-security","ioscpy","mobile","mobile-hacking","mobile-security","scrcpy"],"created_at":"2026-06-21T16:30:49.216Z","updated_at":"2026-06-21T16:30:49.708Z","avatar_url":"https://github.com/lautarovculic.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ioscpy\n\nA macOS CLI that mirrors and controls a jailbroken iPhone over USB.\n\nWith one device attached, that is all you need. It connects on its own.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/ioscpy-demo.gif\" width=\"720\" alt=\"ioscpy demo\"\u003e\n\u003c/p\u003e\n\n## Install\n\nThere are two sides. The Mac app runs the mirror, the iPhone package lets the\nphone be controlled. Install both.\n\nOn the Mac, with Homebrew:\n\n```bash\nbrew tap lautarovculic/ioscpy   # the Mac app\nbrew trust lautarovculic/ioscpy\nbrew install ioscpy\nioscpy --version\n```\n\nOn the jailbroken iPhone, add this repository in Sileo or Zebra, then install\nioscpy from it and respring:\n\n```text\nhttps://lautarovculic.github.io/ioscpy-repo/\n```\n\nThe repository carries both rootless and rootful builds, and the package manager\npicks the one that matches the jailbreak.\n\n```bash\nioscpy --device \u003cUDID\u003e   # pick a device when several are attached\nioscpy --list            # list attached devices\nioscpy --no-keyboard     # hide the on-screen keyboard, type from the Mac\nioscpy --mjpeg           # force MJPEG video instead of the default H.264\nioscpy --debug           # full diagnostics\nioscpy --version\n```\n\n## First touch\n\n\u003e After a respring or a fresh connection, give the phone one physical tap on its\n\u003e screen before driving it from the Mac. iOS only trusts touch events that come\n\u003e from the real digitizer, so that first real tap is what lets the injected ones\n\u003e through. You do it once, then the Mac takes over.\n\n## Controls\n\n- Mouse: click to tap, click and drag to swipe.\n- Typing: keystrokes go to the focused field, in any Mac keyboard layout. Accents\n  and emoji go through the clipboard.\n- Esc: go back.\n- Cmd+J, Cmd+L, Cmd+T, Cmd+R: Home, Lock, App Switcher, Rotate.\n- Cmd+A, Cmd+C, Cmd+V, Cmd+X, Cmd+Z: Select All, Copy, Paste, Cut, Undo. The\n  clipboard syncs both ways, so Cmd+C on the phone reaches the Mac.\n- Enter, Backspace, Tab, arrows: the matching editing keys.\n\nRotating the phone rotates and resizes the mirror.\n\n## Tested devices\n\nioscpy is developed and tested on the device below. I don't have a rootful device\nor other iOS versions on hand, so this table is incomplete.\n\n| layout   | device     | iOS     | injection | status                                          |\n|----------|------------|---------|-----------|-------------------------------------------------|\n| rootless |            |         |           | scheme builds; runs on the roothide unit via `/var/jb` |\n| roothide | iPhone10,3 | 16.7.10 | ElleKit   | working (rootless `.deb` via `/var/jb`)         |\n| rootful  |            |         |           | builds and layout validated; runtime not tested |\n\nIf you run ioscpy on a different iPhone, iOS version, or jailbreak, please help fill\nthis in. Rootful and other iOS versions especially need testing.\n\n- If it works, add a row with your device, iOS version, layout, and injection\n  framework, and open a pull request.\n- If it fails, open an issue with enough detail to fix it:\n  - iPhone model and iOS version\n  - jailbreak and layout (Dopamine, palera1n rootless or rootful, roothide)\n  - injection framework (ElleKit, Substitute, Substrate)\n  - the output of `ioscpy --debug`\n  - what broke (screen, touch, keyboard, clipboard, install, and so on)\n\n## Layout\n\n```text\nhost/       Rust macOS CLI\ndevice/     iOS package (Theos): daemon, ctl, tweak, jbcompat, packaging\nprotocol/   wire format docs, kept in lockstep with the code\nscripts/    device deploy, respring, log, and diagnostics helpers\ndocs/       architecture, jailbreak compatibility, troubleshooting, release\n```\n\n## Building\n\n```bash\nmake host-release        # macOS host binary\nmake device-rootless     # rootless .deb (Dopamine, palera1n-rootless, /var/jb)\nmake device-rootful      # rootful .deb (palera1n-rootful, /)\nmake release             # host plus both device variants\n```\n\nRequires Rust, Theos (`$THEOS`), libimobiledevice (`idevice_id`, `iproxy`), `ldid`,\nand `dpkg-deb`.\n\n## Scope\n\nioscpy is for controlling your own jailbroken iPhone from your Mac, over the USB\ncable, on the same desk. It runs on macOS and talks to a jailbroken iOS device.\nIt is not for Linux or Windows, and not for iPhones that are not jailbroken.\n\n## Author\n\n[Lautaro Villarreal Culic'](https://lautarovculic.com) - MIT licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flautarovculic%2Fioscpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flautarovculic%2Fioscpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flautarovculic%2Fioscpy/lists"}