Lakr233/vphone-cliPublic

AI summary: A command-line tool for interacting with VirtualPhone, enabling automated management of virtual iOS devices.

Stars
14.8K
+89 today
Forks
1.8K
Watchers
76
Open issues
29
Open PRs
3
Contributors
~45
Commits
601
Branches
1

SwiftMITCreated Feb 26, 2026Last push 1d agoLatest release 2.0.8+455 stars this week+4.5K this month

Quick answers

What is vphone-cli?
A command-line tool for interacting with VirtualPhone, enabling automated management of virtual iOS devices.
What does vphone-cli do?
vphone-cli provides a terminal-based interface and automation toolkit for managing VirtualPhone instances (a platform for running virtualized iOS devices). It bridges the gap between the VirtualPhone GUI and automated CI/CD workflows by allowing developers to programmatically control device lifecycles. Users can use the CLI to create, start, stop, and snapshot virtual iPhones, as well as install applications, push files, and execute shell commands inside the virtual environment. This abstraction is critical for teams that need to integrate iOS testing, security analysis, or app deployment into headless scripts without relying on manual interaction.
Who is vphone-cli for?
This tool is built for iOS developers, QA automation engineers, and security researchers who need programmatic control over virtualized iOS environments. It requires access to VirtualPhone and familiarity with command-line interfaces.
How do I get started with vphone-cli?
npm install -g vphone-cli && vphone login
How popular is vphone-cli on GitHub?
Lakr233/vphone-cli has 14,826 stars and 1,750 forks on GitHub, and gained 455 stars in the last 7 days.
What license does vphone-cli use?
Lakr233/vphone-cli is released under the MIT license.

Star history

since Jul 28, 2026
05K10KJul 2026Aug 2026Sep 2026Oct 2026
14.8K stars as of Oct 3, 2026. Measured daily since Jul 28, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 2 commits2026-02-28: 2 commits2026-03-01: 4 commits2026-03-02: 7 commits2026-03-03: 6 commits2026-03-04: 37 commits2026-03-05: 14 commits2026-03-06: 17 commits2026-03-07: 25 commits2026-03-08: 17 commits2026-03-09: 6 commits2026-03-10: 9 commits2026-03-11: 9 commits2026-03-12: 6 commits2026-03-13: 2 commits2026-03-14: 5 commits2026-03-15: 5 commits2026-03-16: 1 commit2026-03-17: 5 commits2026-03-18: 0 commits2026-03-19: 1 commit2026-03-20: 1 commit2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 1 commit2026-03-29: 8 commits2026-03-30: 0 commits2026-03-31: 5 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 2 commits2026-04-08: 1 commit2026-04-09: 0 commits2026-04-10: 1 commit2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 2 commits2026-04-16: 0 commits2026-04-17: 3 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 3 commits2026-04-21: 4 commits2026-04-22: 1 commit2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 1 commit2026-04-26: 1 commit2026-04-27: 1 commit2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 2 commits2026-05-01: 0 commits2026-05-02: 1 commit2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 1 commit2026-05-07: 2 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 1 commit2026-05-13: 0 commits2026-05-14: 6 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 4 commits2026-05-25: 1 commit2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 1 commit2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 4 commits2026-06-16: 5 commits2026-06-17: 4 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 5 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 1 commit2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 5 commits2026-07-02: 4 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 4 commits2026-07-06: 5 commits2026-07-07: 2 commits2026-07-08: 1 commit2026-07-09: 3 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 5 commits2026-07-14: 3 commits2026-07-15: 4 commits2026-07-16: 0 commits2026-07-17: 1 commit2026-07-18: 1 commit2026-07-19: 2 commits2026-07-20: 1 commit2026-07-21: 2 commits2026-07-22: 1 commit2026-07-23: 2 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 2 commits2026-07-27: 5 commits2026-07-28: 8 commits2026-07-29: 0 commits2026-07-30: 3 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 3 commits2026-08-03: 3 commits2026-08-04: 0 commits2026-08-05: 6 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 3 commits2026-08-11: 7 commits2026-08-12: 6 commits2026-08-13: 1 commit2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 1 commit2026-08-17: 0 commits2026-08-18: 1 commit2026-08-19: 1 commit2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 1 commit2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 2 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 2 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 1 commit2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 1 commit2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 2 commits2026-09-18: 1 commit2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 22 commits2026-09-23: 37 commits2026-09-24: 60 commits2026-09-25: 83 commits2026-09-26: 1 commit2026-09-27: 5 commits2026-09-28: 0 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
567 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    14,826 stars

  • Very active

    567 commits in 52 weeks

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What vphone-cli does

