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

  1. Install socket_vmnet: `brew install socket_vmnet`.
  2. 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.
  3. Switch the instance to user-mode networking: change the network entry to `lima: user-v2` (no daemon needed).
  4. 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

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


AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01). Data as JSON: /api/errors/d1df31c8f189daa0. Report an issue: GitHub.