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:

  1. Prerequisite installation — invokes brew install git-lfs wget zstd libimobiledevice
  2. Environment hardening — requires SIP disabled and amfi_get_out_of_my_way=1 set
  3. Archive acquisition — either clones the repo (12GB, ~20 minutes) or downloads the seven split parts via the wget loop documented in the README; each part is verified against the SHA-256 checksums listed
  4. Merge and extract — the script merges the split archives and extracts the vphone-cli folder
  5. 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.