vphone-cli provides a terminal-based interface and automation toolkit for managing VirtualPhone instances (a platform for running virtualized iOS devices). It bridges the gap between the VirtualPhone GUI and automated CI/CD workflows by allowing developers to programmatically control device lifecycles. Users can use the CLI to create, start, stop, and snapshot virtual iPhones, as well as install applications, push files, and execute shell commands inside the virtual environment. This abstraction is critical for teams that need to integrate iOS testing, security analysis, or app deployment into headless scripts without relying on manual interaction.

This tool is built for iOS developers, QA automation engineers, and security researchers who need programmatic control over virtualized iOS environments. It requires access to VirtualPhone and familiarity with command-line interfaces.

  • Device lifecycle management: Commands to boot, shutdown, and reset virtual iOS devices.
  • App installation: Sideload IPA files directly into the virtual environment from the command line.
  • File system interaction: Push and pull files between the host machine and the virtual device.
  • Snapshot control: Create and restore device states for reproducible testing scenarios.
  • Shell execution: Run commands directly within the virtual iOS environment.
  • CI/CD integration: Designed for headless operation within automated testing pipelines.

Where teams use it

Automated iOS testing

QA engineers use the CLI in CI/CD pipelines to spin up a clean virtual iPhone, install a new build, and run tests.

Security research

Security analysts script the rapid deployment and teardown of specific iOS versions for vulnerability analysis.

App reverse engineering

Researchers use the tool to automate the extraction of app data and memory dumps from virtualized devices.

Headless device management

DevOps teams manage fleets of virtual iOS devices on remote servers without requiring graphical access.

Getting started: npm install -g vphone-cli && vphone login

README

main branch

vphone-cli

Looking for vphone-cli 1.x? See the 1.0.14 release.

Create and run a virtual iPhone on an Apple Silicon Mac. vphone-cli uses Apple's Virtualization.framework and PCC research VM infrastructure.

Virtual iPhone running on macOS

Version 2.x applies the complete firmware patch set, including changes previously offered as EXP. There are no selectable patch variants. The self-contained VPhone.bundle handles firmware preparation, restore, and VM control; vphone-launchpad installs the bundle and guides you through creating and running a VM.

The recommended host setup runs csrutil enable --without debug and csrutil allow-research-guests enable in macOS Recovery. SIP remains enabled with debugging restrictions relaxed. Launchpad checks the host and uses its privileged helper to allow each verified VM binary through AMFI; see host setup for details.

Get started

Use the notarized vphone-launchpad 2.0.8 on a physical Apple Silicon Mac running macOS 15 or newer. The release needs no Xcode, Python, or Homebrew at runtime.

  1. In macOS Recovery, run csrutil enable --without debug and csrutil allow-research-guests enable, then restart. See host setup for details.
  2. Unzip and open the app. Complete Host Setup, including Developer Tools access and installation of the privileged helper.
  3. In Core Bundle, choose Download and Install for the latest VPhone.bundle. Launchpad verifies the download and prepares its VM binary for the host.
  4. In Machines, choose New Machine, select a firmware pairing from the catalog, and click Create. Launchpad completes the first-boot check and leaves the VM running.

Catalog pairings download firmware. Creating a VM needs network access for restore tickets and substantial free disk space, even with local IPSWs. You can supply your own compatible iPhone and cloudOS IPSWs. See compatibility for verified pairs. For source builds and terminal workflows, see host setup and create and run.

Version 2.x starts only VMs created with its schemaVersion=2 format. Older VMs must be recreated.

Custom Firmware Bootstrap

After launching the VM, choose Guest > Install Bootstrap… from the macOS menu bar and select a layout. This installs Irisin in the guest.

