2026-06-09 17:54:26 UTC
719 MB
/usr/local/share/corepack
NODE_ENVproduction
NODE_VERSION24.16.0
PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PLAYWRIGHT_BROWSERS_PATH/home/node/.cache/ms-playwright
YARN_VERSION1.22.22
[#000] sha256:068fedd6b0f109b8186d00d49327b6fc6747c428fd3c9a8739424ff5f38d7531 - 3.74% (26.9 MB)
[#001] sha256:9bea510bd805f72c63e2d093c23fca1da9b02127c4849c121b6117a45d4d2ba7 - 0.0% (3.23 KB)
[#002] sha256:e008f534e95cab9dfc584b72c1beb5ccd5b4e7b6b73973a6fd6791f0d8e2ac29 - 6.64% (47.8 MB)
[#003] sha256:b2b95943836ce3dea08d21af828b011a0645bdca70cd53536131ccd295ef3def - 0.23% (1.63 MB)
[#004] sha256:06d464f614a98416f8f326dcd40292b0a96bf6a56a6fba9e2f98ed770cdacf11 - 0.0% (449 Bytes)
[#005] sha256:450e38b919289e4f9607bbe577d44af787bbd24ca5d0506581f2782a73214a29 - 0.0% (92 Bytes)
[#006] sha256:359b9912327dd30c16a5c7b4456dfadf1baddad47172f43bcccf8613802623bf - 6.23% (44.8 MB)
[#007] sha256:824ca5b85bf811e519bd37aaa5571870291697c11d07d3a2cc13917cf061af71 - 0.0% (95 Bytes)
[#008] sha256:72f428909f7c97db021e173ce1a0b44e3a9ceadadb46fee9562096b00b1a0120 - 2.01% (14.5 MB)
[#009] sha256:62320cab0dcedb53d078157a87b4ca26951e6918a7cbebaff84f095d83c939fd - 24.39% (175 MB)
[#010] sha256:411b08a53befaa46c879018bbe31b71ef16651d9ecc0c7980afe807bc878f87b - 0.0% (15.4 KB)
[#011] sha256:6e55e885d8824908a2793bbd738ec05946357d2ca9cbbd8cb7b975559580f488 - 0.0% (1.28 KB)
[#012] sha256:f5f50340ad0c123eadbb06eb582d070986a62906e2333366fb26e0995fb4ee06 - 0.0% (698 Bytes)
[#013] sha256:ece1ec83237a77b3740316f53f7f2b1aff5f7954c0042e04ad9d5c499527fe33 - 0.0% (5.28 KB)
[#014] sha256:f7be814213722d1e54de9c7ba4e85a69597efd8c247430de5f4b9fa560bbd235 - 0.0% (360 Bytes)
[#015] sha256:b0a5831d42b94cd40ca04fadc72814b9a68b697594b449814d7a1014ab4ef8d7 - 0.66% (4.75 MB)
[#016] sha256:46e49a54c5ae7b11cc33e7c163d4c026c9c6ea9d536dd8eb296c7a95b6f2106f - 0.01% (86.3 KB)
[#017] sha256:119037329ce1b24ca5c6379c1fd64bfd838cfc7d4811d2bcd76c0c0aa2d0cf80 - 1.26% (9.04 MB)
[#018] sha256:89d10a871c86c0e1cabdc30988dc5a1ef98122b3f11b42f843b08261060135a1 - 0.02% (119 KB)
[#019] sha256:cbab7adf424fce99af0bfab6aa40774c955f2d6d42dbb5505ca831b2a011c770 - 0.57% (4.12 MB)
[#020] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)
[#021] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)
[#022] sha256:123c8824daabbebfc75c7d5c0832f9ed1de24577034096f658aa485090ce1a5d - 54.24% (390 MB)
[#023] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)
[#024] sha256:8d41cdf3c0349f4255097d2f7dd7e638b209793bd6567df10906d42f7bd10bbe - 0.0% (183 Bytes)
[#025] sha256:6a25dde7c4a4182ebbf4055bef1f3cb7bdf559529776fb06aaf1a596bad178d4 - 0.0% (204 Bytes)
# debian.sh --arch 'amd64' out/ 'bookworm' '@1779062400'
2026-05-21 18:13:27 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit
2026-05-21 18:13:47 UTC (buildkit.dockerfile.v0)ENV NODE_VERSION=24.16.0
2026-05-21 18:13:47 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" && case "${dpkgArch##*-}" in amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64';; ppc64el) ARCH='ppc64le' OPENSSL_ARCH='linux-ppc64le';; s390x) ARCH='s390x' OPENSSL_ARCH='linux*-s390x';; arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64';; armhf) ARCH='armv7l' OPENSSL_ARCH='linux-armv4';; *) echo "unsupported architecture"; exit 1 ;; esac && set -ex && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 CC68F5A3106FF448322E48ED27F5E38D5B0A215F 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A A363A499291CBBC940DD62E41F10027AF002F8B0 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && gpgconf --kill all && rm -rf "$GNUPGHOME" && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; && apt-mark auto '.*' > /dev/null && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && ln -s /usr/local/bin/node /usr/local/bin/nodejs && node --version && npm --version && rm -rf /tmp/* # buildkit
2026-05-21 18:13:47 UTC (buildkit.dockerfile.v0)ENV YARN_VERSION=1.22.22
2026-05-21 18:14:00 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c set -ex && savedAptMark="$(apt-mark showmanual)" && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && gpgconf --kill all && rm -rf "$GNUPGHOME" && mkdir -p /opt && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && apt-mark auto '.*' > /dev/null && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && yarn --version && rm -rf /tmp/* # buildkit
2026-05-21 18:14:00 UTC (buildkit.dockerfile.v0)COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
2026-05-21 18:14:00 UTC (buildkit.dockerfile.v0)ENTRYPOINT ["docker-entrypoint.sh"]
2026-05-21 18:14:00 UTC (buildkit.dockerfile.v0)CMD ["node"]
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.base.name=docker.io/library/node:24-bookworm-slim org.opencontainers.image.base.digest=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_BUNDLED_PLUGIN_DIR=extensions
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.source=https://github.com/openclaw/openclaw org.opencontainers.image.url=https://openclaw.ai org.opencontainers.image.documentation=https://docs.openclaw.ai/install/docker org.opencontainers.image.licenses=MIT org.opencontainers.image.title=OpenClaw org.opencontainers.image.description=OpenClaw gateway and CLI runtime container image
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)WORKDIR /app
2026-06-09 17:46:10 UTC (buildkit.dockerfile.v0)RUN |2 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions /bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl git hostname lsof openssl procps python3 tini && update-ca-certificates # buildkit
2026-06-09 17:46:10 UTC (buildkit.dockerfile.v0)RUN |2 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions /bin/sh -c chown node:node /app # buildkit
2026-06-09 17:50:05 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/dist ./dist # buildkit
2026-06-09 17:50:13 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/node_modules ./node_modules # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/package.json . # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/pnpm-workspace.yaml . # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/patches ./patches # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/openclaw.mjs . # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/src/agents/templates ./src/agents/templates # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/extensions ./extensions # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/skills ./skills # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/docs ./docs # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/qa ./qa # buildkit
2026-06-09 17:50:14 UTC (buildkit.dockerfile.v0)ENV COREPACK_HOME=/usr/local/share/corepack
2026-06-09 17:50:15 UTC (buildkit.dockerfile.v0)RUN |2 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions /bin/sh -c install -d -m 0755 "$COREPACK_HOME" && corepack enable && for attempt in 1 2 3 4 5; do if corepack prepare "$(node -p "require('./package.json').packageManager")" --activate; then break; fi; if [ "$attempt" -eq 5 ]; then exit 1; fi; sleep $((attempt * 2)); done && chmod -R a+rX "$COREPACK_HOME" # buildkit
2026-06-09 17:50:15 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_IMAGE_APT_PACKAGES
2026-06-09 17:50:15 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_DOCKER_APT_PACKAGES=
2026-06-09 17:50:15 UTC (buildkit.dockerfile.v0)RUN |4 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= /bin/sh -c packages="${OPENCLAW_IMAGE_APT_PACKAGES-$OPENCLAW_DOCKER_APT_PACKAGES}"; if [ -n "$packages" ]; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends $packages; fi # buildkit
2026-06-09 17:50:15 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_IMAGE_PIP_PACKAGES=
2026-06-09 17:50:15 UTC (buildkit.dockerfile.v0)RUN |5 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= /bin/sh -c if [ -n "$OPENCLAW_IMAGE_PIP_PACKAGES" ]; then if ! python3 -m pip --version >/dev/null 2>&1; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends python3-pip; fi && python3 -m pip install --no-cache-dir --break-system-packages $OPENCLAW_IMAGE_PIP_PACKAGES; fi # buildkit
2026-06-09 17:50:15 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_INSTALL_BROWSER=1
2026-06-09 17:50:15 UTC (buildkit.dockerfile.v0)ENV PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwright
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)RUN |6 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= OPENCLAW_INSTALL_BROWSER=1 /bin/sh -c if [ -n "$OPENCLAW_INSTALL_BROWSER" ]; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends xvfb && mkdir -p "$PLAYWRIGHT_BROWSERS_PATH" && node /app/node_modules/playwright-core/cli.js install --with-deps chromium && chown -R node:node "$PLAYWRIGHT_BROWSERS_PATH"; fi # buildkit
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_INSTALL_DOCKER_CLI=
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_DOCKER_GPG_FINGERPRINT=9DC858229FC7DD38854AE2D88D81803C0EBFCD88
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)RUN |8 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= OPENCLAW_INSTALL_BROWSER=1 OPENCLAW_INSTALL_DOCKER_CLI= OPENCLAW_DOCKER_GPG_FINGERPRINT=9DC858229FC7DD38854AE2D88D81803C0EBFCD88 /bin/sh -c if [ -n "$OPENCLAW_INSTALL_DOCKER_CLI" ]; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl gnupg && install -m 0755 -d /etc/apt/keyrings && curl -fsSL https://download.docker.com/linux/debian/gpg -o /tmp/docker.gpg.asc && expected_fingerprint="$(printf '%s' "$OPENCLAW_DOCKER_GPG_FINGERPRINT" | tr '[:lower:]' '[:upper:]' | tr -d '[:space:]')" && docker_gpg_pub_count="$(gpg --batch --show-keys --with-colons /tmp/docker.gpg.asc | awk -F: '$1 == "pub" { c++ } END { print c+0 }')" && if [ "$docker_gpg_pub_count" != "1" ]; then echo "ERROR: Docker apt key must contain exactly one public key (found $docker_gpg_pub_count); refusing a multi-key file." >&2; exit 1; fi && actual_fingerprint="$(gpg --batch --show-keys --with-colons /tmp/docker.gpg.asc | awk -F: '$1 == "fpr" { print toupper($10); exit }')" && if [ -z "$actual_fingerprint" ] || [ "$actual_fingerprint" != "$expected_fingerprint" ]; then echo "ERROR: Docker apt key fingerprint mismatch (expected $expected_fingerprint, got ${actual_fingerprint:-<empty>})" >&2; exit 1; fi && gpg --dearmor -o /etc/apt/keyrings/docker.gpg /tmp/docker.gpg.asc && rm -f /tmp/docker.gpg.asc && chmod a+r /etc/apt/keyrings/docker.gpg && printf 'deb [arch=%s signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable\n' "$(dpkg --print-architecture)" > /etc/apt/sources.list.d/docker.list && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends docker-ce-cli docker-compose-plugin; fi # buildkit
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)RUN |8 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= OPENCLAW_INSTALL_BROWSER=1 OPENCLAW_INSTALL_DOCKER_CLI= OPENCLAW_DOCKER_GPG_FINGERPRINT=9DC858229FC7DD38854AE2D88D81803C0EBFCD88 /bin/sh -c ln -sf /app/openclaw.mjs /usr/local/bin/openclaw && chmod 755 /app/openclaw.mjs # buildkit
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)RUN |8 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= OPENCLAW_INSTALL_BROWSER=1 OPENCLAW_INSTALL_DOCKER_CLI= OPENCLAW_DOCKER_GPG_FINGERPRINT=9DC858229FC7DD38854AE2D88D81803C0EBFCD88 /bin/sh -c install -d -m 0755 -o node -g node /home/node/.config && install -d -m 0700 -o node -g node /home/node/.openclaw /home/node/.openclaw/workspace /home/node/.config/openclaw && stat -c '%U:%G %a' /home/node/.openclaw | grep -qx 'node:node 700' && stat -c '%U:%G %a' /home/node/.openclaw/workspace | grep -qx 'node:node 700' && stat -c '%U:%G %a' /home/node/.config | grep -qx 'node:node 755' && stat -c '%U:%G %a' /home/node/.config/openclaw | grep -qx 'node:node 700' # buildkit
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)ENV NODE_ENV=production
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)USER node
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)HEALTHCHECK {Test:[CMD-SHELL node -e "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"] Interval:3m0s Timeout:10s StartPeriod:15s StartInterval:0s Retries:3}
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)ENTRYPOINT ["tini" "-s" "--"]
2026-06-09 17:54:26 UTC (buildkit.dockerfile.v0)CMD ["node" "openclaw.mjs" "gateway"]
2026-06-09 17:56:34 UTC
745 MB
/usr/local/share/corepack
NODE_ENVproduction
NODE_VERSION24.16.0
PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PLAYWRIGHT_BROWSERS_PATH/home/node/.cache/ms-playwright
YARN_VERSION1.22.22
[#000] sha256:f400d36d7784570c9fb7558e367d2b5d38e8b2f1d6faee041815acea7f87e669 - 3.6% (26.8 MB)
[#001] sha256:7a66c87efd5624cb4f422167190aa8e5b1faf939c132178179cef7f78e79804d - 0.0% (3.23 KB)
[#002] sha256:69360d6563196731332a96523017c59b4797c951cf153ee091e6fb98b35bfa4a - 6.41% (47.8 MB)
[#003] sha256:50c2d464baf79fc755c23824990f1027aa011d35e725afe8b9d59027a2cddd88 - 0.22% (1.63 MB)
[#004] sha256:4a9eca531e65e97590776264555a1dc9a629d44b9b268ccff38f92fcafb8130d - 0.0% (446 Bytes)
[#005] sha256:209555ed112c055b9489543ff949145f3cef1ca394319224cf3610c90ecbb7d5 - 0.0% (92 Bytes)
[#006] sha256:5c951317687da6f96d8776952413c0477d2eccd5fb5e5a4a23494fdd71edf8ce - 6.01% (44.8 MB)
[#007] sha256:1e4f8d85b57e3ce63446a7120e13831f0a08db70e912a34edec3bf749bcc4dd5 - 0.0% (95 Bytes)
[#008] sha256:3082ed145b35441f8866267f799edfd75cf569cd01afd757fc01614dc78685d3 - 1.94% (14.5 MB)
[#009] sha256:bf69a8f51608f23899e97331a95b22eb6fcd078068aad4fbf877ef1498242535 - 22.74% (169 MB)
[#010] sha256:eab90c79587b633526f8b2c244f6eb78c5ccfea1535a465256a579ad4edcd2ca - 0.0% (15.4 KB)
[#011] sha256:5bba8109c00e100b8218823306ce7e73004c86753a89c5583a53f0c5c7204b2a - 0.0% (1.28 KB)
[#012] sha256:d378e29c46b9222de60d0349cd62998d08a207fd97b27555ba5d03cec25116ae - 0.0% (699 Bytes)
[#013] sha256:e5b683feae1567c9b8f71d09072116342edbc2c618212d25e84f900ae2fd0b1f - 0.0% (5.28 KB)
[#014] sha256:29d823bac15de1f04567f9c301cff2173d9c20220a2aa7bcb04e49d926ad7791 - 0.0% (362 Bytes)
[#015] sha256:40c2dd9bcc25290ba4a347e41b5c05c5ff9def9771d533277cb57650247115ff - 0.64% (4.75 MB)
[#016] sha256:7f0df8aac6d09acd9bd4dba54a4258010a5d78ccf768f4818c0430778c1e7e89 - 0.01% (86.3 KB)
[#017] sha256:38f8e66cd62de763670c75725297d24dc6a1605169f1f933a121f861216955a4 - 1.21% (9.04 MB)
[#018] sha256:70a863f5d87180efcdb9d0a88f245ec4b4e61d877906b9df132477487d7550a7 - 0.02% (119 KB)
[#019] sha256:2b7ae5503404ad2fb23170af0c39f243898c6099e32f6183640c8b752f8dfe39 - 0.55% (4.12 MB)
[#020] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)
[#021] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)
[#022] sha256:a2c8e1d16ba6072416737f166f28238e1dcd044e4f103259a019e49a76cfca6a - 56.65% (422 MB)
[#023] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)
[#024] sha256:0dacb8bb1cd7de23d52966cf469cd48574b372e2ed1c27b114adca8c387095f9 - 0.0% (184 Bytes)
[#025] sha256:f8ee6e4fd19a7ae65d4e607d6c619ac129218ce5665fd71d3c2da051e1c38e5c - 0.0% (204 Bytes)
# debian.sh --arch 'arm64' out/ 'bookworm' '@1779062400'
2026-05-21 18:13:50 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c groupadd --gid 1000 node && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit
2026-05-21 18:14:09 UTC (buildkit.dockerfile.v0)ENV NODE_VERSION=24.16.0
2026-05-21 18:14:09 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" && case "${dpkgArch##*-}" in amd64) ARCH='x64' OPENSSL_ARCH='linux-x86_64';; ppc64el) ARCH='ppc64le' OPENSSL_ARCH='linux-ppc64le';; s390x) ARCH='s390x' OPENSSL_ARCH='linux*-s390x';; arm64) ARCH='arm64' OPENSSL_ARCH='linux-aarch64';; armhf) ARCH='armv7l' OPENSSL_ARCH='linux-armv4';; *) echo "unsupported architecture"; exit 1 ;; esac && set -ex && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 CC68F5A3106FF448322E48ED27F5E38D5B0A215F 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C 108F52B48DB57BB0CC439B2997B01419BD92F80A A363A499291CBBC940DD62E41F10027AF002F8B0 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && gpgconf --kill all && rm -rf "$GNUPGHOME" && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; && apt-mark auto '.*' > /dev/null && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && ln -s /usr/local/bin/node /usr/local/bin/nodejs && node --version && npm --version && rm -rf /tmp/* # buildkit
2026-05-21 18:14:09 UTC (buildkit.dockerfile.v0)ENV YARN_VERSION=1.22.22
2026-05-21 18:14:22 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c set -ex && savedAptMark="$(apt-mark showmanual)" && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr --no-install-recommends && rm -rf /var/lib/apt/lists/* && export GNUPGHOME="$(mktemp -d)" && for key in 6A010C5166006599AA17F08146C2130DFD2497F5 ; do { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; done && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && gpgconf --kill all && rm -rf "$GNUPGHOME" && mkdir -p /opt && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz && apt-mark auto '.*' > /dev/null && { [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; } && find /usr/local -type f -executable -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && yarn --version && rm -rf /tmp/* # buildkit
2026-05-21 18:14:22 UTC (buildkit.dockerfile.v0)COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
2026-05-21 18:14:22 UTC (buildkit.dockerfile.v0)ENTRYPOINT ["docker-entrypoint.sh"]
2026-05-21 18:14:22 UTC (buildkit.dockerfile.v0)CMD ["node"]
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.base.name=docker.io/library/node:24-bookworm-slim org.opencontainers.image.base.digest=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_BUNDLED_PLUGIN_DIR=extensions
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.source=https://github.com/openclaw/openclaw org.opencontainers.image.url=https://openclaw.ai org.opencontainers.image.documentation=https://docs.openclaw.ai/install/docker org.opencontainers.image.licenses=MIT org.opencontainers.image.title=OpenClaw org.opencontainers.image.description=OpenClaw gateway and CLI runtime container image
2026-06-09 17:45:58 UTC (buildkit.dockerfile.v0)WORKDIR /app
2026-06-09 17:46:23 UTC (buildkit.dockerfile.v0)RUN |2 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions /bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl git hostname lsof openssl procps python3 tini && update-ca-certificates # buildkit
2026-06-09 17:46:31 UTC (buildkit.dockerfile.v0)RUN |2 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions /bin/sh -c chown node:node /app # buildkit
2026-06-09 17:51:45 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/dist ./dist # buildkit
2026-06-09 17:51:52 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/node_modules ./node_modules # buildkit
2026-06-09 17:51:53 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/package.json . # buildkit
2026-06-09 17:51:53 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/pnpm-workspace.yaml . # buildkit
2026-06-09 17:51:53 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/patches ./patches # buildkit
2026-06-09 17:51:53 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/openclaw.mjs . # buildkit
2026-06-09 17:51:53 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/src/agents/templates ./src/agents/templates # buildkit
2026-06-09 17:51:54 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/extensions ./extensions # buildkit
2026-06-09 17:51:54 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/skills ./skills # buildkit
2026-06-09 17:51:54 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/docs ./docs # buildkit
2026-06-09 17:51:54 UTC (buildkit.dockerfile.v0)COPY --chown=node:node /app/qa ./qa # buildkit
2026-06-09 17:51:54 UTC (buildkit.dockerfile.v0)ENV COREPACK_HOME=/usr/local/share/corepack
2026-06-09 17:51:55 UTC (buildkit.dockerfile.v0)RUN |2 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions /bin/sh -c install -d -m 0755 "$COREPACK_HOME" && corepack enable && for attempt in 1 2 3 4 5; do if corepack prepare "$(node -p "require('./package.json').packageManager")" --activate; then break; fi; if [ "$attempt" -eq 5 ]; then exit 1; fi; sleep $((attempt * 2)); done && chmod -R a+rX "$COREPACK_HOME" # buildkit
2026-06-09 17:51:55 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_IMAGE_APT_PACKAGES
2026-06-09 17:51:55 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_DOCKER_APT_PACKAGES=
2026-06-09 17:51:55 UTC (buildkit.dockerfile.v0)RUN |4 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= /bin/sh -c packages="${OPENCLAW_IMAGE_APT_PACKAGES-$OPENCLAW_DOCKER_APT_PACKAGES}"; if [ -n "$packages" ]; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends $packages; fi # buildkit
2026-06-09 17:51:55 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_IMAGE_PIP_PACKAGES=
2026-06-09 17:51:55 UTC (buildkit.dockerfile.v0)RUN |5 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= /bin/sh -c if [ -n "$OPENCLAW_IMAGE_PIP_PACKAGES" ]; then if ! python3 -m pip --version >/dev/null 2>&1; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends python3-pip; fi && python3 -m pip install --no-cache-dir --break-system-packages $OPENCLAW_IMAGE_PIP_PACKAGES; fi # buildkit
2026-06-09 17:51:55 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_INSTALL_BROWSER=1
2026-06-09 17:51:55 UTC (buildkit.dockerfile.v0)ENV PLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwright
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)RUN |6 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= OPENCLAW_INSTALL_BROWSER=1 /bin/sh -c if [ -n "$OPENCLAW_INSTALL_BROWSER" ]; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends xvfb && mkdir -p "$PLAYWRIGHT_BROWSERS_PATH" && node /app/node_modules/playwright-core/cli.js install --with-deps chromium && chown -R node:node "$PLAYWRIGHT_BROWSERS_PATH"; fi # buildkit
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_INSTALL_DOCKER_CLI=
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)ARG OPENCLAW_DOCKER_GPG_FINGERPRINT=9DC858229FC7DD38854AE2D88D81803C0EBFCD88
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)RUN |8 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= OPENCLAW_INSTALL_BROWSER=1 OPENCLAW_INSTALL_DOCKER_CLI= OPENCLAW_DOCKER_GPG_FINGERPRINT=9DC858229FC7DD38854AE2D88D81803C0EBFCD88 /bin/sh -c if [ -n "$OPENCLAW_INSTALL_DOCKER_CLI" ]; then apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl gnupg && install -m 0755 -d /etc/apt/keyrings && curl -fsSL https://download.docker.com/linux/debian/gpg -o /tmp/docker.gpg.asc && expected_fingerprint="$(printf '%s' "$OPENCLAW_DOCKER_GPG_FINGERPRINT" | tr '[:lower:]' '[:upper:]' | tr -d '[:space:]')" && docker_gpg_pub_count="$(gpg --batch --show-keys --with-colons /tmp/docker.gpg.asc | awk -F: '$1 == "pub" { c++ } END { print c+0 }')" && if [ "$docker_gpg_pub_count" != "1" ]; then echo "ERROR: Docker apt key must contain exactly one public key (found $docker_gpg_pub_count); refusing a multi-key file." >&2; exit 1; fi && actual_fingerprint="$(gpg --batch --show-keys --with-colons /tmp/docker.gpg.asc | awk -F: '$1 == "fpr" { print toupper($10); exit }')" && if [ -z "$actual_fingerprint" ] || [ "$actual_fingerprint" != "$expected_fingerprint" ]; then echo "ERROR: Docker apt key fingerprint mismatch (expected $expected_fingerprint, got ${actual_fingerprint:-<empty>})" >&2; exit 1; fi && gpg --dearmor -o /etc/apt/keyrings/docker.gpg /tmp/docker.gpg.asc && rm -f /tmp/docker.gpg.asc && chmod a+r /etc/apt/keyrings/docker.gpg && printf 'deb [arch=%s signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable\n' "$(dpkg --print-architecture)" > /etc/apt/sources.list.d/docker.list && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends docker-ce-cli docker-compose-plugin; fi # buildkit
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)RUN |8 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= OPENCLAW_INSTALL_BROWSER=1 OPENCLAW_INSTALL_DOCKER_CLI= OPENCLAW_DOCKER_GPG_FINGERPRINT=9DC858229FC7DD38854AE2D88D81803C0EBFCD88 /bin/sh -c ln -sf /app/openclaw.mjs /usr/local/bin/openclaw && chmod 755 /app/openclaw.mjs # buildkit
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)RUN |8 OPENCLAW_NODE_BOOKWORM_SLIM_DIGEST=sha256:242549cd46785b480c832479a730f4f2a20865d61ea2e404fdb2a5c3d3b73ecf OPENCLAW_BUNDLED_PLUGIN_DIR=extensions OPENCLAW_IMAGE_APT_PACKAGES= OPENCLAW_DOCKER_APT_PACKAGES= OPENCLAW_IMAGE_PIP_PACKAGES= OPENCLAW_INSTALL_BROWSER=1 OPENCLAW_INSTALL_DOCKER_CLI= OPENCLAW_DOCKER_GPG_FINGERPRINT=9DC858229FC7DD38854AE2D88D81803C0EBFCD88 /bin/sh -c install -d -m 0755 -o node -g node /home/node/.config && install -d -m 0700 -o node -g node /home/node/.openclaw /home/node/.openclaw/workspace /home/node/.config/openclaw && stat -c '%U:%G %a' /home/node/.openclaw | grep -qx 'node:node 700' && stat -c '%U:%G %a' /home/node/.openclaw/workspace | grep -qx 'node:node 700' && stat -c '%U:%G %a' /home/node/.config | grep -qx 'node:node 755' && stat -c '%U:%G %a' /home/node/.config/openclaw | grep -qx 'node:node 700' # buildkit
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)ENV NODE_ENV=production
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)USER node
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)HEALTHCHECK {Test:[CMD-SHELL node -e "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"] Interval:3m0s Timeout:10s StartPeriod:15s StartInterval:0s Retries:3}
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)ENTRYPOINT ["tini" "-s" "--"]
2026-06-09 17:56:34 UTC (buildkit.dockerfile.v0)CMD ["node" "openclaw.mjs" "gateway"]
Please be careful as this will not just delete the reference but also the actual content!
For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.