The Problem
This repository addresses the pain point of deploying a full iOS virtual phone environment locally. The vphone-cli component (originally from Lakr233's vphone project) requires manual assembly of split archives, jailbreak configuration, and substantial disk space—barriers that prevent straightforward local deployment of an iOS 26.1 virtual device for testing or development workflows.
What This Does
The repository provides a single shell script, vphone-aio.sh, that orchestrates the full setup of a jailbroken iOS 26.1 virtual phone. Seven split .tar.zst parts (vphone-cli.tar.zst.part_aa through vphone-cli.tar.zst.part_ag) must be present or will be auto-downloaded by the script. Once merged, the archive extracts a complete vphone-cli folder (~15 minutes), which establishes a local VNC server on port 5901 (127.0.0.1:5901). Execution requires disabling System Integrity Protection and setting amfi_get_out_of_my_way=1 to bypass Apple's mobile security restrictions. The script does not appear to contain internal modules or import edges—it is a procedural shell script that coordinates external tooling ( brew, wget, vnc) and file assembly.
How It Is Wired
Execution begins and ends with vphone-aio.sh. The script's responsibilities, as documented in the README, map to these concrete steps:
- Prerequisite installation — invokes
brew install git-lfs wget zstd libimobiledevice - Environment hardening — requires SIP disabled and
amfi_get_out_of_my_way=1set - Archive acquisition — either clones the repo (12GB, ~20 minutes) or downloads the seven split parts via the
wgetloop documented in the README; each part is verified against the SHA-256 checksums listed - Merge and extract — the script merges the split archives and extracts the vphone-cli folder
- VNC initialization — the virtual phone starts a VNC server on port 5901, accessible via
vnc://127.0.0.1:5901
The script touches the filesystem by creating the merged vphone-cli directory and the extracted contents. It relies on external binaries (wget, tar, vnc viewer) and does not import or export any internal code modules—there is no circular dependency graph, no package manager configuration, and no compiled artifacts beyond the extracted shell environment and VNC server.
How To Use It
Setup
brew install git-lfs wget zstd libimobiledevice
# Disable SIP; set amfi_get_out_of_my_way=1
Configuration
No configuration files or environment variables are required beyond the amfi_get_out_of_my_way=1 flag and the SIP disablement. The seven split archive parts must be present in the working directory; the script will auto-download any missing parts via the wget loop shown in the README.
Running it
# Make all parts available (auto-downloads missing ones)
for p in aa ab ac ad ae af ag; do
wget -O "vphone-cli.tar.zst.part_${p}" \
"https://github.com/34306/vphone-aio/raw/refs/heads/main/vphone-cli.tar.zst.part_${p}?download="
done
# Execute the script
./vphone-aio.sh
Ensure the host has >128GB free space (recommended). After the merge completes and extraction finishes (~15 minutes), VNC access becomes available at vnc://127.0.0.1:5901. The README suggests removing .git and the split .tar.zst.part_* files once the merge is done to clean up.
Real-World Use
A developer needing to test iOS-native applications locally without physical hardware can use this setup to run a full iOS 26.1 environment via VNC. The virtual phone boots into a jailbroken state with the full bootstrap already installed, allowing installation of unsigned IPA files, tweak development, and inspection of system-level behavior. The VNC viewer connection (127.0.0.1:5901) provides a remote desktop into the virtual device, enabling interaction from a macOS host. This is particularly useful for teams that need to reproduce iOS-specific bugs or test app behavior across iOS versions without maintaining a fleet of physical devices.
Code Health & Issues
- No test files detected — repository-wide untested code paths
- No CI/CD pipeline detected — no automated build/test gate (
.github/or CI config absent) - No LICENSE file — unclear usage/redistribution rights at the root
These findings are deterministic results from the static analysis pipeline: 0 internal modules, 0 import edges, 0 circular dependencies were analyzed across 1 code file (Shell). Beyond these measured findings, the repository structure reveals no Dockerfile, no lockfile, and no committed secrets.
The Bottom Line
This is a functional, single-script solution for deploying a jailbroken iOS 26.1 virtual phone on a macOS host. It works well for developers who need remote VNC access to an iOS environment and are comfortable disabling SIP and accepting the security implications. The absence of a license, tests, and CI means it is not production-grade tooling, but for ad hoc local testing or demo purposes it delivers a working iOS instance with minimal manual assembly. Use it if you have the disk space and the willingness to harden the host environment accordingly; otherwise, a cloud-based iOS testing service may be a lower-friction alternative.