For the first setup, select apt and bash in Irisin. Press and hold the Install button, then choose Bootstrap Install. This mode unpacks all packages in the installation before running the installation steps again. It resolves the initial dependency cycle where debianutils needs bash, but bash needs debianutils to have been configured. Use regular installation after this setup is complete.

Everyday use

The VM window provides app and file browsing, clipboard and preference tools, screenshots, recording, and diagnostics. For local automation, launch with --api-listen 127.0.0.1:8765. The VM prints a new API token at each launch as [api] token: …, or uses VPHONE_API_TOKEN when you set it. Send the token with every request, for example curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:8765/v1/health. Requests without the token are refused, and so are requests from web pages. See the guest API.

Task Command
List VMs vphone-cli vm list
Inspect a VM vphone-cli vm info myphone
Start the VM window vphone-cli vm launch myphone
Stop a VM vphone-cli vm stop myphone
Export a backup vphone-cli vm export myphone --out myphone.tzst
Import a backup vphone-cli vm import myphone.tzst --name restored

VMs live under ~/.vphone/ by default. Run vphone-cli <group> --help for more commands.

How it fits together

vphone-cli prepares firmware, restores VMs, and manages their lifecycle. The bundled vphone-vm runs the guest and owns its macOS window. Inside the guest, vphoned provides the controls used by the window and the optional HTTP and WebSocket API. The VPhone Xcode scheme builds and validates the self-contained VPhone.bundle.

Repository map

Path Contents
VPhoneExecutable/ CLI, VM process, firmware patcher, and restore backend
VPhoneKit/ Shared host libraries and API client
VPhoneDaemon/ Guest control daemon, vphoned
VPhoneGuestComponents/ Guest hooks and support binaries
Documents/ Setup, usage, compatibility, and troubleshooting guides
Research/ Patch and implementation notes

Acknowledgements

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

