FROM node:26.0.0-bookworm-slim ARG CLAUDE_CODE_VERSION=2.1.220 ARG DEVIN_CLI_VERSION=3000.2.17 ARG TARGETARCH RUN apt-get update \ && apt-get install -y --no-install-recommends ca-certificates curl git bash python3 make g++ tini \ && rm -rf /var/lib/apt/lists/* \ && npm install --global "@anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}" RUN set -eu; \ case "${TARGETARCH}" in \ amd64) devin_arch=x86_64-unknown-linux; devin_sha=f0e1e9363afc6ee68c4ef87bab4aeb7ff5cc08a5fa838350ef3ceefdbb2a2be2 ;; \ arm64) devin_arch=aarch64-unknown-linux; devin_sha=116dc71ef085a922bc3ff0ea0377d4b26c529a431d58246e36572913e2d25624 ;; \ *) echo "Unsupported TARGETARCH=${TARGETARCH}" >&2; exit 1 ;; \ esac; \ curl -fsSL "https://static.devin.ai/cli/${DEVIN_CLI_VERSION}/devin-${DEVIN_CLI_VERSION}-${devin_arch}.tar.gz" -o /tmp/devin.tar.gz; \ echo "${devin_sha} /tmp/devin.tar.gz" | sha256sum -c -; \ tar -xzf /tmp/devin.tar.gz -C /tmp; \ install -m 0755 "$(find /tmp -type f -name devin | head -1)" /usr/local/bin/devin; \ rm -rf /tmp/devin.tar.gz /tmp/devin-* RUN groupadd --gid 10001 bridge \ && useradd --uid 10001 --gid bridge --create-home --home-dir /home/bridge --shell /bin/bash bridge \ && mkdir -p /opt/omniroute /workspace \ && chown -R bridge:bridge /opt/omniroute /workspace WORKDIR /opt/omniroute USER bridge COPY --chown=bridge:bridge package.json package-lock.json .npmrc ./ RUN npm ci --ignore-scripts --no-audit --fund=false COPY --chown=bridge:bridge . . RUN npm rebuild better-sqlite3 || true ENV HOME=/home/bridge \ CLAUDE_CONFIG_DIR=/home/bridge/.claude-devin-isolated \ DEVIN_AGENTIC_HOME=/home/bridge \ DATA_DIR=/home/bridge/.omniroute-isolated \ SQLITE_FILE=/home/bridge/.omniroute-isolated/storage.sqlite \ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \ DISABLE_TELEMETRY=1 \ DISABLE_ERROR_REPORTING=1 \ DISABLE_AUTOUPDATER=1 \ CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 \ NEXT_TELEMETRY_DISABLED=1 RUN mkdir -p /home/bridge/.claude-devin-isolated /home/bridge/.local/share/devin \ /home/bridge/.omniroute-isolated RUN DATA_DIR=/tmp/omniroute-build-data \ SQLITE_FILE=/tmp/omniroute-build-data/storage.sqlite \ npm run build \ && rm -rf /tmp/omniroute-build-data ENTRYPOINT ["/usr/bin/tini", "--"] CMD ["bash"]