Skip to content

docs: document macOS Podman socket path mismatch and dynamic lookup #1690

Description

@abraham2512

Problem Statement

On macOS, the Podman socket lives under /var/folders/ (e.g. /var/folders/9k/.../podman-machine-default-api.sock), not at the default path OpenShell checks (~/.local/share/containers/podman/machine/podman.sock). The /var/folders/ path can also change after a reboot since macOS rotates per-user temp directories.

This causes mise run gateway to fail with a misleading retry loop when Podman is running but the socket path doesn't match:

WARN openshell_driver_podman::driver: Podman socket not found; is podman machine running?
WARN openshell_driver_podman::driver: Podman socket not ready, retrying attempt=1 max_retries=5
...
Error: failed to create compute runtime: connection error: ...podman.sock: No such file or directory

Proposed Design

Document the OPENSHELL_PODMAN_SOCKET override and the dynamic lookup command in:

  1. User-facing docs — the Podman section of the quickstart or a compute drivers reference page.
  2. debug-openshell-cluster skill — add a diagnostic step that checks for macOS socket path mismatch when the Podman driver fails.

Recommended workaround to document:

export OPENSHELL_PODMAN_SOCKET="$(podman machine inspect --format '{{.ConnectionInfo.PodmanSocket.Path}}')"

This queries Podman for the current socket path dynamically, so it always resolves correctly regardless of what temp directory macOS assigns.

Alternatives Considered

  • Hardcode the /var/folders/ path — Unreliable because macOS rotates this directory.
  • Auto-detect via podman machine inspect in the driver — Would add a subprocess call to the hot path; the env var override is simpler and user-controlled.

Agent Investigation

Confirmed the issue locally. The default socket path in openshell-driver-podman is ~/.local/share/containers/podman/machine/podman.sock, which does not exist on macOS when Podman is installed via brew. The actual socket is at a path like /var/folders/9k/4zb7qbss3p51dl6ldl1wbnfc0000gn/T/podman/podman-machine-default-api.sock. Using mise run gateway:docker works as a fallback when Docker is the intended runtime.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions