镜像构建历史
# 2026-11-04 02:49:05 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/opt/agent-canvas/entrypoint.sh"]
# 2026-11-04 02:49:05 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-11-04 02:49:05 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/home/openhands/.openhands /projects]
# 2026-11-04 02:49:05 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-11-04 02:49:05 0.00B 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.26.1 AGENT_SERVER_VERSION=1.59.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=934612b3b6cee05d3a4400b98b48a9c69215401d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.35.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.35.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c mkdir -p /home/openhands/.openhands/agent-canvas/conversations /home/openhands/.openhands/agent-canvas/bash_events /home/openhands/.openhands/automation /projects && chown -R openhands:openhands /home/openhands/.openhands /projects # buildkit
# 2026-11-04 02:49:05 35.22KB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.26.1 AGENT_SERVER_VERSION=1.59.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=934612b3b6cee05d3a4400b98b48a9c69215401d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.35.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.35.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c chmod +x /opt/agent-canvas/entrypoint.sh # buildkit
# 2026-11-04 02:49:05 35.22KB 复制新文件或目录到容器中
COPY docker/entrypoint.sh /opt/agent-canvas/entrypoint.sh # buildkit
# 2026-11-04 02:49:05 460.00B 复制新文件或目录到容器中
COPY /tmp/defaults.env /opt/agent-canvas/defaults.env # buildkit
# 2026-11-04 02:49:05 6.49KB 复制新文件或目录到容器中
COPY tools/ /opt/agent-canvas/tools/ # buildkit
# 2026-11-04 02:49:05 8.60KB 复制新文件或目录到容器中
COPY scripts/runtime-services-info.mjs /opt/agent-canvas/runtime-services-info.mjs # buildkit
# 2026-11-04 02:49:05 6.63MB 复制新文件或目录到容器中
COPY /build/node_modules/@openhands/extensions /opt/agent-canvas/node_modules/@openhands/extensions # buildkit
# 2026-11-04 02:49:05 7.46KB 复制新文件或目录到容器中
COPY /build/node_modules/totalist /opt/agent-canvas/node_modules/totalist # buildkit
# 2026-11-04 02:49:05 33.01KB 复制新文件或目录到容器中
COPY /build/node_modules/mrmime /opt/agent-canvas/node_modules/mrmime # buildkit
# 2026-11-04 02:49:05 4.82KB 复制新文件或目录到容器中
COPY /build/node_modules/@polka /opt/agent-canvas/node_modules/@polka # buildkit
# 2026-11-04 02:49:05 21.88KB 复制新文件或目录到容器中
COPY /build/node_modules/sirv /opt/agent-canvas/node_modules/sirv # buildkit
# 2026-11-04 02:49:05 60.93KB 复制新文件或目录到容器中
COPY /build/node_modules/httpxy /opt/agent-canvas/node_modules/httpxy # buildkit
# 2026-11-04 02:49:05 151.41KB 复制新文件或目录到容器中
COPY /build/node_modules/ws /opt/agent-canvas/node_modules/ws # buildkit
# 2026-11-04 02:49:05 8.97KB 复制新文件或目录到容器中
COPY scripts/tunnel-registry.mjs /opt/agent-canvas/tunnel-registry.mjs # buildkit
# 2026-11-04 02:49:05 10.17KB 复制新文件或目录到容器中
COPY scripts/tunnel-client.mjs /opt/agent-canvas/tunnel-client.mjs # buildkit
# 2026-11-04 02:49:05 3.18KB 复制新文件或目录到容器中
COPY scripts/mars-session.mjs /opt/agent-canvas/mars-session.mjs # buildkit
# 2026-11-04 02:49:05 8.66KB 复制新文件或目录到容器中
COPY scripts/mars-oauth.mjs /opt/agent-canvas/mars-oauth.mjs # buildkit
# 2026-11-04 02:49:05 12.42KB 复制新文件或目录到容器中
COPY scripts/mars-secret-store.mjs /opt/agent-canvas/mars-secret-store.mjs # buildkit
# 2026-11-04 02:49:05 13.18KB 复制新文件或目录到容器中
COPY scripts/mars-credentials.mjs /opt/agent-canvas/mars-credentials.mjs # buildkit
# 2026-11-04 02:49:05 12.47KB 复制新文件或目录到容器中
COPY scripts/mars-api.mjs /opt/agent-canvas/mars-api.mjs # buildkit
# 2026-11-04 02:49:05 15.10KB 复制新文件或目录到容器中
COPY scripts/mars-tunnel-bridge.mjs /opt/agent-canvas/mars-tunnel-bridge.mjs # buildkit
# 2026-11-04 02:49:05 22.57KB 复制新文件或目录到容器中
COPY scripts/mars-web-bridge.mjs /opt/agent-canvas/mars-web-bridge.mjs # buildkit
# 2026-11-04 02:49:05 1.02KB 复制新文件或目录到容器中
COPY scripts/http-body.mjs /opt/agent-canvas/http-body.mjs # buildkit
# 2026-11-04 02:49:05 12.44KB 复制新文件或目录到容器中
COPY scripts/proxy-utils.mjs /opt/agent-canvas/proxy-utils.mjs # buildkit
# 2026-11-04 02:49:05 2.45KB 复制新文件或目录到容器中
COPY scripts/bind-host.mjs /opt/agent-canvas/bind-host.mjs # buildkit
# 2026-11-04 02:49:05 30.33KB 复制新文件或目录到容器中
COPY scripts/static-server.mjs /opt/agent-canvas/static-server.mjs # buildkit
# 2026-11-04 02:49:05 10.16MB 复制新文件或目录到容器中
COPY /build/build /opt/agent-canvas/frontend # buildkit
# 2026-11-04 02:49:05 0.00B 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.26.1 AGENT_SERVER_VERSION=1.59.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=934612b3b6cee05d3a4400b98b48a9c69215401d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.35.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.35.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c if [ -n "${AGENT_SERVER_SDK_GIT_REF}" ]; then BASE_GIT_URL="git+https://github.com/OpenHands/software-agent-sdk@${AGENT_SERVER_SDK_GIT_REF}" && uv pip install --system --force-reinstall "${BASE_GIT_URL}#subdirectory=openhands-sdk" "${BASE_GIT_URL}#subdirectory=openhands-tools" "${BASE_GIT_URL}#subdirectory=openhands-workspace"; fi # buildkit
# 2026-11-04 02:49:04 603.44MB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.26.1 AGENT_SERVER_VERSION=1.59.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=934612b3b6cee05d3a4400b98b48a9c69215401d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.35.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.35.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c uv pip install --system "openhands-automation==${AUTOMATION_VERSION}" "openhands-tools==${AGENT_SERVER_VERSION}" "openhands-agent-server==${AGENT_SERVER_VERSION}" 2>/dev/null || pip install --no-cache-dir "openhands-automation==${AUTOMATION_VERSION}" "openhands-tools==${AGENT_SERVER_VERSION}" "openhands-agent-server==${AGENT_SERVER_VERSION}" # buildkit
# 2026-11-04 02:48:57 35.13MB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.26.1 AGENT_SERVER_VERSION=1.59.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=934612b3b6cee05d3a4400b98b48a9c69215401d OPENHANDS_BUILD_GIT_REF=refs/tags/v1.35.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.35.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c if command -v apt-get >/dev/null 2>&1; then printf '%s\n' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT}/" 'Suites: trixie' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' '' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian-security/${DEBIAN_SNAPSHOT}/" 'Suites: trixie-security' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' > /etc/apt/sources.list.d/debian.sources && apt-get update && apt-get upgrade -y --no-install-recommends && rm -rf /var/lib/apt/lists/*; fi # buildkit
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG DEBIAN_SNAPSHOT=20260930T000000Z
# 2026-11-04 02:48:57 0.00B 指定运行容器时使用的用户
USER root
# 2026-11-04 02:48:57 0.00B 设置环境变量 VITE_POSTHOG_API_KEY
ENV VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK
# 2026-11-04 02:48:57 0.00B 设置环境变量 AGENT_CANVAS_BASE_PATH
ENV AGENT_CANVAS_BASE_PATH=/canvas
# 2026-11-04 02:48:57 0.00B 设置环境变量 AGENT_CANVAS_BUILD_GIT_REF
ENV AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.35.0
# 2026-11-04 02:48:57 0.00B 设置环境变量 AGENT_CANVAS_BUILD_GIT_SHA
ENV AGENT_CANVAS_BUILD_GIT_SHA=934612b3b6cee05d3a4400b98b48a9c69215401d
# 2026-11-04 02:48:57 0.00B 添加元数据标签
LABEL org.opencontainers.image.revision=934612b3b6cee05d3a4400b98b48a9c69215401d
# 2026-11-04 02:48:57 0.00B 添加元数据标签
LABEL org.opencontainers.image.version=1.35.0
# 2026-11-04 02:48:57 0.00B 添加元数据标签
LABEL org.opencontainers.image.source=https://github.com/OpenHands/OpenHands
# 2026-11-04 02:48:57 0.00B 添加元数据标签
LABEL org.opencontainers.image.description=All-in-one agent-canvas: Agent Server + Automation + Frontend
# 2026-11-04 02:48:57 0.00B 添加元数据标签
LABEL org.opencontainers.image.title=agent-canvas
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG AGENT_CANVAS_VERSION=dev
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG VITE_POSTHOG_API_KEY=
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG VITE_BASE_PATH=/canvas
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_REF=unknown
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_SHA=unknown
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG AGENT_SERVER_SDK_GIT_REF=
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG AGENT_SERVER_VERSION
# 2026-11-04 02:48:57 0.00B 定义构建参数
ARG AUTOMATION_VERSION
# 2026-10-28 22:39:11 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/usr/local/bin/openhands-agent-server"]
# 2026-10-28 22:39:11 0.00B 设置环境变量 LD_LIBRARY_PATH
ENV LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu:
# 2026-10-28 22:39:11 0.00B 执行命令并创建新的镜像层
RUN |1 USERNAME=openhands /bin/sh -c chmod +x /usr/local/bin/openhands-agent-server # buildkit
# 2026-10-28 22:39:11 113.69MB 复制新文件或目录到容器中
COPY --chown=openhands:openhands /agent-server/dist/openhands-agent-server /usr/local/bin/openhands-agent-server # buildkit
# 2026-10-28 22:37:32 0.00B 定义构建参数
ARG USERNAME
# 2026-10-28 22:37:32 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-10-28 22:37:32 0.00B 设置环境变量 OH_ACP_SKILL_SOURCING
ENV OH_ACP_SKILL_SOURCING=openhands_managed
# 2026-10-28 22:37:32 0.00B 设置环境变量 LOG_JSON
ENV LOG_JSON=true
# 2026-10-28 22:37:32 0.00B 设置工作目录为/
WORKDIR /
# 2026-10-28 22:37:32 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-10-28 22:37:32 690.89MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,browser,*) apt-get update; apt-get install -y --no-install-recommends "$(if grep -q "ubuntu" /etc/os-release; then echo "chromium-browser"; else echo "chromium"; fi)"; apt-get clean; rm -rf /var/lib/apt/lists/*; ;; esac # buildkit
# 2026-10-28 22:37:12 0.00B 设置环境变量 CHROME_BIN PUPPETEER_EXECUTABLE_PATH CHROMIUM_FLAGS
ENV CHROME_BIN=/usr/bin/chromium PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium CHROMIUM_FLAGS=--no-sandbox --disable-dev-shm-usage --disable-gpu
# 2026-10-28 22:37:12 41.78MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; mkdir -p -m 755 /etc/apt/keyrings; wget -nv -O /etc/apt/keyrings/githubcli-archive-keyring.gpg https://cli.github.com/packages/githubcli-archive-keyring.gpg; chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list; apt-get update; apt-get install -y gh; apt-get clean; rm -rf /var/lib/apt/lists/* # buildkit
# 2026-10-28 22:37:09 414.45MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,docker,*) ;; *) echo "INSTALL_CAPABILITIES excludes docker; skipping Docker Engine"; exit 0;; esac; if grep -q "ubuntu" /etc/os-release; then install -m 0755 -d /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc; chmod a+r /etc/apt/keyrings/docker.asc; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null; else install -m 0755 -d /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc; chmod a+r /etc/apt/keyrings/docker.asc; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null; fi; apt-get update; apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; apt-get clean; rm -rf /var/lib/apt/lists/*; mkdir -p /etc/docker; echo '{"mtu": 1450}' > /etc/docker/daemon.json # buildkit
# 2026-10-28 22:36:58 1.15KB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,vscode,*) ;; *) exit 0;; esac; mkdir -p ${OPENVSCODE_SERVER_ROOT}/extensions; cp -r /tmp/vscode_extensions/. ${OPENVSCODE_SERVER_ROOT}/extensions/; chown -R ${USERNAME}:${USERNAME} ${OPENVSCODE_SERVER_ROOT}/extensions # buildkit
# 2026-10-28 22:36:57 245.27MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,vscode,*) ;; *) echo "INSTALL_CAPABILITIES excludes vscode; skipping OpenVSCode Server"; exit 0;; esac; mkdir -p $(dirname ${OPENVSCODE_SERVER_ROOT}); arch=$(uname -m); if [ "${arch}" = "x86_64" ]; then arch="x64"; elif [ "${arch}" = "aarch64" ]; then arch="arm64"; elif [ "${arch}" = "armv7l" ]; then arch="armhf"; fi; wget https://github.com/${RELEASE_ORG}/openvscode-server/releases/download/${RELEASE_TAG}/${RELEASE_TAG}-linux-${arch}.tar.gz; tar -xzf ${RELEASE_TAG}-linux-${arch}.tar.gz; if [ -d "${OPENVSCODE_SERVER_ROOT}" ]; then rm -rf "${OPENVSCODE_SERVER_ROOT}"; fi; mv ${RELEASE_TAG}-linux-${arch} ${OPENVSCODE_SERVER_ROOT}; cp ${OPENVSCODE_SERVER_ROOT}/bin/remote-cli/openvscode-server ${OPENVSCODE_SERVER_ROOT}/bin/remote-cli/code; rm -f ${RELEASE_TAG}-linux-${arch}.tar.gz; case "${arch}" in x64) NARCH=x64; NODE_SHA256=1805bcd35e6815559bd2eb97db438d3fdb0eb3a5e6a977b7c1badca76337e9ce;; arm64) NARCH=arm64; NODE_SHA256=6287aa46b6c375d816e63ae66d024fbbfd70404825aabdfdf898a970871d2f4b;; armhf) NARCH=armv7l; NODE_SHA256=c9057c6a3b8fbb9651ed115c1e96d4a7281b7b9c9ca89fa05865c98ed7ffd437;; *) echo "Unsupported architecture for OpenVSCode Node: '${arch}'" >&2; exit 1;; esac; NODE_TARBALL="/tmp/node-v22.23.4-linux-${NARCH}.tar.xz"; wget -nv -O "$NODE_TARBALL" "https://nodejs.org/dist/v22.23.4/node-v22.23.4-linux-${NARCH}.tar.xz"; echo "$NODE_SHA256 $NODE_TARBALL" | sha256sum -c -; tar -xJf "$NODE_TARBALL" -O "node-v22.23.4-linux-${NARCH}/bin/node" > ${OPENVSCODE_SERVER_ROOT}/node; chmod 755 ${OPENVSCODE_SERVER_ROOT}/node; rm -f "$NODE_TARBALL"; ${OPENVSCODE_SERVER_ROOT}/node --version; chown -R ${USERNAME}:${USERNAME} ${OPENVSCODE_SERVER_ROOT} # buildkit
# 2026-10-28 22:36:52 0.00B 定义构建参数
ARG RELEASE_ORG=gitpod-io
# 2026-10-28 22:36:52 0.00B 定义构建参数
ARG RELEASE_TAG=openvscode-server-v1.109.5
# 2026-10-28 22:36:52 0.00B 设置环境变量 EDITOR VISUAL GIT_EDITOR OPENVSCODE_SERVER_ROOT
ENV EDITOR=code VISUAL=code GIT_EDITOR=code --wait OPENVSCODE_SERVER_ROOT=/openhands/.openvscode-server
# 2026-10-28 22:36:52 0.00B 执行命令并创建新的镜像层
RUN |2 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker /bin/sh -c set -eux; for capability in $(echo "$INSTALL_CAPABILITIES" | tr ',' ' '); do case "$capability" in vscode|browser|docker) ;; *) echo "Unknown capability '$capability' in INSTALL_CAPABILITIES" "(expected one of: vscode, browser, docker)" >&2; exit 1;; esac; done # buildkit
# 2026-10-28 22:36:52 42.47MB 复制新文件或目录到容器中
COPY /uv /uvx /bin/ # buildkit
# 2026-10-28 22:36:52 270.81MB 执行命令并创建新的镜像层
RUN |2 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker /bin/sh -c set -eux; if command -v apt-get >/dev/null 2>&1; then apt-get -o Acquire::Retries=5 update; apt-get -o Acquire::Retries=5 install -y --no-install-recommends apt-transport-https apt-utils build-essential coreutils curl findutils gnupg grep jq lsb-release procps sed sudo tar util-linux wget xz-utils; rm -rf /var/lib/apt/lists/*; elif command -v apk >/dev/null 2>&1; then apk add --no-cache build-base coreutils curl findutils gnupg grep jq procps sudo tar util-linux wget xz; elif command -v microdnf >/dev/null 2>&1; then microdnf install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; microdnf clean all; elif command -v dnf >/dev/null 2>&1; then dnf install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; dnf clean all; elif command -v yum >/dev/null 2>&1; then yum install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; yum clean all; elif command -v zypper >/dev/null 2>&1; then zypper --non-interactive install --no-recommends coreutils curl findutils gcc gcc-c++ gpg2 grep jq make procps sed sudo tar util-linux wget xz; zypper clean --all; fi; usermod -aG sudo "${USERNAME}" 2>/dev/null || true; echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # buildkit
# 2026-10-28 22:36:41 0.00B 指定运行容器时使用的用户
USER root
# 2026-10-28 22:36:41 0.00B 定义构建参数
ARG INSTALL_CAPABILITIES
# 2026-10-28 22:36:41 0.00B 定义构建参数
ARG USERNAME
# 2026-10-28 22:36:41 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-10-28 22:36:41 0.00B 设置环境变量 OH_ACP_SKILL_SOURCING
ENV OH_ACP_SKILL_SOURCING=openhands_managed
# 2026-10-28 22:36:41 0.00B 设置环境变量 LOG_JSON
ENV LOG_JSON=true
# 2026-10-28 22:36:41 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-10-28 22:36:41 0.00B 设置环境变量 LC_ALL
ENV LC_ALL=C.UTF-8
# 2026-10-28 22:36:41 0.00B 设置工作目录为/
WORKDIR /
# 2026-10-28 22:36:41 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-10-28 22:36:41 49.00B 执行命令并创建新的镜像层
RUN |7 USERNAME=openhands UID=10001 GID=10001 PORT=8000 ENABLE_VSCODE=true OPENHANDS_BUILD_GIT_SHA=ccae18cb897bef7960f210aa3f380b577a84be7c OPENHANDS_BUILD_GIT_REF=refs/tags/v1.59.0 /bin/sh -c mkdir -p /etc/claude-code && echo '{"permissions":{"allow":["Edit","Read","Bash"]}}' > /etc/claude-code/managed-settings.json # buildkit
# 2026-10-28 22:36:41 0.00B 执行命令并创建新的镜像层
RUN |7 USERNAME=openhands UID=10001 GID=10001 PORT=8000 ENABLE_VSCODE=true OPENHANDS_BUILD_GIT_SHA=ccae18cb897bef7960f210aa3f380b577a84be7c OPENHANDS_BUILD_GIT_REF=refs/tags/v1.59.0 /bin/sh -c if ! "$ACP_NODE_DIR/bin/node" --version >/dev/null 2>&1; then echo "Warning: ACP Node 24 runtime is not compatible with this base image (likely older glibc or musl libc); ACP agents will not be available" >&2; if [ -f "$ACP_NODE_DIR/acp-wrappers.txt" ]; then while read -r bin; do rm -f "/usr/local/bin/$bin"; done < "$ACP_NODE_DIR/acp-wrappers.txt"; fi; rm -rf "$ACP_NODE_DIR"/*; fi # buildkit
# 2026-10-28 22:36:41 223.00B 复制新文件或目录到容器中
COPY /opt/acp-wrappers/. /usr/local/bin/ # buildkit
# 2026-10-28 22:36:41 1.15GB 复制新文件或目录到容器中
COPY /acp-node /acp-node # buildkit
# 2026-10-28 22:36:32 0.00B 设置环境变量 ACP_NODE_DIR
ENV ACP_NODE_DIR=/acp-node
# 2026-10-28 22:36:32 101.27MB 执行命令并创建新的镜像层
RUN |7 USERNAME=openhands UID=10001 GID=10001 PORT=8000 ENABLE_VSCODE=true OPENHANDS_BUILD_GIT_SHA=ccae18cb897bef7960f210aa3f380b577a84be7c OPENHANDS_BUILD_GIT_REF=refs/tags/v1.59.0 /bin/sh -c set -eux; if command -v apt-get >/dev/null 2>&1; then apt-get -o Acquire::Retries=5 update; apt-get -o Acquire::Retries=5 install -y --no-install-recommends bash ca-certificates git tini tmux; rm -rf /var/lib/apt/lists/*; elif command -v apk >/dev/null 2>&1; then apk add --no-cache bash ca-certificates git shadow tini tmux; elif command -v microdnf >/dev/null 2>&1; then microdnf install -y bash ca-certificates curl git shadow-utils tmux; microdnf clean all; elif command -v dnf >/dev/null 2>&1; then dnf install -y bash ca-certificates curl git shadow-utils tmux; dnf clean all; elif command -v yum >/dev/null 2>&1; then yum install -y bash ca-certificates curl git shadow-utils tmux; yum clean all; elif command -v zypper >/dev/null 2>&1; then zypper --non-interactive install --no-recommends bash ca-certificates curl git shadow tmux; zypper clean --all; else echo "Unsupported base image: no known package manager found" >&2; exit 1; fi; if ! command -v tini >/dev/null 2>&1; then ARCH=$(uname -m); case "$ARCH" in x86_64|amd64) TARCH=amd64; TINI_SHA256=c5b0666b4cb676901f90dfcb37106783c5fe2077b04590973b885950611b30ee;; aarch64|arm64) TARCH=arm64; TINI_SHA256=eae1d3aa50c48fb23b8cbdf4e369d0910dfc538566bfd09df89a774aa84a48b9;; *) echo "Unsupported architecture for tini: '$ARCH'" >&2; exit 1;; esac; curl -fsSL --retry 5 --retry-delay 2 --retry-connrefused "https://github.com/krallin/tini/releases/download/v0.19.0/tini-static-${TARCH}" -o /usr/local/bin/tini; echo "$TINI_SHA256 /usr/local/bin/tini" | sha256sum -c -; chmod 755 /usr/local/bin/tini; fi; tini --version; grep -Eq "^[^:]*:[^:]*:${GID}:" /etc/group || groupadd -g "${GID}" "${USERNAME}"; grep -Eq "^${USERNAME}:" /etc/passwd || useradd -m -u "${UID}" -g "${GID}" -s /bin/bash "${USERNAME}"; mkdir -p /workspace/project; chown -R "${USERNAME}:${USERNAME}" /workspace # buildkit
# 2026-10-28 22:36:26 0.00B 设置环境变量 OPENHANDS_BUILD_GIT_REF
ENV OPENHANDS_BUILD_GIT_REF=refs/tags/v1.59.0
# 2026-10-28 22:36:26 0.00B 设置环境变量 OPENHANDS_BUILD_GIT_SHA
ENV OPENHANDS_BUILD_GIT_SHA=ccae18cb897bef7960f210aa3f380b577a84be7c
# 2026-10-28 22:36:26 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_REF=unknown
# 2026-10-28 22:36:26 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_SHA=unknown
# 2026-10-28 22:36:26 0.00B 设置环境变量 OH_ENABLE_VSCODE
ENV OH_ENABLE_VSCODE=true
# 2026-10-28 22:36:26 0.00B 定义构建参数
ARG USERNAME UID GID PORT ENABLE_VSCODE
# 2026-10-28 22:36:26 14.78MB 执行命令并创建新的镜像层
RUN |2 NPM_VERSION=11.21.0 DEBIAN_SNAPSHOT=20261021T000000Z /bin/sh -c set -eux; python3 -m pip install --no-deps --no-index --no-cache-dir --force-reinstall --disable-pip-version-check --root-user-action=ignore /tmp/pip-dist/pip-*-py3-none-any.whl # buildkit
# 2026-10-28 22:36:22 4.71MB 执行命令并创建新的镜像层
RUN |2 NPM_VERSION=11.21.0 DEBIAN_SNAPSHOT=20261021T000000Z /bin/sh -c set -eux; ln -sfn ../lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm; ln -sfn ../lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx; ln -sfn ../lib/node_modules/corepack/dist/corepack.js /usr/local/bin/corepack; printf '%s\n' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT}/" 'Suites: trixie' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' '' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian-security/${DEBIAN_SNAPSHOT}/" 'Suites: trixie-security' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' > /etc/apt/sources.list.d/debian.sources; apt-get update; apt-get upgrade -y; apt-get install -y --no-install-recommends ca-certificates libbz2-1.0 libdb5.3t64 libffi8 libgcc-s1 libgdbm6t64 liblzma5 libncursesw6 libreadline8t64 libsqlite3-0 libssl3t64 libstdc++6 libtinfo6 libuuid1 libzstd1 netbase tzdata zlib1g; rm -rf /var/lib/apt/lists/*; python3 --version; node --version; npm --version # buildkit
# 2026-10-28 22:36:11 46.13MB 执行命令并创建新的镜像层
RUN |2 NPM_VERSION=11.21.0 DEBIAN_SNAPSHOT=20261021T000000Z /bin/sh -c node /usr/local/lib/node_modules/npm/bin/npm-cli.js install --global "npm@${NPM_VERSION}" # buildkit
# 2026-10-28 22:35:48 12.81MB 复制新文件或目录到容器中
COPY /usr/local/lib/node_modules /usr/local/lib/node_modules # buildkit
# 2026-10-28 22:35:47 126.88MB 复制新文件或目录到容器中
COPY /usr/local/bin/node /usr/local/bin/node # buildkit
# 2026-10-28 22:35:37 32.36MB 复制新文件或目录到容器中
COPY /usr/local /usr/local # buildkit
# 2026-10-28 22:35:37 0.00B 定义构建参数
ARG DEBIAN_SNAPSHOT=20261021T000000Z
# 2026-10-28 22:35:37 0.00B 定义构建参数
ARG NPM_VERSION
# 2026-10-27 08:00:00 78.86MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1793059200'
镜像信息
{
"Id": "sha256:e4b0c0020539961161a6bd49a39fa45acf6fa38a814689c71466eb0286fd1156",
"RepoTags": [
"ghcr.io/openhands/agent-canvas:1.35.0",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openhands/agent-canvas:1.35.0"
],
"RepoDigests": [
"ghcr.io/openhands/agent-canvas@sha256:955b06d6fc577876daa2dccce93c18957a828c6c010e0e9b15e7abf227a6b99a",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openhands/agent-canvas@sha256:2b12a3c13331e7c941d6387abcefceb1e94590b7038a3634aa49f71fd36a469b"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-11-03T18:49:05.729688797Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "openhands",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"OH_ENABLE_VSCODE=true",
"OPENHANDS_BUILD_GIT_SHA=ccae18cb897bef7960f210aa3f380b577a84be7c",
"OPENHANDS_BUILD_GIT_REF=refs/tags/v1.59.0",
"ACP_NODE_DIR=/acp-node",
"LC_ALL=C.UTF-8",
"LANG=C.UTF-8",
"LOG_JSON=true",
"OH_ACP_SKILL_SOURCING=openhands_managed",
"EDITOR=code",
"VISUAL=code",
"GIT_EDITOR=code --wait",
"OPENVSCODE_SERVER_ROOT=/openhands/.openvscode-server",
"CHROME_BIN=/usr/bin/chromium",
"PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium",
"CHROMIUM_FLAGS=--no-sandbox --disable-dev-shm-usage --disable-gpu",
"LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu:",
"AGENT_CANVAS_BUILD_GIT_SHA=934612b3b6cee05d3a4400b98b48a9c69215401d",
"AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.35.0",
"AGENT_CANVAS_BASE_PATH=/canvas",
"VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK"
],
"Cmd": null,
"Image": "",
"Volumes": {
"/home/openhands/.openhands": {},
"/projects": {}
},
"WorkingDir": "/",
"Entrypoint": [
"tini",
"--",
"/opt/agent-canvas/entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.description": "All-in-one agent-canvas: Agent Server + Automation + Frontend",
"org.opencontainers.image.revision": "934612b3b6cee05d3a4400b98b48a9c69215401d",
"org.opencontainers.image.source": "https://github.com/OpenHands/OpenHands",
"org.opencontainers.image.title": "agent-canvas",
"org.opencontainers.image.version": "1.35.0"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 4038256594,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/4922d0937b05e77531f8e66ace96edf786a777bc49f85136dec92dd0a8459d2d/diff:/var/lib/docker/overlay2/66725417a78fd5c66ac6e84059cd08acaa01f0696b6c8c537c60c0769edae69f/diff:/var/lib/docker/overlay2/9676fdaa411608b359037c4af54ef20ff0c4395136298a41e9af4688d79536c8/diff:/var/lib/docker/overlay2/8258716f3fad9b7729f0eb591e7aec597e187eac744e708210b80258b1af8f75/diff:/var/lib/docker/overlay2/c8c2859601d1d9ebf5f3cc6c85f4fdc55dde57ece057b660ab05c98cf8c52867/diff:/var/lib/docker/overlay2/670d22422970db3b9b6f12a0d149f2f839e6653ed1363a07987178de11c5022d/diff:/var/lib/docker/overlay2/877cdd6a103e014172bd8a67e895c83e05696e24a94bcd0c59f2393abe85c5a4/diff:/var/lib/docker/overlay2/b7714fc59d88e31b06c36dd580ced77edf7a3135a62b4a34e19f35297b4a2bb9/diff:/var/lib/docker/overlay2/e2c19dead19d49108370d8fec938a297e988f85531f4a1a1f89ba09e2848072b/diff:/var/lib/docker/overlay2/f49bc7583524364e77eb00cc4788299ded0ef64c1b2ae4166267645df91b1eda/diff:/var/lib/docker/overlay2/15033dcfa5483ebe6477a9ffcd63cd5334ba6162a97c795a45c3d29db586b01c/diff:/var/lib/docker/overlay2/fb04127136ef2026e85c1af23c4cb80cbad4585e4501488bcde1b6d8248902df/diff:/var/lib/docker/overlay2/308575ec180babc09d35e4707b2de340196d3dcd6548bbd26defae706114cde7/diff:/var/lib/docker/overlay2/b42f164e944d7ec3a51713b6a73fb46c03efc2d24b8d2fe187d525bf075abebe/diff:/var/lib/docker/overlay2/190dd138a742ae677b419569cb7506bdab47c2f80a644d383cfdbb4fb6663108/diff:/var/lib/docker/overlay2/907282c4c6ff9a69ca773427b6bf9bec8a2057c3aa7944e653403cdeccd8d01c/diff:/var/lib/docker/overlay2/e9aaad10937ff89b23784562072ea2f7398f408f4bb09ae6c73ccee4a2c07695/diff:/var/lib/docker/overlay2/0a698ead9597da8bc40c48c7f4c8747f75706ba7182f400c706cc2931a980905/diff:/var/lib/docker/overlay2/4d6e5fad7a26c962e7310f413a32708b4fb10fd4820408d232972cd766d9cb1a/diff:/var/lib/docker/overlay2/9ba99557c16e369f93a82b71b0cf28bdc16fc1a0426c95051ce516edb5479b57/diff:/var/lib/docker/overlay2/9275958941b8354dbc7392e3cf07a0a2c293d30d9e4319437a4e714ee06a1691/diff:/var/lib/docker/overlay2/3cbb8b310138400e3ae5ae9345136349fe6dcb7837a185b2aa794482e585ab0f/diff:/var/lib/docker/overlay2/2632a2009227e76f843a8f324981d605748e941423a1d971121fe4cf0db48338/diff:/var/lib/docker/overlay2/bb0c58133f0efcc07f21f50b17ae1750f6c63a72be621e5f194c12ce04e78e03/diff:/var/lib/docker/overlay2/f9d71546e1e9e4c612a7237d8889d596e55753bc721dd0a6658f3f5692d321a8/diff:/var/lib/docker/overlay2/2f4263e62d861d042405089ee2894e9d850376f4897d8d894676fe9730bac286/diff:/var/lib/docker/overlay2/3f6557e59af9776174a4ac1e59f864564656b261b5dbd6c2dfdd84f8f513a13c/diff:/var/lib/docker/overlay2/c48828f9622e4a41c08a589bdb3a14de2bed70654a5cba08aba9175e1cffb4b0/diff:/var/lib/docker/overlay2/1310e3dfc0b0562e8028e0fd956112bb38bb97e9762e5daa4923fa7723440c3f/diff:/var/lib/docker/overlay2/10ba191439ec06d85babf7dbc410177d56bf09827a01969319fff1aaaecfa34b/diff:/var/lib/docker/overlay2/f2b9a66959fa171663987e7925b0b0779e0fb9686e45b319e5389dfe9e4505d4/diff:/var/lib/docker/overlay2/14d7430bd29737dc04a9e0c3aa133ae6fb9ca9c64bea6e0ce3183a08a8959ef1/diff:/var/lib/docker/overlay2/e51f9ee06e991af131a3aa5e6f1342d5f07b82d4bb035efeeadd6b8d5a565cae/diff:/var/lib/docker/overlay2/6f95447916a37a94056e5a2708dd4b6de7939ec14865d7a800ea73bd1e75e50a/diff:/var/lib/docker/overlay2/09701cfa9809c32b35e1e68e5f606a1c18268f18d97f2f76d152150dd3b2c227/diff:/var/lib/docker/overlay2/d76dad2c6c9894334868655fde1148683aa5f1fdbe906bf717175196e2fb11f9/diff:/var/lib/docker/overlay2/2e728549ebb030ac15c5842350576c8a703aa407da306486279599bc51ae45f5/diff:/var/lib/docker/overlay2/773bd307bf806484d9917a8eda24791efbf51c1440620202986094678f350a1f/diff:/var/lib/docker/overlay2/51f2bfe7f5838c712b800d34d676aa36990b272d8fecd9815752de3b9509af91/diff:/var/lib/docker/overlay2/a5ebd00e3805b908310f132fa13675e9f7bd105c05760526e3236b529b5847b5/diff:/var/lib/docker/overlay2/814b24cd1377586b74d07190ae9cc8993041e0fabb03c5aef55f5fde4456e0c8/diff:/var/lib/docker/overlay2/3ddd5dd4e22d9d93d964688d12921d1252cd0aa34e6099d5d2e7a6d28e2d131e/diff:/var/lib/docker/overlay2/694f0d2c9ddf0fb50fc4f30d5b749fd67cfbe814d94ab27f5267f3134685a85e/diff:/var/lib/docker/overlay2/9333d416fc6e4f6ed7f68ff8c0b59c3e9df880ee78755c55dd5479ea1860eac2/diff:/var/lib/docker/overlay2/13d8335f3c9fa1f4e0c9844c7487db5c1fb1d3f0706ec113af7cac9f53f55074/diff:/var/lib/docker/overlay2/b66aff383ab4ff9307fc529142717519a5574bcb8a4ca9bcf27e5789ed64250f/diff:/var/lib/docker/overlay2/edfe378f92a05b357ff9859b0e348ff2dfb06ddc4067fddf6506e87f42b4577b/diff:/var/lib/docker/overlay2/b40fc2540320fd2eaa135f49704c8755e9be3452a5fb4473ee27f69708afea0c/diff:/var/lib/docker/overlay2/90daefdf835bd659ff2f2a44c51fbe6b58689e3450f3d41f8dd240070ae01342/diff:/var/lib/docker/overlay2/3e7299369d750ad8e4ead98513c8a8a14726ed006532d7f3b2654f3939dca44a/diff:/var/lib/docker/overlay2/f1c98fb0dc950f801e3178b84c4e45f82f0470d82cb7b6110f980bbaae3d2f20/diff",
"MergedDir": "/var/lib/docker/overlay2/c37a824e39f713b5abe65f4a35bc4de3e591ea513a1b25ce8bed2190eaf618e5/merged",
"UpperDir": "/var/lib/docker/overlay2/c37a824e39f713b5abe65f4a35bc4de3e591ea513a1b25ce8bed2190eaf618e5/diff",
"WorkDir": "/var/lib/docker/overlay2/c37a824e39f713b5abe65f4a35bc4de3e591ea513a1b25ce8bed2190eaf618e5/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:a5d6d345f6afa08d7c31272055746d60a838b290bfcc82c0a23e8e984d61a933",
"sha256:fab7e2c39160ef0f6b12636e0c697a6eebfd4a2f470064f482fdd917b9311c5b",
"sha256:119f8c2e9eb5c13b26900be9f9c114e7c4c70ee9d9e5308c8971d5f162997dc4",
"sha256:3f49a083653fe1333d7da9b54d27f3d446e51822f32ef49e523956eba9b79be1",
"sha256:8f69399a7a56066f02958b5e3466d4cfe80e7e158bf509cee284e8079d18c7d4",
"sha256:d8daedb7407b52fab336b2196d47ea3aca86df4242acd392f1b84fc0f906f339",
"sha256:3df695d814b1ac9497ecc0462bb537e7802f7c0bac469264fcbef31931adeb72",
"sha256:59ef46786a73e5210b7e777de4b320109dea2d9ac2fcc4d93708f7c6536017fe",
"sha256:cbdfac187f28aeff95670bbd1a540994cbfae1bb05aac0f4845995d3b5863f51",
"sha256:5965f015b463e6e37207ec32613530f70855ab67157d009c95a4f29a4750b4a6",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:b647772d98923fe13fefd3a28eb7965e72a0f68cc283071ee7130bd6613b50d1",
"sha256:7c6695a749190c56b969d2c6bd0667ac03ce9f3d3fce4a4aba7545e0fbd8a41d",
"sha256:3148203b5588f2d9b3cafc6b32a91f7e6dd89d8bbc1f39a1f775ae91a98ea30d",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:c35e7d4a1024c25fbfd1b1c011ad196de6e92d822996f2ca1e6611aa23dc0f75",
"sha256:7ff584dbfa9d3b7c4db87435dfd711c5db4ba926309cb40c6778f4e86e61eb51",
"sha256:05a2a5d8685eca73e9a9219e19ddc92d5ded75e1fedbcd036db17df6cff9812b",
"sha256:02d074dc5f92f89baf75c6ae3cb88ef0bd8424810c4cd2d98430cd79068b2cfa",
"sha256:cbb02267af2ea2435bd699592de26ba997c974755cef69245d3dfe10da0ac6b9",
"sha256:4666201ad08f234c9391f6c099bfff1dee34852b7574644ba3c558877f188778",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:26f473c0187e4a942e6abb242c2414dcfe41ca23d955dafa94db2eb121abed08",
"sha256:2d40d2f1024918d6bedb4bac1029d25b2a8ffee2a89c2352983302c300ec0de1",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:f5f1a9266855c4e82d4727f771d856680bfd547eec7a63ff090bd5af6ff783cc",
"sha256:8c5a56328d7b1464330f88f02b9eb7e4f6e8952e7fd2e836e8b1e3b36da8edbf",
"sha256:d8481758e7f79bb70b5129919653cb243fe11fd0c4e169272bcbd1e65b0652ae",
"sha256:edcfdb3f5bf101340d38c4b4e64b958a45dc4d81e575416404e48d57836dabea",
"sha256:cca92761cf481e88437ac5d1a3c6941d7d895ddec5430613e63343cfc5af220c",
"sha256:a8baa22e73818577a2b6ffde8fff084d92614ac91039d8e006c0b4666b7f5e38",
"sha256:cfe67bf9be025102e7591bd67d8bf26f5fff72bb1761bdb668ad0e52927c9b24",
"sha256:a562e1f5f2ea65f201d15ce91afe394612d944d9b89c604991c79be101550fd5",
"sha256:d7761be63c73506e5a9077a06cec4a9c4269c4b774fd951c3a33d42c19a00303",
"sha256:49dd755e87edf95c6de2a6ccfa95d03e6a0c9d0ffcc606af774bba75e8b1a55c",
"sha256:ba61167e02dcc06121c7639cebde346e11d97ab3b850227f27eb247059cf43d9",
"sha256:f27f521869a805d574f6794992e35f8d7d28bd778f6facaa7e6201abb5c18caa",
"sha256:82ff145a89265578e2ddb2929ffe1bb68751304359663ac041031a8c9c089b4f",
"sha256:41485cafe85aef76c7aceb1268fad68b29f4b9350b13a581f9b603db1110b631",
"sha256:eeac70e73546247c91a84c70e9bd9bb8bee7570cf0b17b504b601ae017b3824e",
"sha256:8d37e4b24d85f3e620456e18538b3a34b243453b5ae27cc4e955b867baaa29c9",
"sha256:8965e0e6f4f54abcd8cc875ea90be46757e8507884be64abcb6dee3f9b8a6154",
"sha256:5f811610995c557cae8e5a76a0ab0a2ea00d26d22f84efc02e5ecc995e5b5946",
"sha256:abd01e7a5d6d02b0b69c09d32f91674750ac31d205c0172e198e5cfd50d8998b",
"sha256:270af3fc3980b3065d1720b6a0aa79bba3fbfb8cf33f1ffcbe6344ffbc2840ee",
"sha256:9956b172d0f88d2ec31cf0a64a8638b4ce17c5fa1690bbfd0f4f9b00fa5b0695",
"sha256:1659a453474f505176f30caf4ce4f0e230fc24de2cde1fc8927c0490287b2a9f",
"sha256:a4f3931a7fde41b10093e450bb04771e6551776e2383c7ee7c67db037adf149d",
"sha256:de54fdb245735fb78b3806afd260d1d578b0e2c3833194465f939c4a01178114",
"sha256:0f3315f0c7298428e49b60dbea72649cbac6afd683e5032b19a5491aae14c2ca",
"sha256:0632179f86fcaab9c232387482d0dd84a12c4233b46c6c0bdcf043364b07527c",
"sha256:8011202d1baeadd4fb387587f460f6fd8dcff98189d99e481d7cdf60d6cc0cc4"
]
},
"Metadata": {
"LastTagTime": "2026-11-05T09:32:57.82241249+08:00"
}
}