lima-vm/lima · error
socket_vmnet is not installed
Error message
socket_vmnet is not installed
What it means
For networks configured with mode `shared` or `bridged`, krunkit routes traffic through socket_vmnet (like qemu's socket_vmnet backend). buildNetworkArgs checks networks.yaml/IsDaemonInstalled for the socket_vmnet daemon and returns `socket_vmnet is not installed` when it is absent, because shared/bridged networking cannot work without it.
Source
Thrown at pkg/driver/krunkit/krunkit_darwin_arm64.go:154
if nw.Lima != "" {
nwCfg, err := networks.LoadConfig()
if err != nil {
return nil, err
}
switch nw.Lima {
case networks.ModeUserV2:
sock, err = usernet.Sock(nw.Lima, usernet.QEMUSock)
if err != nil {
return nil, err
}
mac = limayaml.MACAddress(inst.Dir)
case networks.ModeShared, networks.ModeBridged:
socketVMNetInstalled, err := nwCfg.IsDaemonInstalled(networks.SocketVMNet)
if err != nil {
return nil, err
}
if !socketVMNetInstalled {
return nil, errors.New("socket_vmnet is not installed")
}
sock, err = networks.Sock(nw.Lima)
if err != nil {
return nil, err
}
mac = nw.MACAddress
default:
return nil, fmt.Errorf("invalid network spec %+v", nw)
}
} else if nw.Socket != "" {
sock = nw.Socket
mac = nw.MACAddress
} else {
return nil, fmt.Errorf("invalid network spec %+v", nw)
}
device := fmt.Sprintf("virtio-net,type=unixstream,path=%s,mac=%s", sock, mac)
args = append(args, "--device", device)View on GitHub (pinned to dd909d0973)
Solutions
- Install socket_vmnet: `brew install socket_vmnet`.
- Set up the privileged daemon per Lima docs: `limactl sudoers --check`/`limactl sudoers` and follow the printed instructions, or the socket_vmnet launchd setup in the docs.
- Switch the instance to user-mode networking: change the network entry to `lima: user-v2` (no daemon needed).
- Verify ~/.lima/_config/networks.yaml marks socketVMNet as installed with correct socketVMNet paths/binary.
Example fix
# before (lima.yaml) networks: - lima: bridged # after (option A) networks: - lima: user-v2 # option B: brew install socket_vmnet && limactl sudoers (then keep bridged)
Defensive patterns
Strategy: validation
Validate before calling
# Shell: verify socket_vmnet presence before using shared/bridged
command -v socket_vmnet >/dev/null 2>&1 || { echo "socket_vmnet not installed: brew install socket_vmnet"; exit 1; } Type guard
func requiresSocketVMNet(limaMode string) bool {
return limaMode == "shared" || limaMode == "bridged"
} Try / catch
if err := inst.Start(ctx); err != nil {
if strings.Contains(err.Error(), "socket_vmnet is not installed") {
// fall back to user-v2 networking or install socket_vmnet
return switchToUserV2AndStart(ctx, inst)
}
return err
} Prevention
- Install socket_vmnet (brew install socket_vmnet) and run limactl sudoers setup on every macOS dev machine
- Prefer user-v2 networking unless bridged/shared is truly needed
- Re-check after Homebrew upgrades that socket_vmnet remains installed
- Keep ~/.lima/_config/networks.yaml paths in sync with the installed binary
When it happens
Trigger: Starting a krunkit instance whose lima.yaml has `networks: [{lima: shared}]` or `{lima: bridged}` on a macOS host where socket_vmnet is not installed (or not registered in ~/.lima/_config/networks.yaml as installed).
Common situations: Fresh macOS setup where the user copied an example config using shared networking; after a Homebrew upgrade that removed socket_vmnet; missing the `limactl sudoers` / launchd daemon installation step.
Related errors
- failed to build network arguments: %w
- invalid network spec %+v
- no socket_vmnet networks defined
- %s daemon for %#q network %w%s
- %s daemon for %#q network failed to start after %d attempts:
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/d1df31c8f189daa0.
Report an issue: GitHub.