Creating VMs
On this page
Quick start (CLI, recommended)
- Install Anka and activate your license.
- Confirm your target macOS version is supported: Supported macOS versions.
- Create a VM (downloads IPSW, runs click scripts, installs macOS):
anka create --list # see available guest versions
anka create my-ci-vm 26.6.2 # VM name, then macOS version from --list
- When
anka createfinishes, the VM is stopped. Useranka/ passwordadmin, SIP off, and VNC are already configured. - Access the VM, modify resources, then optimize before pushing to a registry.
Creation can take 20–60+ minutes depending on download speed and macOS version. Use anka --debug create ... for verbose output.
Terms: A VM is the local object on the host. A tag is a named version of that VM. A template is what you store in the Anka Registry for CI. See VM clones and tags.
Prerequisites
anka commands run as your current user. Root and non-root users have separate VM libraries. Move VMs with export/import, the Anka Registry, or the Anka app.- Anka Virtualization is installed.
- Network: The host needs outbound access to Apple endpoints for IPSW download and setup. See Apple’s documentation and whitelist required CDN URLs in corporate firewalls.
http_proxy/https_proxydo not work foranka create.- If you must block network during create, use
ANKA_NETWORK_DISCONNECTED=true(see creation troubleshooting). - Antivirus (CrowdStrike, and similar) often blocks VM startup; disable or whitelist Anka.
- Hardware: The host must support the guest macOS version you want. See Supported macOS versions.
- ARM only: Use
.ipswfiles, not.appinstallers. Do not runsudo anka createover SSH; use VNC + Terminal or create as your normal user. - ARM only: Guests built on macOS 15.x hosts do not run on 14.x hosts (14.x → 15.x is fine). This may be true with other macOS versions as it’s an incompatibility with host level APIs.
Headless hosts (CI nodes, SSH-only): After every host reboot, unlock the login keychain for the user that runs
ankabeforeanka createoranka start. Apple’s Virtualization APIs cannot access the keychain while it is locked, and VM create/start may fail (for example, “The virtual machine failed to start” or status 70). SSH alone does not unlock the keychain.security unlock-keychain -p "${PW}" login.keychain-dbYou do not need a GUI desktop session if you run this command (for example from a LaunchDaemon or your CI boot script).
When you can skip this: On a Mac where someone already signed in at the desktop after reboot, the login keychain is usually unlocked and this step is not needed.
Create with anka create
> anka create --help
usage: create [options] [name] [macOS version/installer file/installer url]
Creates a VM Template
arguments:
name VM name
macOS version/installer file/installer url
MacOS version (see --list), installer file location, or installer URL to use for creation (example: 'latest')
options:
-m,--ram-size <val> Specify the VM RAM size (supported suffixes: T|G|M|K)
-c,--cpu-count <val> Specify the number of vCPU cores for the VM (3 or more is recommended)
-d,--disk-size <val> Specify the VM disk size (supported suffixes: T|G|M|K)
--no-setup Do not perform automated macOS setup
-q,--quiet Do not show progress
-l,--list List available macOS versions to install
You can bring your own .ipsw and .app files to use with anka create. This is an alternative to specifying the version from --list. It supports three different methods:
1. The specific macOS version from --list
ARM (Apple Silicon):
anka create --listshows available.ipswrestore versions. Specify one by version number (for example26.6.2) or uselatest.Intel:
anka create --listshows archived macOS versions for.appinstallers as well as restore images.
bash$ anka create --list
+-----------------+---------+------------+
| version | build | post_date |
+-----------------+---------+------------+
| 26.6.2 (latest) | 25G83 | 2026-08-17 |
+-----------------+---------+------------+
| 26.6.1 | 25G76 | 2026-08-06 |
+-----------------+---------+------------+
| 26.6 | 25G72 | 2026-07-27 |
+-----------------+---------+------------+
| 26.5.2 | 25F84 | 2026-06-29 |
. . .
bash$ anka create my-ci-vm 26.6.2
75% [||||||||||||||||||||||||||||||||||||||||||||| ] 16:15 ETA
2. The location/path to the ipsw or .app on the host
bash$ anka create --cpu-count 5 --disk-size 100G 26.6.2 ~/Downloads/UniversalMac_26.6.2_25G83_Restore.ipsw
. . .
Intel only (.app installer):
bash$ anka create --cpu-count 5 --disk-size 100G 15.7.4 /Applications/macos-15.7.4.app
. . .
3. The URL to download the ipsw from (.app not supported)
bash$ anka create --cpu-count 5 --disk-size 100G 26.6.2 https://myCompanyIntranet/UniversalMac_26.6.2_25G83_Restore.ipsw
. . .
ARM USERS: The ipsw files will be downloaded intoimg_lib_dir. You can find the location of this directory withanka config img_lib_dir. These (and other temporary) files can be deleted withanka delete --cache.
A few tips when creating VMs:
We recommend naming your initial VM after the version of macOS.
Remember that VM templates are created under a specific user and will not be available to other users.
VM performance is important to our users. When setting CPUs for the VMs, 2 CPUs is usually not enough and can cause instability inside of the VM. Please see Modifying Your VM for more information.
If you experience issues, run
anka --debug create. . .and provide it to Veertu’s support.You can re-enable SIP on intel VMs with
anka modify {vmNameOrUUID} set custom-variable sys.csr-active-config 0post-create.
RAM, DISK, and CPU are all set from the defaults under the Anka configuration:
❯ anka config | grep default | default_disk | 137438953472 | | default_nvcpu | 4 | | default_ram | 4294967296 |
INTEL USERS: Suspending VMs can sometimes produce a VM which is frozen on start. Usually this is because the hardware & cpu type you created the VM and suspended it on is different from the one you’re trying to start it on. Be sure to suspend your VMs on the same hardware that will be running VMs.
Anka Develop license (default): While you can create as many VMs as you wish, the free Anka Develop license only allows you to run one VM at a time and will only function on laptops (Macbook, Macbook Pro, and Macbook Air). It only supports a stopped VM state.
Be aware of the user you’re executing Anka CLI commands as. If you create VMs as root, they won’t be available to other users on the system and vice versa.
After anka create, Anka sets up macOS, creates user anka with password admin, disables SIP, enables VNC, and stops the VM.
Related topics
Child pages in this section:
| Topic | Page |
|---|---|
| Supported macOS versions | Supported macOS versions |
| Anka.app (GUI) | Creating VMs (GUI) |
| Click Scripts feed | Click Scripts feed |
| Clones, tags, templates | Clones and tags |
| Export and import | Export and import |
| Host directory mounts | Host directory mounts |
| Post-create tuning | Optimizing your VM |
| Build Cloud registry | Registry VM Templates and Tags |
| Creation failures | VM creation is stuck or failing |
What’s next?
Supported macOS versions for VM creation
Compatibility matrix and host requirements for anka create
Creating VMs with Anka.app
Create VMs using the Anka desktop application instead of anka create
Anka Click Scripts feed
Update anka create automation scripts without upgrading the Anka CLI
VM clones, tags, and templates
Local tags, cloning, and how VM templates relate to Anka Build Cloud
Exporting and importing VMs
Move VM archives between hosts with anka export and anka import
Sharing host directories inside the VM
Mount host folders into running VMs (Anka 3.9.0+)
Optimizing your VM
Post-creation tuning for CI and automation workloads