Repository navigation
RyzenHV 0.7.0: native mode (experimental)
0.7.0: native mode (experimental, opt-in)
With the boot-arg rhv_hv=1 (./rhv kext --native adds it) the kext registers with xnu in the place of AppleHV, so the real, unmodified
Hypervisor.framework talks to it. Docker Desktop 4.97.0 (Intel build) runs with Docker's own files: no shim, no wrappers, nothing re-signed, nothing changed in Docker.app.
./rhv docker-desktop only switches Docker to HyperKit in its settings.
Tested on a Ryzen 7 5800H, macOS 15.8.1, OpenCore: the engine starts, hello-world, 30 containers at once, builds, pulls, 16 busy vCPUs, parallel 2 GB disk writes, memory tests; no panic, error counters 0.
QEMU with -accel hvf also boots Linux natively (after rhv-info hv sysctl 1, which the kext does by decoding the kernel's own hv_get_support).
How HyperKit's two CPU checks (the GenuineIntel vendor check and verify_gla) are handled: when com.docker.hyper... creates its VM, the kext finds those two branches by their bytes in that process and changes them in memory, once. Another Docker build is left alone and the kext log says so. Needs AMFI relaxed (amfi_get_out_of_my_way=0x1).
Read docs/NATIVE.md before using it. Known and not closed: a race between hv_vm_map and hv_vm_destroy in two threads, a stale vCPU target after exec() with a live VM, no entitlement check (with rhv_allow_users=1 any local user can create a VM), hv_vcpu_run_until's deadline ignored, sleep/wake and multi-hour runs untested, rhv_hv_sysctl=1 at boot untested. Parallels is not native yet: use the shim (./rhv parallels).
The release kext differs from the one that was tested live only by removed debug logging.
Without rhv_hv=1 the kext behaves exactly like 0.6. Keep a working EFI without the kext.
Install: unpack, ./rhv kext --native, reboot, ./rhv doctor, ./rhv docker-desktop get (if needed), ./rhv docker-desktop, open -a Docker. Details in START-HERE.md.