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
- Start the podman daemon on the target machine (`systemctl --user start podman.socket` or `podman machine start`)
- Verify with `podman info` on the target host that podman works for the connecting user
- Reconnect the store in XPipe after the daemon is running
- 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
- Enable podman.socket / start podman machine on target hosts
- Check isDaemonRunning() before any container operation
- Configure rootless podman (linger, subuid/subgid) for SSH users
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.