xpipe-io/xpipe · error · IllegalStateException

Podman daemon is not running

Error message

Podman daemon is not running

What it means

PodmanCommandView.listContainersAndStates() first checks isDaemonRunning() and throws IllegalStateException("Podman daemon is not running") when the podman daemon on the target machine is not reachable. Container listing requires the podman service/daemon, so without it no podman commands can succeed.

Source

Thrown at ext/system/src/main/java/io/xpipe/ext/system/podman/PodmanCommandView.java:117

                b.add("container");
                builder.accept(b);
            });
        }

        @Override
        protected ShellControl getShellControl() {
            return PodmanCommandView.this.getShellControl();
        }

        @Override
        public Container start() throws Exception {
            shellControl.start();
            return this;
        }

        public List<ContainerEntry> listContainersAndStates() throws Exception {
            if (!PodmanCommandView.this.isDaemonRunning()) {
                throw new IllegalStateException("Podman daemon is not running");
            }

            try (var c = build(commandBuilder ->
                            commandBuilder.add("ls -a --format=\"{{.Names}};{{.Image}};{{.Status}}\""))
                    .start()) {
                var output = c.readStdoutOrThrow();
                var l = new ArrayList<ContainerEntry>();
                for (String s : output.lines().toList()) {
                    var systemd =
                            queryLabel(s.split(";")[0], "PODMAN_SYSTEMD_UNIT").orElse(null);
                    l.add(new ContainerEntry(s.split(";")[0], s.split(";")[1], s.split(";")[2], systemd));
                }
                return l;
            }
        }

        public ShellControl exec(String container, ShellDialect dialect) {
            var sub = shellControl.subShell();

View on GitHub (pinned to d85ca821ba)

Solutions

  1. Start the podman daemon on the target machine (`systemctl --user start podman.socket` or `podman machine start`)
  2. Verify with `podman info` on the target host that podman works for the connecting user
  3. Reconnect the store in XPipe after the daemon is running
  4. Check rootless podman configuration (subuid/subgid, loginctl enable-linger) for the SSH user

Example fix

// before (daemon stopped)
$ podman ps  # -> cannot connect
// after
$ systemctl --user enable --now podman.socket
$ podman info  # succeeds, then retry listContainersAndStates()
Defensive patterns

Strategy: validation

Validate before calling

if (!podmanCommandView.isDaemonRunning()) {
    // start the daemon or surface a 'podman not running' state before listing
    return List.of();
}

Try / catch

try {
    view.listContainersAndStates();
} catch (IllegalStateException e) {
    if (e.getMessage().contains("daemon is not running")) {
        // show remediation: start podman machine / podman.socket
    }
}

Prevention

When it happens

Trigger: Calling listContainersAndStates() (via the Podman command view during container refresh) on a connection where `podman info` / daemon check reports the daemon is down — podman service not started, remote podman socket absent, or rootless podman not initialized for the user.

Common situations: Podman machine not started (macOS/Windows: `podman machine start`); systemd user service for podman.socket not enabled on Linux; SSH user on the remote host has no rootless podman configured; podman recently upgraded and service stopped.

Understand the failure class

Background: ECONNREFUSED and "connection refused" / "could not connect to server" errors: what they mean and how to fix them — this error's family across 44 libraries.


AI-assisted analysis of xpipe-io/xpipe@d85ca821ba (2026-09-06). Data as JSON: /api/errors/8361191aca8a6875. Report an issue: GitHub.