abiosoft/colima · error

daemon is not running

Error message

daemon is not running

What it means

Emitted inside an a.Retry('', 1s, 15) loop that polls l.daemon.Running(ctx, conf) after starting the VM daemon processes (network and/or inotify): after up to 15 checks the daemon Status still reports s.Running == false. The daemon (colima's root-level helper inside the Lima VM) failed to come up, so start aborts with this error (or a per-process error from status.Processes if a specific child died).

Source

Thrown at environment/vm/lima/daemon.go:94

		})
	}

	// start daemon
	a.Add(func() error {
		return l.daemon.Start(ctx, conf)
	})

	statusKey := struct{ key string }{key: "daemonStatus"}
	// delay to ensure that the processes have started
	if conf.Network.Address || conf.MountINotify {
		a.Retry("", time.Second*1, 15, func(i int) error {
			s, err := l.daemon.Running(ctx, conf)
			ctx = context.WithValue(ctx, statusKey, s)
			if err != nil {
				return err
			}
			if !s.Running {
				return fmt.Errorf("daemon is not running")
			}
			for _, p := range s.Processes {
				if !p.Running {
					return p.Error
				}
			}
			return nil
		})
	}

	// network failure is not fatal
	if err := a.Exec(); err != nil {
		if useVmnet {
			func() {
				installed, _ := ctx.Value(networkInstalledKey).(bool)
				if !installed {
					log.Warnln(fmt.Errorf("error setting up network dependencies: %w", err))
					return

View on GitHub (pinned to c3a5f9184d)

Solutions

  1. Give the VM more resources and retry: 'colima stop && colima start --memory 4 --cpu 2' (adjust as needed).
  2. Inspect the daemon inside the guest: 'colima ssh -- ps aux | grep colima-daemon' and check its log/socket under /var/lib/colima (or the profile's daemon dir) for the real launch error.
  3. If a stale daemon is suspected, fully stop and start (not resume) — 'colima stop -f && colima start' — so the daemon is re-spawned cleanly.
  4. Recreate the VM to get a fresh daemon install after a colima version change: 'colima delete -f && colima start'.
  5. Report upstream with 'colima daemon' logs if it persists on a fresh VM with defaults (no --network-address, no --mount-inotify).
Defensive patterns

Strategy: retry

Validate before calling

// preflight: VM must be running and responsive before daemon-dependent steps
if !l.Running(ctx) {
    return fmt.Errorf("VM not running; cannot verify daemon status")
}

Try / catch

// the code already retries 15x1s; on failure inspect per-process errors
s, err := l.daemon.Running(ctx, conf)
if err != nil {
    return err
}
if !s.Running {
    for _, p := range s.Processes {
        if !p.Running {
            return fmt.Errorf("daemon process %s failed: %v", p.Name, p.Error)
        }
    }
    return fmt.Errorf("daemon is not running")
}

Prevention

When it happens

Trigger: 'colima start' with --network-address/vmnet networks or --mount-inotify where the in-VM daemon binary fails to launch: guest out of memory (daemon OOM-killed), the daemon socket/status file unreadable, sudo/launch of the daemon blocked, or the VM still busy (all 15s of retries exhausted on very slow machines); a previous crash left a stale status file claiming not-running while the process is defunct.

Common situations: Low-memory VMs (default 2GiB) with kubernetes plus inotify enabled; VMs recovering from host sleep; first start after a colima upgrade where the daemon binary layout changed but the VM was resumed from an old state; heavily loaded CI runners where the 15×1s window is too short.

Related errors


AI-assisted analysis of abiosoft/colima@c3a5f9184d (2026-08-15). Data as JSON: /api/errors/2b658924ff30611f. Report an issue: GitHub.