openhands-app-custom (latest)
Published 2026-07-12 01:15:49 +00:00 by khanhdinh
Installation
docker pull git.khanhdinh.de/khanhdinh/openhands-app-custom:latestsha256:f8033d9dda39228261a4cc493766cf007483d7e0f04399ff422527be3136a0d5About this package
All-in-one agent-canvas: Agent Server + Automation + Frontend
Image Layers
| # debian.sh --arch 'arm64' out/ 'trixie' '@1781049600' |
| ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit |
| ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305 |
| ENV PYTHON_VERSION=3.13.14 |
| ENV PYTHON_SHA256=639e43243c620a308f968213df9e00f2f8f62332f7adbaa7a7eeb9783057c690 |
| RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit |
| RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit |
| CMD ["python3"] |
| LABEL org.opencontainers.image.authors=Nikolai R Kristiansen <nikolaik@gmail.com> |
| SHELL [/bin/bash -euo pipefail -c] |
| RUN /bin/bash -euo pipefail -c groupadd --gid 1000 pn && useradd --uid 1000 --gid pn --shell /bin/bash --create-home pn # buildkit |
| ENV POETRY_HOME=/usr/local |
| RUN /bin/bash -euo pipefail -c apt-get update && apt-get install --no-install-recommends -yqq libatomic1 curl gnupg2 xz-utils && apt-get upgrade -yqq && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/bash -euo pipefail -c NODE_VERSION="v22.23.1" ARCH= && dpkgArch="$(dpkg --print-architecture)" && case "${dpkgArch##*-}" in amd64) ARCH='x64';; arm64) ARCH='arm64';; *) echo "unsupported architecture"; exit 1 ;; esac && for key in $(curl -sL https://raw.githubusercontent.com/nodejs/docker-node/HEAD/keys/node.keys); do gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; done && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/node-$NODE_VERSION-linux-$ARCH.tar.xz" && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/SHASUMS256.txt.asc" && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc && grep " node-$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c - && tar -xJf "node-$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner && rm "node-$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt && ln -s /usr/local/bin/node /usr/local/bin/nodejs # buildkit |
| RUN /bin/bash -euo pipefail -c npm install -g corepack && corepack enable yarn # buildkit |
| RUN /bin/bash -euo pipefail -c pip install --no-cache-dir -U pip pipenv uv && curl -fsSL --compressed https://install.python-poetry.org | python - # buildkit |
| ARG USERNAME UID GID PORT |
| ARG OPENHANDS_BUILD_GIT_SHA=unknown |
| ARG OPENHANDS_BUILD_GIT_REF=unknown |
| ENV OPENHANDS_BUILD_GIT_SHA=7ef44d10b2132125833ce2269559b3960f402805 |
| ENV OPENHANDS_BUILD_GIT_REF=refs/tags/v1.33.0 |
| RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=7ef44d10b2132125833ce2269559b3960f402805 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.33.0 /bin/bash -euo pipefail -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 curl wget sudo apt-utils git jq tmux tar build-essential coreutils util-linux procps findutils grep sed tini apt-transport-https gnupg lsb-release xz-utils; rm -rf /var/lib/apt/lists/*; elif command -v apk >/dev/null 2>&1; then apk add --no-cache bash ca-certificates curl wget sudo git jq tmux tar build-base coreutils util-linux procps findutils grep sed tini gnupg shadow xz; elif command -v microdnf >/dev/null 2>&1; then microdnf install -y bash ca-certificates curl wget sudo git jq tmux tar make gcc gcc-c++ coreutils util-linux procps-ng findutils grep sed shadow-utils gnupg2 xz; microdnf clean all; elif command -v dnf >/dev/null 2>&1; then dnf install -y bash ca-certificates curl wget sudo git jq tmux tar make gcc gcc-c++ coreutils util-linux procps-ng findutils grep sed shadow-utils gnupg2 xz; dnf clean all; elif command -v yum >/dev/null 2>&1; then yum install -y bash ca-certificates curl wget sudo git jq tmux tar make gcc gcc-c++ coreutils util-linux procps-ng findutils grep sed shadow-utils gnupg2 xz; yum clean all; elif command -v zypper >/dev/null 2>&1; then zypper --non-interactive install --no-recommends bash ca-certificates curl wget sudo git jq tmux tar make gcc gcc-c++ coreutils util-linux procps findutils grep sed shadow gpg2 xz; zypper clean --all; else echo "Unsupported base image: no known package manager found" >&2; exit 1; fi; grep -Eq "^[^:]*:[^:]*:${GID}:" /etc/group || groupadd -g "${GID}" "${USERNAME}"; grep -Eq "^${USERNAME}:" /etc/passwd || useradd -m -u "${UID}" -g "${GID}" -s /bin/bash "${USERNAME}"; usermod -aG sudo "${USERNAME}" 2>/dev/null || true; echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; mkdir -p /workspace/project; chown -R "${USERNAME}:${USERNAME}" /workspace # buildkit |
| ENV ACP_NODE_DIR=/opt/acp-node |
| RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=7ef44d10b2132125833ce2269559b3960f402805 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.33.0 /bin/bash -euo pipefail -c set -ux; mkdir -p "$ACP_NODE_DIR"; ARCH=$(uname -m); NARCH=""; NODE_SHA256=""; case "$ARCH" in x86_64|amd64) NARCH=x64; NODE_SHA256=69b09dba5c8dcb05c4e4273a4340db1005abeafe3927efda2bc5b249e80437ec;; aarch64|arm64) NARCH=arm64; NODE_SHA256=08bfbf538bad0e8cbb0269f0173cca28d705874a67a22f60b57d99dc99e30050;; esac; NODE_TARBALL=""; if [ -z "$NARCH" ]; then echo "Skipping ACP Node install: unsupported architecture '$ARCH'" >&2; else NODE_TARBALL="/tmp/node-v22.14.0-linux-${NARCH}.tar.xz"; if curl -fsSL --retry 5 --retry-delay 2 --retry-connrefused "https://nodejs.org/dist/v22.14.0/node-v22.14.0-linux-${NARCH}.tar.xz" -o "$NODE_TARBALL" && echo "$NODE_SHA256 $NODE_TARBALL" | sha256sum -c - && tar -xJ --strip-components=1 -C "$ACP_NODE_DIR" -f "$NODE_TARBALL" && "$ACP_NODE_DIR/bin/node" --version; then PATH="$ACP_NODE_DIR/bin:$PATH"; if "$ACP_NODE_DIR/bin/npm" install -g @agentclientprotocol/claude-agent-acp@0.44.0 @zed-industries/codex-acp@0.16.0 @google/gemini-cli@0.46.0; then for bin in claude-agent-acp codex-acp gemini; do if [ -e "$ACP_NODE_DIR/bin/$bin" ]; then printf '#!/bin/sh\nPATH="%s/bin:$PATH" exec "%s/bin/%s" "$@"\n' "$ACP_NODE_DIR" "$ACP_NODE_DIR" "$bin" > /usr/local/bin/"$bin"; chmod +x /usr/local/bin/"$bin"; fi; done; else echo "Warning: ACP npm install failed; ACP agents will not be available on this image" >&2; rm -rf "$ACP_NODE_DIR"/*; fi; else echo "Warning: ACP Node 22 runtime is not compatible with this base image (likely older glibc or musl libc); ACP agents will not be available" >&2; rm -rf "$ACP_NODE_DIR"/*; fi; fi; rm -f "$NODE_TARBALL" 2>/dev/null || true # buildkit |
| RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=7ef44d10b2132125833ce2269559b3960f402805 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.33.0 /bin/bash -euo pipefail -c mkdir -p /etc/claude-code && echo '{"permissions":{"allow":["Edit","Read","Bash"]}}' > /etc/claude-code/managed-settings.json # buildkit |
| COPY /uv /uvx /bin/ # buildkit |
| USER openhands |
| WORKDIR / |
| ENV LC_ALL=C.UTF-8 |
| ENV LANG=C.UTF-8 |
| ENV OH_ENABLE_VNC=false |
| ENV LOG_JSON=true |
| EXPOSE map[8000/tcp:{}] |
| ARG USERNAME |
| USER root |
| ENV EDITOR=code VISUAL=code GIT_EDITOR=code --wait OPENVSCODE_SERVER_ROOT=/openhands/.openvscode-server |
| ARG RELEASE_TAG=openvscode-server-v1.98.2 |
| ARG RELEASE_ORG=gitpod-io |
| RUN |3 USERNAME=openhands RELEASE_TAG=openvscode-server-v1.98.2 RELEASE_ORG=gitpod-io /bin/bash -euo pipefail -c set -eux; 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; chown -R ${USERNAME}:${USERNAME} ${OPENVSCODE_SERVER_ROOT} # buildkit |
| COPY --chown=openhands:openhands /agent-server/openhands-agent-server/openhands/agent_server/vscode_extensions /openhands/.openvscode-server/extensions # buildkit |
| RUN |3 USERNAME=openhands RELEASE_TAG=openvscode-server-v1.98.2 RELEASE_ORG=gitpod-io /bin/bash -euo pipefail -c set -eux; 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/* # buildkit |
| RUN |3 USERNAME=openhands RELEASE_TAG=openvscode-server-v1.98.2 RELEASE_ORG=gitpod-io /bin/bash -euo pipefail -c mkdir -p /etc/docker && echo '{"mtu": 1450}' > /etc/docker/daemon.json # buildkit |
| RUN |3 USERNAME=openhands RELEASE_TAG=openvscode-server-v1.98.2 RELEASE_ORG=gitpod-io /bin/bash -euo pipefail -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 |
| RUN |3 USERNAME=openhands RELEASE_TAG=openvscode-server-v1.98.2 RELEASE_ORG=gitpod-io /bin/bash -euo pipefail -c set -eux; apt-get update; apt-get install -y --no-install-recommends tigervnc-standalone-server xfce4 dbus-x11 novnc websockify $(if grep -q "ubuntu" /etc/os-release; then echo "chromium-browser"; else echo "chromium"; fi); apt-get clean; rm -rf /var/lib/apt/lists/* # buildkit |
| ENV NOVNC_WEB=/usr/share/novnc NOVNC_PORT=8002 DISPLAY=:1 VNC_GEOMETRY=1280x800 CHROME_BIN=/usr/bin/chromium PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium CHROMIUM_FLAGS=--no-sandbox --disable-dev-shm-usage --disable-gpu |
| RUN |3 USERNAME=openhands RELEASE_TAG=openvscode-server-v1.98.2 RELEASE_ORG=gitpod-io /bin/bash -euo pipefail -c chown -R ${USERNAME}:${USERNAME} ${NOVNC_WEB} # buildkit |
| COPY --chown=openhands:openhands openhands-agent-server/openhands/agent_server/docker/wallpaper.svg /usr/share/backgrounds/xfce/xfce-shapes.svg # buildkit |
| USER openhands |
| WORKDIR / |
| ENV OH_ENABLE_VNC=false |
| ENV LOG_JSON=true |
| EXPOSE map[8000/tcp:{} 8002/tcp:{}] |
| ARG USERNAME |
| COPY --chown=openhands:openhands /agent-server/dist/openhands-agent-server /usr/local/bin/openhands-agent-server # buildkit |
| RUN |1 USERNAME=openhands /bin/bash -euo pipefail -c chmod +x /usr/local/bin/openhands-agent-server # buildkit |
| ENV LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu: |
| ENTRYPOINT ["tini" "--" "/usr/local/bin/openhands-agent-server"] |
| ARG AUTOMATION_VERSION |
| ARG AGENT_SERVER_SDK_GIT_REF= |
| ARG OPENHANDS_BUILD_GIT_SHA=unknown |
| ARG OPENHANDS_BUILD_GIT_REF=unknown |
| ARG AGENT_CANVAS_VERSION=dev |
| LABEL org.opencontainers.image.title=agent-canvas |
| LABEL org.opencontainers.image.description=All-in-one agent-canvas: Agent Server + Automation + Frontend |
| LABEL org.opencontainers.image.source=https://github.com/OpenHands/agent-canvas |
| LABEL org.opencontainers.image.version=1.2.1 |
| LABEL org.opencontainers.image.revision=56d51c0767fb6fedc51c466f5138fdfc116a2707 |
| ENV AGENT_CANVAS_BUILD_GIT_SHA=56d51c0767fb6fedc51c466f5138fdfc116a2707 |
| ENV AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.2.1 |
| USER root |
| RUN |5 AUTOMATION_VERSION=1.1.4 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=56d51c0767fb6fedc51c466f5138fdfc116a2707 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.2.1 AGENT_CANVAS_VERSION=1.2.1 /bin/bash -euo pipefail -c if command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y --no-install-recommends libpq-dev && rm -rf /var/lib/apt/lists/*; fi # buildkit |
| RUN |5 AUTOMATION_VERSION=1.1.4 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=56d51c0767fb6fedc51c466f5138fdfc116a2707 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.2.1 AGENT_CANVAS_VERSION=1.2.1 /bin/bash -euo pipefail -c uv pip install --system "openhands-automation==${AUTOMATION_VERSION}" 2>/dev/null || pip install --no-cache-dir "openhands-automation==${AUTOMATION_VERSION}" # buildkit |
| RUN |5 AUTOMATION_VERSION=1.1.4 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=56d51c0767fb6fedc51c466f5138fdfc116a2707 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.2.1 AGENT_CANVAS_VERSION=1.2.1 /bin/bash -euo pipefail -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 |
| COPY /build/build /opt/agent-canvas/frontend # buildkit |
| COPY scripts/static-server.mjs /opt/agent-canvas/static-server.mjs # buildkit |
| COPY scripts/proxy-utils.mjs /opt/agent-canvas/proxy-utils.mjs # buildkit |
| COPY /build/node_modules/httpxy /opt/agent-canvas/node_modules/httpxy # buildkit |
| COPY /build/node_modules/sirv /opt/agent-canvas/node_modules/sirv # buildkit |
| COPY /build/node_modules/@polka /opt/agent-canvas/node_modules/@polka # buildkit |
| COPY /build/node_modules/mrmime /opt/agent-canvas/node_modules/mrmime # buildkit |
| COPY /build/node_modules/totalist /opt/agent-canvas/node_modules/totalist # buildkit |
| COPY scripts/runtime-services-info.mjs /opt/agent-canvas/runtime-services-info.mjs # buildkit |
| COPY tools/ /opt/agent-canvas/tools/ # buildkit |
| COPY /tmp/defaults.env /opt/agent-canvas/defaults.env # buildkit |
| COPY docker/entrypoint.sh /opt/agent-canvas/entrypoint.sh # buildkit |
| RUN |5 AUTOMATION_VERSION=1.1.4 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=56d51c0767fb6fedc51c466f5138fdfc116a2707 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.2.1 AGENT_CANVAS_VERSION=1.2.1 /bin/bash -euo pipefail -c chmod +x /opt/agent-canvas/entrypoint.sh # buildkit |
| RUN |5 AUTOMATION_VERSION=1.1.4 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=56d51c0767fb6fedc51c466f5138fdfc116a2707 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.2.1 AGENT_CANVAS_VERSION=1.2.1 /bin/bash -euo pipefail -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 |
| USER openhands |
| VOLUME [/home/openhands/.openhands /projects] |
| EXPOSE map[8000/tcp:{}] |
| ENTRYPOINT ["tini" "--" "/opt/agent-canvas/entrypoint.sh"] |
| RUN /bin/bash -euo pipefail -c pip install --no-deps openhands-tools==1.33.0 binaryornot libtmux # buildkit |
| ENV OH_EXTRA_PYTHON_PATH=/opt/agent-canvas/tools:/home/openhands/.local/lib/python3.13/site-packages |
| USER root |
| RUN /bin/bash -euo pipefail -c sed -i 's|openhands-agent-server --port "\$AGENT_SERVER_PORT" \&|openhands-agent-server --port "$AGENT_SERVER_PORT" --import-modules openhands.tools \&|' /opt/agent-canvas/entrypoint.sh # buildkit |
| USER openhands |
Labels
| Key | Value |
|---|---|
| org.opencontainers.image.authors | Nikolai R Kristiansen <nikolaik@gmail.com> |
| org.opencontainers.image.description | All-in-one agent-canvas: Agent Server + Automation + Frontend |
| org.opencontainers.image.revision | 56d51c0767fb6fedc51c466f5138fdfc116a2707 |
| org.opencontainers.image.source | https://github.com/OpenHands/agent-canvas |
| org.opencontainers.image.title | agent-canvas |
| org.opencontainers.image.version | 1.2.1 |