A bloat-free, open-source local platform for provisioning reproducible Linux VMs and Kubernetes clusters on Apple Silicon using Lima and Make.
Lima Platform provides a simple, automation-first way to spin up Linux virtual machines and multi-node Kubernetes clusters locally on Apple Silicon. It is designed for engineers who want fast, reproducible environments for infrastructure experimentation, platform engineering practice, and cluster operations. The focus is on repeatability, low friction, and operator-friendly workflows.
- One-command provisioning of Linux virtual machines
- Multi-node Linux VM clusters
- Kubernetes clusters bootstrapped via kubeadm
- Consistent L2 networking using socket_vmnet
- Simple Makefile-driven lifecycle operations:
- make vm
- make cluster-kube
- make cluster-destroy
Tested on: Apple M3 Pro (12 cores, 36 GB RAM)
- macOS 14+
- Apple Silicon
- Homebrew
- Lima ≥ 1.2.x
- Python ≥ 3.9.6
- socket_vmnet
Install Lima with Homebrew
brew install lima
limactl -v # verifyClone this repo:
git clone git@github.com:mikronixx/lima-platform.git
# or
git clone https://github.com/mikronixx/lima-platform.git# If you are creating a single VM or a Kubernetes cluster using the make commands below,
# there is no need to run this step.
# Included for informational purposes
# make help for a full list of options
cd lima-platform/
make socket_vmnet_install Creates a fully configured VM using Lima with networking, hostname setup, and package updates.
# make help for a full list of options
cd lima-platform/
make vm # Installs socket_vmnet, adds vm hostname to /etc/hosts, adds a MAC address to bootptab for DHCP, creates a single vm, updates packages and rebootsBasic lifecycle operations for the VM created above.
# make help for a full list of options
cd lima-platform/
make vm-start
make vm-stop
make vm-restartCreates 3 fully configured VMs using Lima with networking, hostname setup, and package updates.
# make help for a full list of options
cd lima-platform/
make cluster # Installs socket_vmnet, adds hostnames to /etc/hosts, adds a bootptab file for DHCP, creates a 3 node cluster, updates packages and rebootsCreates a 3 node Kubernetes cluster using Lima with networking, hostname setup, and package updates.
# make help for a full list of options
cd lima-platform/
make cluster-kube # Installs socket_vmnet, adds hostnames to /etc/hosts, adds a bootptab file for DHCP, creates a 3 node cluster, updates packages, reboots, and installs Kubernetes with kubeadm
ssh k8sc000 # Welcome to your cluster!
watch "kubectl get pod -A" # it takes about 8 min for your cluster to be readyBasic lifecycle operations for the cluster created above.
# make help for a full list of options
cd lima-platform/
make cluster-start
make cluster-stop
make cluster-restart# Run from repo root, or adjust path as needed
limactl create --name vm-dhcp-bootp ./poc/vm-dhcp-bootp.yml -y
# Remove -y if you want to edit the configuration interactively
limactl start vm-dhcp-bootp
limactl shell vm-dhcp-bootp# Examples
limactl stop vm-dhcp-bootp
limactl delete vm-dhcp-bootp
limactl delete vm-dhcp-bootp --force- Simplify current Makefile target rules
- UTM compatibility/ coexistence
- Makefile refactor to remove redundant code
- Ansible refactor to include limactl commands to build VMs and Kubernetes clusters