Show HN: KubeSilicon – Linux VMs and Mac GPU Jobs from Kubernetes Objects A developer released KubeSilicon, an early-stage open-source project that runs Linux virtual machines from Kubernetes objects on Apple Silicon Macs by replacing KubeVirt's KVM layer with Apple's Virtualization.framework, and runs GPU jobs natively on the Mac via PyTorch MPS or MLX through a SiliconJob object. The project requires an Apple Silicon Mac, macOS 13 or newer, Go, qemu-img, a running kind cluster and kubectl, and its author states the API is "v1 in name only and will change" and that it is not production software. A kubesilicond daemon runs outside the cluster, watches SiliconVM objects and starts one VM per object, writing status.phase and status.ip back and publishing a headless Service so pods can reach VMs by IP or by name. Run Linux virtual machines from Kubernetes objects on a Mac with Apple Silicon, the way KubeVirt does on Linux. It also runs GPU jobs natively on the Mac PyTorch MPS or MLX from a SiliconJob object, so a Kubeflow Pipelines step can train on the Apple GPU: see GPU jobs gpu-jobs-siliconjob and benchmarks https://github.com/Matheus-Thurler/KubeSilicon/blob/main/docs/benchmarks.md . KubeVirt https://kubevirt.io needs KVM, which does not exist on macOS. KubeSilicon replaces the KVM layer with Apple's Virtualization.framework https://developer.apple.com/documentation/virtualization : you declare a SiliconVM , a daemon on the Mac boots it, and pods in your local cluster kind, for example can reach it over the network. Status: early. It works end to end on one Mac with kind on Docker Desktop see docs/validation.md https://github.com/Matheus-Thurler/KubeSilicon/blob/main/docs/validation.md . The API is v1 in name only and will change. Not production software. kubesilicon-tutorial.mp4 kind Docker Desktop VM macOS host ┌──────────────────────┐ ┌────────────────────────────────────┐ │ SiliconVM objects │◄─ API watch ─┤ kubesilicond │ │ CRD kubesilicon.io │── status ───►│ download + convert image │ │ │ │ cloud-init ISO │ │ pod ──────── ping/ssh ─────────────►│ Virtualization.framework ──► VM │ └──────────────────────┘ └────────────────────────────────────┘ kubesilicond runs on the Mac, outside the cluster, watches SiliconVM objects and starts one VM for each, in its own detached process. It writes status.phase and status.ip back and publishes a headless Service, so pods reach the VM by IP or by name