27 total
  1. v2.0.82.0.8Sep 25, 2026986 downloads

    ## vphone 2.0.8 - Rename the bundled AMFI helper executable to `vphone-escalator`. Launchpad and standalone setup commands now use this name. - Require VPhone.bundle 2.0.8 or newer in Launchpad. Older installed bundles remain removable, but cannot be selected or used; there is no fallback to the old helper name. - Fix the Irisin bootstrap installation alert so a completed download stays at 100% and late status polls cannot reset it. - Align the bootstrap alert status text and progress bar with the alert body using equal 22 pt left and right padding. Upgrade Launchpad and install the 2.0.8 Core Bundle together. The separately distributed Launchpad app is available as a notarized download below.

  2. v2.0.62.0.6Sep 25, 202640 downloads

    # vphone-cli 2.0.6 This release fixes VM cloning and boot-state preservation. It follows [2.0.5](https://github.com/Lakr233/vphone-cli/releases/tag/2.0.5). ## Get started Download the [notarized vphone-launchpad 2.0.6](https://github.com/Lakr233/vphone-cli/releases/download/2.0.6/vphone-launchpad-2.0.6-notarized.zip), unzip it, and replace the previous app. In **Core Bundle**, choose **Download and Install** to install `VPhone.bundle` 2.0.6. The [bundle archive](https://github.com/Lakr233/vphone-cli/releases/download/2.0.6/VPhone-2.0.6.zip) is also available for CLI use. ## Fixes - `vm clone` now copies the complete VM folder, using APFS copy-on-write when available and a regular folder copy otherwise. It preserves the machine identifier, NVRAM, SEP storage, SHSH blobs, and other boot state. Clones keep the same device identity; change it manually if needed. - VM launch now opens an existing NVRAM file instead of recreating and overwriting it. This preserves boot tickets across launches. A new NVRAM file is created only when none exists. - Launchpad's Clone sheet now accepts its suggested clone name immediately. The outdated warning about resetting the clone's identity has bee

  3. v2.0.52.0.5Sep 25, 202625 downloads

    # vphone-cli 2.0.5 Version 2.0.5 hardens the trust boundaries around the Launchpad helper, the root CFW install and the guest agent. It also improves location simulation and adds a few conveniences to the VM window. This note covers the changes since [2.0.4](https://github.com/Lakr233/vphone-cli/releases/tag/2.0.4). ## Get Started Download the **[notarized vphone-launchpad 2.0.5](https://github.com/Lakr233/vphone-cli/releases/download/2.0.5/vphone-launchpad-2.0.5-notarized.zip)**, unzip it, and open the app. If Launchpad is already installed, replace it with this version, then choose **Download and Install** in **Core Bundle** to install `VPhone.bundle` 2.0.5. The [Core Bundle asset](https://github.com/Lakr233/vphone-cli/releases/download/2.0.5/VPhone-2.0.5.zip) is available if you use `vphone-cli` directly. Host requirements are unchanged. See the [README](https://github.com/Lakr233/vphone-cli#readme) and [host setup](https://github.com/Lakr233/vphone-cli/blob/main/Documents/Guides/host-setup.md) if you are setting up a new Mac. ## Security A repository-wide security review found issues in the root CFW install, the Launchpad helper, VM bundle handling and the guest boundary.

  4. v2.0.42.0.4Sep 25, 202662 downloads

    # vphone-cli 2.0.4 Version 2 brings the firmware, restore, and virtual machine tools into a self-contained `VPhone.bundle`. Version 2.0.4 ships a notarized **vphone-launchpad** Mac app that installs the bundle and guides you from host setup to a running virtual iPhone. This note covers the changes since [1.0.14](https://github.com/Lakr233/vphone-cli/releases/tag/1.0.14). ## Get Started Use a physical Apple Silicon Mac running macOS 15 or newer. 1. In macOS Recovery, run `csrutil enable --without debug` and `csrutil allow-research-guests enable`, then restart. SIP remains enabled with debugging restrictions relaxed. See [host setup](https://github.com/Lakr233/vphone-cli/blob/main/Documents/Guides/host-setup.md) for details. 2. Download the **[notarized vphone-launchpad 2.0.4](https://github.com/Lakr233/vphone-cli/releases/download/2.0.4/vphone-launchpad-2.0.4-notarized.zip)**, unzip it, and open the app. Follow **Host Setup** to grant Developer Tools access and install its helper. 3. In **Core Bundle**, choose **Download and Install**. Launchpad downloads and verifies `VPhone.bundle`, then checks that its VM executable can run on this Mac. 4. In **Machines**, choose **New Machin

  5. v1.0.141.0.14Sep 10, 20263.6K downloads

    ## What's Changed * fix: validate imported VM manifest before moving into library by @morzelowski in https://github.com/Lakr233/vphone-cli/pull/453 * catalog: Add iOS 26.6.2 + iOS 27.0 RC (cloudOS 26.4) pairings by @zqxwce in https://github.com/Lakr233/vphone-cli/pull/459 ## New Contributors * @morzelowski made their first contribution in https://github.com/Lakr233/vphone-cli/pull/453 **Full Changelog**: https://github.com/Lakr233/vphone-cli/compare/1.0.13...1.0.14

Code frequency

