cd docker/open-design
cp .env.example .env
docker compose up -d --buildThe Docker image pins upstream build inputs by default:
node:24-bookworm-slim@sha256:6f7b03f7c2c8e2e784dcf9295400527b9b1270fd37b7e9a7285cf83b6951452dOPEN_DESIGN_REF=1592beb96134f9d49b8a90dc6a359b94a69af57eOPENCODE_AI_VERSION=1.14.31pnpm@10.33.2withpnpm install --frozen-lockfile
Update them intentionally when you want a newer Open Design or OpenCode CLI build:
docker compose build \
--build-arg OPEN_DESIGN_REF=<commit-sha> \
--build-arg OPENCODE_AI_VERSION=<version>
docker compose up -dTreat changes to any of these values as reviewed supply-chain updates and follow the per-surface checklist. The image digest, upstream commit, tool versions, and JavaScript lockfile are fixed. Debian APT repository state and BuildKit metadata are not fixed, so this experimental adapter does not promise a bit-for-bit Docker rebuild.
Authenticate OpenCode inside the container:
docker exec -it open-design bash
opencode auth login
opencode models openai --refresh
exitThe compose file mounts:
./datafor Open Design runtime data;./opencode-odfor isolated OpenCode config;./opencode-authfor container-local OpenCode auth.
Do not commit data or opencode-auth.
OD_PORT must be a decimal TCP port from 1 to 65535; it defaults to
7456. The image validates this value before starting the daemon and passes it
as a separate argument without a shell. Invalid values stop the container with
a deterministic startup error.
Some browser APIs require a secure context. If Open Design frontend code calls crypto.randomUUID and your browser blocks it over HTTP LAN, prefer HTTPS. Only patch upstream frontend code as a local operational workaround.