Skip to main content

FluxVM for Mac

Kubernetes, on your Mac.
Without the Linux box.

A real k3s cluster in a virtual machine that Apple silicon runs natively. It behaves like the cluster you have on Linux, and it can do things a Linux cluster cannot, because saving it saves the whole machine.

$ fluxctl kube start
cluster shop is up
added postgres  postgresql://postgres:dev@127.0.0.1:5432/postgres
applied      k8s/web.yaml
forwarded    http://web.localhost
4 min 26 s from nothing, 7 s the second time

One thing Linux cannot do

A checkpoint is the whole running machine.

Apple's Virtualization framework saves memory and device state, and the disk is cloned with APFS. Saving costs about a second and next to nothing until the disk changes.

1.5 sSave the whole clustermemory, disk and every pod
12.5 sUndo a bad applykube try, then kube undo
2 sWake from sleepsleeping took 6 s
7 sStart againkube start on a project that is already up

Measured on a real k3s cluster (2 vCPU, 3 GiB) on a Mac mini. Checkpoints work on single-node clusters.

Everything a Linux developer expects

It feels local, because it is.

Plain kubectl

The cluster is merged into your kubeconfig. No port-forward, no VM to log into.

kubectl get pods

Real names

Every Service and Ingress host answers on a .localhost name, with HTTPS from a local CA limited to .localhost.

https://web.localhost

Time machine

A checkpoint is the whole running machine. Undo a kubectl apply, including what it did to running pods.

kube try -- kubectl apply -f x.yaml

Services in one line

Seventeen development services with their usual ports on the Mac and a connection string.

kube add postgres

Save a file, see it run

Rebuild an image on save, or copy files into a pod with no build at all.

kube sync web --to /app

Every replica, one stream

Logs from all pods and containers behind a workload, each line tagged and colored by pod.

kube logs web -f

Copy files both ways

Like docker cp. Files travel as a tar stream, nothing to install in the pod.

kube cp ./site web:/usr/share/nginx/html

Backups that are a file

Postgres, MySQL and MongoDB contents as one private file on your Mac, and back again.

kube db-backup postgres

It tells you what is wrong

A doctor for the Mac and the VM, and a macOS notification when a pod crash-loops.

kube doctor

Sleeps when you do

Park the cluster to a checkpoint when idle or on battery. The next kubectl call wakes it.

kube supervise --idle-sleep 30m

The same bytes everywhere

Print every running image as a tag plus digest and paste it into a manifest.

kube pin

Show it on your phone

Open a Service to a phone on the same Wi-Fi with a QR code, a time limit and a private-network-only filter.

kube share web

Intel images just run

Give the cluster VM the Mac's Rosetta so amd64-only images start instead of failing.

kube up --rosetta

Call your Mac from a pod

Make a program on the Mac, such as a model server or Postgres.app, a Service the pods reach by name.

kube host model 11434

Follows your git branch

Switch branches and the cluster is saved for the one you leave and restored for the one you enter.

kube git install

What changed since it worked

Compare two checkpoints, or one against now: images, replicas and config, without starting anything.

kube diff

Let an AI agent drive it

MCP tools for status, doctor, checkpoints and diff; applying a manifest takes a checkpoint first.

fluxctl mcp serve --allow-write

Works your hours

Sleep outside working hours and on low power, wake when the day starts.

kube supervise --active 09:00-19:00 --eco

In the menu bar

Pod count, failing pods and one-click Sleep and Wake, through SwiftBar or xbar.

kube menubar

kube add

The services you reach for. One line each.

Each runs in the cluster with its usual port on 127.0.0.1, a .localhost name, and a throwaway password for development.

  • Postgres
  • Redis
  • MySQL
  • MongoDB
  • ClickHouse
  • Redpanda
  • NATS
  • RabbitMQ
  • Mailpit
  • Grafana
  • Qdrant
  • Meilisearch
  • Keycloak
  • SeaweedFS
  • Vault
  • Jaeger
  • Temporal

What it is not

  • One server, no high availability. Extra nodes are agents only.
  • The containers share the VM's kernel, unlike the per-container microVMs of the sandboxes.
  • Checkpoints need a single-node cluster and restore on the same kind of Mac.
  • The first boot needs internet unless you use --offline.

Start a cluster in one command.

Built with Claude Code and tested on a real Mac mini.