Skip to content

Images & networking

ServiceImageNotes
botghcr.io/batazor/autopilot/bot:latestHeadless worker + scheduler + local Tesseract OCR. Multi-arch (amd64+arm64).
apisame bot image, command: apiFastAPI for the Web UI (:8765).
webghcr.io/batazor/autopilot/web:latestNext.js operator dashboard (:3000). Multi-arch.
redisredis:alpineQueue + state.
Terminal window
WOS_IMAGE_TAG=v0.1.0 docker compose -f docker-compose.prod.yml up -d
Terminal window
WOS_REGISTRY=ghcr.io/your-fork docker compose -f docker-compose.prod.yml up -d

How the container reaches the host’s ADB

Section titled “How the container reaches the host’s ADB”

bot runs in network_mode: host so the container shares the host’s loopbackadb start-server stays bound to 127.0.0.1:5037 (safe, no LAN exposure) and the container talks to it as 127.0.0.1:5037 from inside.

No adb -a, no socat sidecar, no host.docker.internal indirection.

Side effect: bot cannot use Compose-internal DNS for redis. Instead, bot connects to Redis over a shared Unix socket volume (redis_socket/var/run/redis/redis.sock). api and web use the default bridge network and reach Redis via the redis service name; web proxies /api to api:8765.

  • Linux — fully supported out of the box.
  • Docker Desktop (macOS / Windows) — works only with the Host networking beta enabled (Settings → Resources → Network → Enable host networking). Without it, the bot can reach redis on loopback but not the host’s adb server.