Skip to content

Let the engine socket be somewhere other than /var/run/docker.sock - #373

Merged
davidmckayv merged 1 commit into
mainfrom
engine-socket
Sep 4, 2026
Merged

Let the engine socket be somewhere other than /var/run/docker.sock#373
davidmckayv merged 1 commit into
mainfrom
engine-socket

Conversation

@davidmckayv

Copy link
Copy Markdown
Contributor

Completes S1 of the OpenBot Desktop build: the stack proven on Podman on both macOS and Linux.

The defect

Compose mounted /var/run/docker.sock into the supervisor as a fixed source. Correct on Docker, and correct on Podman on macOS, where podman machine symlinks that path to the rootless socket inside the VM. That is why the mount needed no change there.

Wrong on rootless Podman on Linux. The path is either absent or, with podman-docker installed, a symlink to /run/podman/podman.sock — the rootful socket, which is not the one running:

/var/run/docker.sock -> /run/podman/podman.sock          # root:root, not running
/run/user/501/podman/podman.sock                          # the rootless socket, live

The supervisor is handed a dead socket, and every request for a Bot's computer fails:

The supervisor could not reach Docker (Error: Was there a typo in the url or port?).
A computer cannot be started without it.

The mount source is now ${ENGINE_SOCKET:-/var/run/docker.sock}, so nothing changes for anyone who does not set it.

Verified on Linux, red then green

Ubuntu 24.04 aarch64, rootless Podman 4.9.3, real Intelligence credentials, start.sh unmodified.

result
before 4 pass, 1 failcould not reach Docker
after, ENGINE_SOCKET=$XDG_RUNTIME_DIR/podman/podman.sock 5 pass, 0 fail

After: openbot-computer-risk-analyst Up 3 seconds, and the navigate test took 3.5s because it waited for the computer to be healthy rather than racing it — the fix from #372 doing its job on a second engine.

S1 is now answered on both platforms

macOS, Podman 6.1.1, applehv: 5 pass, 0 fail. Linux, Podman 4.9.3, native rootless: 5 pass, 0 fail. On both, compose came up, the supervisor held the rootless socket, it created a per-Bot computer through it, and a harness answered a live AG-UI run through the gateway with the trail recording it.

What the two platforms disagree about

Worth stating, because the build doc treats them as one row:

macOS Linux
Podman version 6.1.1 (brew) 4.9.3 (Ubuntu 24.04 LTS)
/var/run/docker.sock symlink to the rootless socket, works symlink to the rootful socket, dead
ENGINE_SOCKET needed no yes
SELinux Enforcing, so label=disable required none, AppArmor instead; label=disable is a no-op and harmless
port forwarding gvproxy forwards the computer's published port to the host native loopback, nothing to forward

format:check and lint clean; docker compose config valid.

Compose mounted that path into the supervisor as a fixed source. It is right on
Docker, and on Podman on macOS, where `podman machine` symlinks it to the
rootless socket inside the virtual machine, which is why the mount needed no
change there.

It is wrong on rootless Podman on Linux. The path is either absent or, with
podman-docker installed, a symlink to /run/podman/podman.sock: the rootful
socket, not the one running. The supervisor is handed a dead socket and every
request for a Bot's computer fails with "The supervisor could not reach Docker".

The source is now ENGINE_SOCKET, defaulting to the old path, so a deployment
that does not set it behaves exactly as before.

Verified on Ubuntu 24.04, rootless Podman 4.9.3, arm64: the smoke journey
failed on that one test before the change and passes after, with the supervisor
creating the Bot's computer through the rootless socket.
@davidmckayv davidmckayv added the full-ci Run the slow image builds on this PR label Sep 4, 2026
@davidmckayv
davidmckayv merged commit ba3ab6e into main Sep 4, 2026
14 checks passed
@davidmckayv
davidmckayv deleted the engine-socket branch September 4, 2026 21:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full-ci Run the slow image builds on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant