vphone-cli: Manage iOS Virtual Machines from the Command Line, Double Your Automation Testing Efficiency

vphone-cli brings command-line automation to iOS virtual device management using Swift and Apple's Virtualization Framework.
vphone-cli is a Swift-based open-source CLI tool that leverages Apple's Virtualization Framework to manage iOS virtual devices programmatically. With 9,000+ GitHub Stars, it enables one-command device lifecycle management, CI/CD integration, and scripted automation—replacing tedious GUI workflows. Built for Apple Silicon, it delivers near-native performance and is ideal for teams seeking efficient iOS automated testing and DevOps solutions.
Project Overview: An iOS VM Command-Line Tool with 9,000+ Stars
vphone-cli is a rapidly rising open-source project on GitHub, primarily developed by Lakr233 and written in Swift. The project focuses on managing and controlling iOS virtual devices via the command line. After its release, it gained 633 stars in a single day and has since accumulated over 9,345 Stars and 1,274 Forks.

From a technical standpoint, vphone-cli is built entirely in Swift and deeply leverages macOS's Virtualization Framework, enabling it to tap into Apple's native virtualization capabilities with minimal performance overhead. Apple first introduced the Virtualization Framework at WWDC 2020—a high-level Swift API framework that allows developers to create and manage virtual machines on macOS. Under the hood, it relies on Hypervisor.framework, which interacts directly with hardware virtualization extensions. On Apple Silicon (M-series chips), the Virtualization Framework takes advantage of ARM architecture's hardware virtualization support, delivering near-native performance. Unlike third-party virtualization solutions such as VMware and Parallels, Apple's native framework requires no additional kernel extensions, offering superior security and system compatibility. Compared to traditional GUI-based operations, command-line tools have clear advantages in batch task processing, continuous integration (CI/CD), and scripted automation scenarios.
Why Managing iOS VMs via Command Line Is More Efficient
In the mobile development world, simulator and VM management has long relied on graphical interfaces—operations are tedious, hard to standardize, and not conducive to team collaboration. It's important to clarify a technical distinction here: Apple's official iOS Simulator is essentially a "simulator," not a "virtual machine." The simulator runs iOS application code that has been recompiled for the host machine's architecture, sharing the host's kernel and system resources without running a real iOS kernel. A virtual machine, on the other hand, runs a complete guest operating system kernel within an isolated hardware abstraction layer. By leveraging the Virtualization Framework, vphone-cli creates a virtualization environment much closer to real device behavior, which is invaluable in testing scenarios that require precise reproduction of iOS system behavior—such as push notification mechanisms, background task scheduling, and sandbox permission models.
vphone-cli abstracts these operations into programmable command interfaces, allowing developers to manage iOS virtual environments much like Docker containers—creating, configuring, starting, and destroying instances all with a single command.
This "everything as a command" design philosophy aligns perfectly with what modern DevOps toolchains advocate.
Core Features and Typical Use Cases
For teams that frequently test iOS applications, the ability to quickly spin up and configure virtual devices via scripts translates to a massive boost in testing efficiency. Whether it's automated UI testing, performance benchmarking, or multi-device compatibility verification, command-line-driven VM management significantly reduces the cost of manual intervention.

