{"record":{"id":"c5e58fa935df8679","repo":"lima-vm/lima","slug":"no-socket-vmnet-networks-defined","errorCode":null,"errorMessage":"no socket_vmnet networks defined","messagePattern":"no socket_vmnet networks defined","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/driver/krunkit/krunkit_darwin_arm64.go","lineNumber":176,"sourceCode":"\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tmac = nw.MACAddress\n\t\t\tdefault:\n\t\t\t\treturn nil, fmt.Errorf(\"invalid network spec %+v\", nw)\n\t\t\t}\n\t\t} else if nw.Socket != \"\" {\n\t\t\tsock = nw.Socket\n\t\t\tmac = nw.MACAddress\n\t\t} else {\n\t\t\treturn nil, fmt.Errorf(\"invalid network spec %+v\", nw)\n\t\t}\n\n\t\tdevice := fmt.Sprintf(\"virtio-net,type=unixstream,path=%s,mac=%s\", sock, mac)\n\t\targs = append(args, \"--device\", device)\n\t}\n\n\tif len(args) == 0 {\n\t\treturn args, errors.New(\"no socket_vmnet networks defined\")\n\t}\n\n\treturn args, nil\n}\n\nfunc startUsernet(ctx context.Context, inst *limatype.Instance) (*usernet.Client, context.CancelFunc, error) {\n\tif firstUsernetIndex := limayaml.FirstUsernetIndex(inst.Config); firstUsernetIndex != -1 {\n\t\treturn usernet.NewClientByName(inst.Config.Networks[firstUsernetIndex].Lima), nil, nil\n\t}\n\t// Start a in-process gvisor-tap-vsock\n\tendpointSock, err := usernet.SockWithDirectory(inst.Dir, \"\", usernet.EndpointSock)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tkrunkitSock, err := usernet.SockWithDirectory(inst.Dir, \"\", usernet.FDSock)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}","sourceCodeStart":158,"sourceCodeEnd":194,"githubUrl":"https://github.com/lima-vm/lima/blob/dd909d0973cd84fa35f9e1693181b4585ea616c1/pkg/driver/krunkit/krunkit_darwin_arm64.go#L158-L194","documentation":"After iterating all network entries, buildNetworkArgs returns `no socket_vmnet networks defined` if the args slice is still empty — meaning no virtio-net device flags were generated at all. In practice this occurs when the config somehow yields no network devices (no default usernet path taken and no networks entries resolved), so krunkit would boot with no NIC.","triggerScenarios":"Starting a krunkit instance where FirstUsernetIndex == -1 path also produced no args and inst.Networks is empty/produced nothing — a degenerate config where the default gvisor usernet device was not added and no socket_vmnet networks exist.","commonSituations":"Deeply modified instance config with networks stripped out while the driver still requires at least one network device; driver-level invariant check rather than a user-actionable config state in normal flows.","solutions":["Add a network entry to lima.yaml, e.g. `networks: [{lima: user-v2}]`, so at least one NIC is configured.","Restore the default config (`limactl start template://default`) if the instance config was heavily hand-edited.","If you believe the config is valid, report a bug to Lima — this indicates the krunkit driver's default usernet path failed to append its device silently (e.g. PassFDToUnix path change).","Check Lima version; upgrade in case the default-network handling for krunkit changed."],"exampleFix":"# before\nnetworks: []\n# after\nnetworks:\n  - lima: user-v2","handlingStrategy":"validation","validationCode":"# Shell: ensure at least one usable network before krunkit start\ncount=$(yq '(.networks // []) | length' lima.yaml)\n[ \"$count\" -gt 0 ] || yq '.networks += [{\"lima\": \"user-v2\"}]' -i lima.yaml","typeGuard":"func hasUsableNetwork(cfg Config) bool {\n    if len(cfg.Networks) == 0 { return false }\n    for _, nw := range cfg.Networks {\n        if nw.Lima == \"user-v2\" || nw.Lima == \"shared\" || nw.Lima == \"bridged\" || nw.Socket != \"\" {\n            return true\n        }\n    }\n    return false\n}","tryCatchPattern":"if err := inst.Start(ctx); err != nil {\n    if strings.Contains(err.Error(), \"no socket_vmnet networks defined\") {\n        log.Error(\"no network devices configured; add networks: [{lima: user-v2}]\")\n    }\n    return err\n}","preventionTips":["Always keep at least one valid networks entry in krunkit instance configs","Start from template://default rather than stripping networks","Re-add user-v2 if custom network edits remove all backends","Upgrade Lima if the default usernet path silently produces no devices"],"tags":["krunkit","network","macos","edge-case"],"backgroundTag":"no-network-device-configured","analyzedSha":"dd909d0973cd84fa35f9e1693181b4585ea616c1","analyzedAt":"2026-09-01T14:24:59.842Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}