# What Are the Dependencies of vphone-cli? A Complete Guide for Lakr233/vphone-cli

> Discover vphone-cli dependencies a dual-ecosystem chain combining Swift 6.0 packages for macOS virtualization with Python libraries for firmware patching and device communication. Get the complete guide.

- Repository: [Lakr/vphone-cli](https://github.com/Lakr233/vphone-cli)
- Tags: deep-dive
- Published: 2026-09-12

---

**vphone-cli dependencies consist of a dual-ecosystem chain combining Swift 6.0 packages for macOS virtualization with Python libraries for firmware patching and device communication.**

Lakr233/vphone-cli is a sophisticated virtual iPhone environment that bridges Swift-based macOS virtualization with Python-driven firmware tooling. Understanding these vphone-cli dependencies is essential for developers compiling from source or extending the tool's capabilities. The project maintains a hybrid architecture where Swift Package Manager handles the CLI frontend while pip manages auxiliary scripting capabilities.

## Swift Package Manager Dependencies

The Swift 6.0 codebase declares external libraries and system frameworks in [`Package.swift`](https://github.com/Lakr233/vphone-cli/blob/main/Package.swift). These dependencies enable the tool to parse command-line arguments, manipulate firmware binaries, and interface with private Apple APIs.

### Third-Party Swift Packages

According to lines 12-17 of [`Package.swift`](https://github.com/Lakr233/vphone-cli/blob/main/Package.swift), the executable fetches five critical packages via SPM:

- **swift-argument-parser**: Provides the `ArgumentParser` framework to define and parse CLI options in [`sources/vphone-cli/main.swift`](https://github.com/Lakr233/vphone-cli/blob/main/sources/vphone-cli/main.swift).
- **Dynamic**: Enables runtime dispatch to private Apple APIs without Objective-C bridges.
- **libcapstone-spm**: Swift wrapper around the Capstone disassembly engine, used by the firmware patcher to decode kernel binaries.
- **libimg4-spm**: Swift wrapper for IMG4 handling, allowing manipulation of Apple firmware containers.
- **MachOKit**: Utilities for parsing and editing Mach-O binaries, required for re-signing extracted IPA files.

### macOS System Frameworks

Lines 33-51 of [`Package.swift`](https://github.com/Lakr233/vphone-cli/blob/main/Package.swift) link the executable against native macOS system frameworks. These are not third-party libraries but are essential for core functionality:

- **Virtualization**: Provides the core APIs for VM creation and management.
- **AppKit** and **SwiftUI**: Power the graphical interface components.
- **CoreLocation**: Handles location forwarding to the virtual device.
- **AVFoundation**: Supports screen recording capabilities.

## Python Runtime Dependencies

The firmware patching and device interaction scripts rely on packages declared in [`requirements.txt`](https://github.com/Lakr233/vphone-cli/blob/main/requirements.txt) (lines 1-7). These Python vphone-cli dependencies enable low-level firmware manipulation and iOS device communication.

### Core Python Libraries

The following packages must be installed in the virtual environment created by [`scripts/setup_venv.sh`](https://github.com/Lakr233/vphone-cli/blob/main/scripts/setup_venv.sh):

- **typer**: Simple CLI builder for the Python tooling interface.
- **capstone**: Core disassembly engine used by Python patcher modules to analyze kernel binaries.
- **keystone-engine**: Assembler counterpart for generating patched instruction bytes.
- **pyimg4**: Handles IMG4/IM4P firmware formats for image manipulation.
- **pymobiledevice3** (≥ 9.5.0): Provides higher-level iOS device communication utilities.
- **ipsw-parser**: Parses Apple IPSW update bundles.
- **setuptools**: Standard build-time helper for Python packaging.

## Code Integration and Usage

The Swift packages integrate directly into the build process. The `ArgumentParser` framework from **swift-argument-parser** wires the command-line interface together:

```swift
import ArgumentParser

struct VPhoneCLI: ParsableCommand {
    @Flag(help: "Run the VM in DFU mode")
    var dfu: Bool = false

    func run() throws {
        // Launch VM based on parsed flags
    }
}
VPhoneCLI.main()

```

The Python dependencies power the auxiliary scripts in `sources/FirmwarePatcher/`. Before executing firmware patches, activate the virtual environment and run the patcher modules:

```bash

# Activate the Python virtual environment (created by `make setup_venv`)

source .venv/bin/activate

# Example: patch a kernel binary using capstone and keystone-engine

python -m patchers.cfw --input kernel.bin --output kernel_patched.bin

```

## Summary

- **Swift dependencies** include five SPM packages (swift-argument-parser, Dynamic, libcapstone-spm, libimg4-spm, MachOKit) declared in [`Package.swift`](https://github.com/Lakr233/vphone-cli/blob/main/Package.swift) lines 12-17.
- **System frameworks** including Virtualization, AppKit, SwiftUI, CoreLocation, and AVFoundation are linked in [`Package.swift`](https://github.com/Lakr233/vphone-cli/blob/main/Package.swift) lines 33-51.
- **Python dependencies** totaling seven packages (typer, capstone, keystone-engine, pyimg4, pymobiledevice3, ipsw-parser, setuptools) are listed in [`requirements.txt`](https://github.com/Lakr233/vphone-cli/blob/main/requirements.txt) lines 1-7.
- The hybrid architecture requires both ecosystems: Swift for the macOS virtualization frontend and Python for firmware manipulation backend.

## Frequently Asked Questions

### What Swift version is required to build vphone-cli?

The project requires **Swift 6.0** to compile the command-line tool and resolve its Package.swift dependencies. Attempting to build with earlier versions will fail due to syntax and package resolution incompatibilities.

### Can I run vphone-cli without installing the Python dependencies?

No. While the core virtualization frontend is written in Swift, the firmware patching capabilities in `sources/FirmwarePatcher/` specifically require the Python packages listed in [`requirements.txt`](https://github.com/Lakr233/vphone-cli/blob/main/requirements.txt). The **capstone**, **keystone-engine**, and **pyimg4** libraries are essential for decoding and repacking kernel binaries.

### Where are the specific dependency versions declared?

Swift package versions are pinned in [`Package.swift`](https://github.com/Lakr233/vphone-cli/blob/main/Package.swift) lines 12-17, while Python package constraints are defined in [`requirements.txt`](https://github.com/Lakr233/vphone-cli/blob/main/requirements.txt) lines 1-7. Notably, **pymobiledevice3** requires version 9.5.0 or higher according to the requirements file.

### Are the system frameworks available on all macOS versions?

The **Virtualization** framework and associated system frameworks listed in [`Package.swift`](https://github.com/Lakr233/vphone-cli/blob/main/Package.swift) lines 33-51 require recent macOS versions that support Apple's virtualization APIs. Older macOS versions lacking these frameworks will prevent successful compilation or execution of the VM features.