lima-vm/lima · error
invalid network spec %+v
Error message
invalid network spec %+v
What it means
When a networks entry has a non-empty `lima:` name, buildNetworkArgs only accepts the modes `user-v2`, `shared`, or `bridged`. Any other value (e.g. a custom network name from networks.yaml or a typo like `host`) hits the switch's default case and returns `invalid network spec {nw}`. krunkit does not support qemu-style named socket_vmnet networks beyond those modes.
Source
Thrown at pkg/driver/krunkit/krunkit_darwin_arm64.go:162
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)
}
if len(args) == 0 {
return args, errors.New("no socket_vmnet networks defined")
}
return args, nil
}View on GitHub (pinned to dd909d0973)
Solutions
- Change the entry to a supported mode: `lima: shared`, `lima: bridged`, or `lima: user-v2`.
- If you need a custom named network, remove it for krunkit instances or use vz/qemu driver instead.
- Fix typos in the `lima:` value in lima.yaml.
- If a socket is available, replace with `socket: /path/to/sock` form, which krunkit accepts.
Example fix
# before networks: - lima: mycustomnet # after networks: - lima: user-v2 # or networks: - socket: /Users/me/net.sock
Defensive patterns
Strategy: validation
Validate before calling
// Go: validate lima mode before writing config
var allowed = map[string]bool{"user-v2": true, "shared": true, "bridged": true}
if !allowed[nw.Lima] && nw.Socket == "" {
return fmt.Errorf("mode %q unsupported by krunkit driver", nw.Lima)
} Type guard
func isKrunkitCompatibleNetwork(nw Network) bool {
switch nw.Lima {
case "user-v2", "shared", "bridged":
return true
case "":
return nw.Socket != ""
default:
return false
}
} Try / catch
if err := inst.Start(ctx); err != nil {
if strings.Contains(err.Error(), "invalid network spec") {
log.Error("fix networks entry in lima.yaml: use user-v2/shared/bridged or socket")
}
return err
} Prevention
- Restrict krunkit instance configs to user-v2/shared/bridged modes
- Do not reuse qemu-oriented named-network configs with krunkit
- Lint lima.yaml network modes in CI
- Use socket entries only with valid unix socket paths
When it happens
Trigger: Instance config contains `networks: [{lima: <something-other-than user-v2/shared/bridged>}]` — e.g. a custom named network defined in networks.yaml, or a misspelled mode — while starting with the krunkit driver.
Common situations: Porting an instance config that worked under the qemu driver (which supports arbitrary named networks) to krunkit; typos like `lima: Share` or `lima: bridged-v2`; config generators emitting network group names.
Related errors
- failed to build network arguments: %w
- socket_vmnet is not installed
- no socket_vmnet networks defined
- unimplemented by the krunkit driver
- failed to load disk %#q: %w
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/e98257a225ccd9b4.
Report an issue: GitHub.