additions and deletions
+552.6K-552.6KWeek of 2026-02-22: +11,741 linesWeek of 2026-02-22: -4,519 linesWeek of 2026-03-01: +94,878 linesWeek of 2026-03-01: -28,583 linesWeek of 2026-03-08: +22,507 linesWeek of 2026-03-08: -53,266 linesWeek of 2026-03-15: +1,002 linesWeek of 2026-03-15: -481 linesWeek of 2026-03-22: +421 linesWeek of 2026-03-22: -3 linesWeek of 2026-03-29: +1,650 linesWeek of 2026-03-29: -237 linesWeek of 2026-04-05: +102 linesWeek of 2026-04-05: -71 linesWeek of 2026-04-12: +121 linesWeek of 2026-04-12: -99 linesWeek of 2026-04-19: +346 linesWeek of 2026-04-19: -66 linesWeek of 2026-04-26: +195 linesWeek of 2026-04-26: -9 linesWeek of 2026-05-03: +18 linesWeek of 2026-05-03: -27 linesWeek of 2026-05-10: +6,460 linesWeek of 2026-05-10: -98 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +396 linesWeek of 2026-05-24: -118 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +8,575 linesWeek of 2026-06-14: -1,082 linesWeek of 2026-06-21: +661 linesWeek of 2026-06-21: -339 linesWeek of 2026-06-28: +430 linesWeek of 2026-06-28: -106 linesWeek of 2026-07-05: +1,421 linesWeek of 2026-07-05: -2,420 linesWeek of 2026-07-12: +1,830 linesWeek of 2026-07-12: -262 linesWeek of 2026-07-19: +1,041 linesWeek of 2026-07-19: -37 linesWeek of 2026-07-26: +5,504 linesWeek of 2026-07-26: -1,703 linesWeek of 2026-08-02: +741 linesWeek of 2026-08-02: -98 linesWeek of 2026-08-09: +1,326 linesWeek of 2026-08-09: -113 linesWeek of 2026-08-16: +76 linesWeek of 2026-08-16: -17 linesWeek of 2026-08-23: +10 linesWeek of 2026-08-23: -5 linesWeek of 2026-08-30: +44 linesWeek of 2026-08-30: -5 linesWeek of 2026-09-06: +13 linesWeek of 2026-09-06: -3 linesWeek of 2026-09-13: +413 linesWeek of 2026-09-13: -9 linesWeek of 2026-09-20: +552,645 linesWeek of 2026-09-20: -420,810 linesWeek of 2026-09-27: +6,886 linesWeek of 2026-09-27: -5,313 linesFeb 22, 2026Sep 27, 2026
+721.5K lines added, -519.9K removed over the last year.

Commits per week