Key Feature Modules
Based on the project's positioning, vphone-cli covers the following core operations:
- Device Lifecycle Management: One-click creation, starting, stopping, and deletion of iOS virtual device instances
- Status Queries: Real-time retrieval of running VM lists and their current states
- Configuration Injection: Flexible customization of virtual device hardware specs via parameters or configuration files
- CI/CD Integration: Naturally fits into continuous integration pipelines, supporting unattended automated testing
It's worth elaborating that CI/CD in mobile development faces unique challenges. Unlike web applications, iOS app building and testing is tightly coupled with the macOS environment and Xcode toolchain—it simply cannot be done in Linux containers. In traditional setups, teams typically maintain dedicated Mac mini clusters or use AWS EC2 Mac instances to run CI pipelines, which is expensive. While Xcode's built-in simctl command-line tool can manage simulators, its functionality is limited, its operations aren't intuitive, and its resource scheduling is inefficient for parallel testing scenarios. Although mainstream CI services like GitHub Actions, Bitrise, and CircleCI offer macOS runners, they still lack flexibility in virtual device lifecycle management—this is precisely the pain point vphone-cli aims to address.
These capabilities are extremely attractive to iOS developers pursuing efficient workflows and are the core reason the project gained so much attention in such a short time.
The Trend of Building CLI Tools with Swift
Choosing Swift over Python or Go to build a command-line tool sends an important signal: Swift is expanding beyond pure app development into broader domains such as system tools, server-side applications, and CLI utilities.
Since Swift was open-sourced in 2015, its ecosystem has continued to expand. The release of Swift NIO in 2018 marked Swift's official entry into the server-side domain; the introduction of Swift Argument Parser in 2020 provided a declarative parameter-parsing framework for CLI tool development; and the rewrite of Swift Foundation in 2023 further solidified cross-platform capabilities. On the system tools front, Apple itself has been gradually migrating macOS built-in tools from Objective-C/C to Swift. Swift's advantage over Go lies in its zero-cost interoperability with Apple platform APIs—it can directly invoke system-level interfaces like the Cocoa framework and Virtualization Framework without bridging layers, which is particularly critical in performance-sensitive virtualization scenarios.
Leveraging Apple's native virtualization framework, tools written in Swift can run on macOS with greater stability and lower resource overhead.
Reflections Behind the Project's Popularity
The growth rate of 633 Stars in a single day indicates that the community has a genuine and urgent demand for lightweight, programmable iOS virtual device management solutions. The iOS ecosystem has long been relatively closed, leaving developers with very limited tooling options for automated testing and device management. vphone-cli fills this gap perfectly.
Apple Silicon's Role in Advancing Virtualization
An important context for vphone-cli's efficient operation is the widespread adoption of Apple Silicon. M-series chips are based on ARM architecture with built-in hardware virtualization support (EL2 exception level), enabling ARM guest operating systems to run on Mac with virtually no performance loss. In the Intel Mac era, iOS simulators ran x86-compiled versions that differed from real device behavior; on Apple Silicon, the virtualization environment can directly run ARM binaries, closely matching the behavior of real iPhones and iPads. Additionally, the Unified Memory Architecture of M-series chips allows VMs and the host to efficiently share memory resources, reducing memory overhead when running multiple VMs in parallel. These hardware-level advantages form the foundation that enables tools like vphone-cli, built on the Virtualization Framework, to operate efficiently.
Open Source Community Activity
The 1,274 Forks indicate that a large number of developers are already building upon and customizing the project. In the GitHub ecosystem, Star counts reflect a project's visibility and popularity, while Fork counts are a more important metric for measuring deep community engagement. A Fork means a developer has made a complete copy of the project's code into their own repository, typically for purposes such as submitting Pull Requests, secondary development and customization, or learning and research. vphone-cli's approximately 7.3:1 Star-to-Fork ratio shows that the project hasn't just attracted a large number of onlookers—a significant proportion of developers are actively participating at the code level through contributions and customizations, which is a positive signal for the project's long-term development. This kind of active community participation is a key indicator of an open-source project's continued evolution and growth.
Things to Know Before Using It
If you're planning to adopt vphone-cli in your project, there are a few things to be aware of upfront:
- System Requirements: Apple's Virtualization Framework typically requires a relatively recent version of macOS and Apple Silicon (M-series) chips. Specifically, full Virtualization Framework functionality requires macOS 12 Monterey or later, while certain advanced features (such as macOS guest support and Rosetta integration) require macOS 13 Ventura or higher. Intel Macs can run some virtualization features but have limited capabilities for iOS-related virtualization scenarios.
- Version Stability: The project is still in a phase of rapid iteration. Thorough compatibility testing is recommended before deploying it in production environments.
- Stay Updated: Closely track the project's Release publications and documentation updates to stay current with new features and bug fixes.
Conclusion
vphone-cli is a Swift-based command-line management tool for iOS virtual devices. With its automation-friendly design philosophy and deep utilization of Apple's native virtualization capabilities, it has quickly gained widespread attention from the developer community. It not only provides a practical new approach to iOS automated testing but also showcases Swift's growing potential in CLI tools and DevOps scenarios.
From a broader industry perspective, the rise of vphone-cli reflects a deeper transformation underway in mobile development: developers are increasingly embracing the "Infrastructure as Code" philosophy, and the iOS ecosystem is gradually moving from a closed environment toward open and standardized toolchains. As Apple Silicon performance continues to improve and the Virtualization Framework gains new capabilities, we can expect more similar tools to emerge, collectively driving a qualitative leap in iOS development and operations efficiency.
For development teams focused on mobile automation testing and iOS DevOps, vphone-cli is an open-source project well worth following and trying out.
Related articles

5.2 Billion Tokens in Practice: One Developer Built a Commercial-Grade RBAC Admin System with Cursor
A developer used 5.2B Tokens with Cursor to solo-build a commercial RBAC admin system. Key lessons on AI constraints, quality engineering, and human-AI collaboration.

1000 PRs a Month: How a Cursor Engineer Manages 100+ Agents Simultaneously
A Cursor Principal Engineer ships 1000+ PRs/month running 100+ AI Agents. Learn his core methods: building Agent trust, hard vs soft constraints, and Agent-friendly codebases.

Is Cheap Cursor Pro Top-Up Reliable? Exposing the Real Risks Behind the Discounts
An in-depth analysis of cheap Cursor Pro top-up services: how account pool sharing works, the risks of bans, data security concerns, and better alternatives.