What is this?
vfkit is a command-line tool that starts virtual machines on macOS using Apple's built-in Virtualization framework, and it also ships a Go package to generate vfkit command lines programmatically.
Is this just a CLI, or can I use it as a library too?
Both: there is a vfkit CLI binary, and a separate github.com/crc-org/vfkit/pkg/config Go package that gives you a native Go API to build the vfkit command line yourself.
How do I install vfkit?
The simplest path is Homebrew. You can also build it yourself from source by running make from the repository root.
Who actually uses vfkit?
It's used under the hood by minikube (1.35.0+), Podman (5.0+), crc for local OpenShift/MicroShift clusters, and ovm for running Linux containers on macOS via Oomol Studio.
What platforms does vfkit support?
macOS only, since it is built directly on top of Apple's Virtualization framework rather than a cross-platform hypervisor layer.
Why would I use vfkit directly instead of just using Podman or minikube?
Most people won't need to: tools like Podman, minikube and crc already embed vfkit internally to run their macOS VMs. You'd reach for vfkit directly only if you're building your own tool that needs to launch and manage Virtualization-framework VMs on macOS.
What would I use the pkg/config Go package for?
It lets you construct vfkit VM configurations (devices, disks, networking, etc.) programmatically in Go and generate the equivalent vfkit command line, instead of hand-writing CLI flags.
Has vfkit been talked about anywhere?
Yes, it has been presented at Containers Plumbing 2023 and FOSDEM 2023.
What are similar projects?
lima, vphone-aio, Docker-OSX, macos, ProxmoxVE, macOS-Simple-KVM, coop, tart
Which topics is it in?
macos-virtual-machine, macos-vm, vm, virtual-machine, virtualization, native, containers, homebrew, cli-tool, command-line, devops, go