last 52 weeks
2030Week of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 4 commitsWeek of 2026-03-01: 110 commitsWeek of 2026-03-08: 54 commitsWeek of 2026-03-15: 13 commitsWeek of 2026-03-22: 1 commitsWeek of 2026-03-29: 13 commitsWeek of 2026-04-05: 4 commitsWeek of 2026-04-12: 5 commitsWeek of 2026-04-19: 9 commitsWeek of 2026-04-26: 5 commitsWeek of 2026-05-03: 3 commitsWeek of 2026-05-10: 7 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 6 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 13 commitsWeek of 2026-06-21: 6 commitsWeek of 2026-06-28: 9 commitsWeek of 2026-07-05: 15 commitsWeek of 2026-07-12: 14 commitsWeek of 2026-07-19: 8 commitsWeek of 2026-07-26: 18 commitsWeek of 2026-08-02: 12 commitsWeek of 2026-08-09: 17 commitsWeek of 2026-08-16: 3 commitsWeek of 2026-08-23: 3 commitsWeek of 2026-08-30: 3 commitsWeek of 2026-09-06: 1 commitsWeek of 2026-09-13: 3 commitsWeek of 2026-09-20: 203 commitsWeek of 2026-09-27: 5 commitsOct 4, 2025Sep 27, 2026
567 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 7 commitsSun 1:00 — 0 commitsSun 2:00 — 5 commitsSun 3:00 — 1 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 2 commitsSun 9:00 — 1 commitsSun 10:00 — 2 commitsSun 11:00 — 2 commitsSun 12:00 — 0 commitsSun 13:00 — 12 commitsSun 14:00 — 3 commitsSun 15:00 — 2 commitsSun 16:00 — 5 commitsSun 17:00 — 2 commitsSun 18:00 — 4 commitsSun 19:00 — 6 commitsSun 20:00 — 0 commitsSun 21:00 — 0 commitsSun 22:00 — 1 commitsSun 23:00 — 1 commitsMon 0:00 — 2 commitsMon 1:00 — 1 commitsMon 2:00 — 0 commitsMon 3:00 — 3 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 1 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 1 commitsMon 11:00 — 9 commitsMon 12:00 — 1 commitsMon 13:00 — 6 commitsMon 14:00 — 2 commitsMon 15:00 — 2 commitsMon 16:00 — 2 commitsMon 17:00 — 2 commitsMon 18:00 — 7 commitsMon 19:00 — 7 commitsMon 20:00 — 3 commitsMon 21:00 — 0 commitsMon 22:00 — 1 commitsMon 23:00 — 0 commitsTue 0:00 — 3 commitsTue 1:00 — 2 commitsTue 2:00 — 5 commitsTue 3:00 — 1 commitsTue 4:00 — 0 commitsTue 5:00 — 1 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 3 commitsTue 11:00 — 3 commitsTue 12:00 — 4 commitsTue 13:00 — 2 commitsTue 14:00 — 8 commitsTue 15:00 — 3 commitsTue 16:00 — 4 commitsTue 17:00 — 10 commitsTue 18:00 — 1 commitsTue 19:00 — 4 commitsTue 20:00 — 4 commitsTue 21:00 — 5 commitsTue 22:00 — 19 commitsTue 23:00 — 3 commitsWed 0:00 — 5 commitsWed 1:00 — 1 commitsWed 2:00 — 2 commitsWed 3:00 — 9 commitsWed 4:00 — 5 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 1 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 3 commitsWed 12:00 — 6 commitsWed 13:00 — 6 commitsWed 14:00 — 3 commitsWed 15:00 — 8 commitsWed 16:00 — 11 commitsWed 17:00 — 8 commitsWed 18:00 — 10 commitsWed 19:00 — 5 commitsWed 20:00 — 12 commitsWed 21:00 — 11 commitsWed 22:00 — 8 commitsWed 23:00 — 2 commitsThu 0:00 — 5 commitsThu 1:00 — 5 commitsThu 2:00 — 4 commitsThu 3:00 — 5 commitsThu 4:00 — 0 commitsThu 5:00 — 1 commitsThu 6:00 — 2 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 2 commitsThu 10:00 — 2 commitsThu 11:00 — 11 commitsThu 12:00 — 6 commitsThu 13:00 — 3 commitsThu 14:00 — 4 commitsThu 15:00 — 1 commitsThu 16:00 — 6 commitsThu 17:00 — 24 commitsThu 18:00 — 6 commitsThu 19:00 — 2 commitsThu 20:00 — 5 commitsThu 21:00 — 3 commitsThu 22:00 — 5 commitsThu 23:00 — 6 commitsFri 0:00 — 12 commitsFri 1:00 — 10 commitsFri 2:00 — 10 commitsFri 3:00 — 5 commitsFri 4:00 — 5 commitsFri 5:00 — 1 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 1 commitsFri 11:00 — 3 commitsFri 12:00 — 5 commitsFri 13:00 — 10 commitsFri 14:00 — 16 commitsFri 15:00 — 8 commitsFri 16:00 — 2 commitsFri 17:00 — 3 commitsFri 18:00 — 5 commitsFri 19:00 — 3 commitsFri 20:00 — 5 commitsFri 21:00 — 3 commitsFri 22:00 — 1 commitsFri 23:00 — 4 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 1 commitsSat 3:00 — 3 commitsSat 4:00 — 1 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 0 commitsSat 11:00 — 1 commitsSat 12:00 — 1 commitsSat 13:00 — 1 commitsSat 14:00 — 1 commitsSat 15:00 — 1 commitsSat 16:00 — 0 commitsSat 17:00 — 3 commitsSat 18:00 — 8 commitsSat 19:00 — 5 commitsSat 20:00 — 3 commitsSat 21:00 — 3 commitsSat 22:00 — 3 commitsSat 23:00 — 5 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits342 (57%)
Community commits254 (43%)

596 commits in total over the last year.

DateListRankStars gained
Mar 2, 2026daily#11+300
Mar 1, 2026daily#18+235
  • jaywcjlove/awesome-mac

     This project is dedicated to collecting high-quality macOS software and organizing them systematically by different categories for easy search and use.

    115.4K stars · Swift

  • apple/container

    A tool for creating and running Linux containers using lightweight virtual machines on a Mac. It is written in Swift, and optimized for Apple silicon.

    50.4K stars · Swift

  • permissionlesstech/bitchat

    bluetooth mesh chat, IRC vibes

    36.3K stars · Swift

  • manaflow-ai/cmux

    Open source Ghostty-based macOS terminal with vertical tabs and notifications for AI coding agents. Built for multitasking, organization, and programmability.

    27.6K stars · Swift

  • steipete/CodexBar

    Show usage stats for OpenAI Codex and Claude Code, without having to login.

    22.1K stars · Swift

  • palmier-io/palmier-pro

    macOS video editor built for AI

    14.5K stars · Swift