Block a user
devflow-agent (0.1.7)
Published 2026-10-21 16:56:15 -04:00 by david
Installation
docker pull git.domanico.us/david/devflow-agent:0.1.7sha256:074995f537a6fe28164cb2b722fe4359b394db41cb6fcca056135b296f33cfbb
Image Layers
| # debian.sh --arch 'amd64' out/ 'bookworm' '@1791158400' |
| ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| ENV LANG=C.UTF-8 |
| RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; rm -rf /var/lib/apt/lists/* # buildkit |
| ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305 |
| ENV PYTHON_VERSION=3.12.15 |
| ENV PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a |
| RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev g++ 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; rm -rf /var/lib/apt/lists/*; 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"] |
| SHELL [/bin/bash -o pipefail -c] |
| COPY /usr/local/bin/node /usr/local/bin/node # buildkit |
| COPY /uv /uvx /usr/local/bin/ # buildkit |
| ARG CLAUDE_CODE_VERSION=2.1.304 |
| ARG GITLEAKS_VERSION=8.30.1 |
| ARG GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb |
| ARG GITEA_MCP_VERSION=1.10.0 |
| ARG GITEA_MCP_SHA256=84867059459083f06c3f26f8625fb21f1f4297bf21b35d1255859bdc7acfbad8 |
| RUN |5 CLAUDE_CODE_VERSION=2.1.304 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb GITEA_MCP_VERSION=1.10.0 GITEA_MCP_SHA256=84867059459083f06c3f26f8625fb21f1f4297bf21b35d1255859bdc7acfbad8 /bin/bash -o pipefail -c apt-get update && apt-get install -y --no-install-recommends git ca-certificates curl && curl -fsSLo /tmp/gitleaks.tgz "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" && echo "${GITLEAKS_SHA256} /tmp/gitleaks.tgz" | sha256sum -c - && tar -xzf /tmp/gitleaks.tgz -C /usr/local/bin gitleaks && curl -fsSLo /tmp/gitea-mcp.tgz "https://gitea.com/gitea/gitea-mcp/releases/download/v${GITEA_MCP_VERSION}/gitea-mcp_Linux_x86_64.tar.gz" && echo "${GITEA_MCP_SHA256} /tmp/gitea-mcp.tgz" | sha256sum -c - && tar -xzf /tmp/gitea-mcp.tgz -C /usr/local/bin gitea-mcp && chown root:root /usr/local/bin/gitleaks /usr/local/bin/gitea-mcp && chmod 0755 /usr/local/bin/gitleaks /usr/local/bin/gitea-mcp && curl -fsSLo /tmp/claude-install.sh https://claude.ai/install.sh && DISABLE_AUTOUPDATER=1 bash /tmp/claude-install.sh "${CLAUDE_CODE_VERSION}" && install -m 0755 -o root -g root "$(readlink -f /root/.local/bin/claude)" /usr/local/bin/claude && rm -rf /root/.local /root/.claude /root/.claude.json /root/.cache /tmp/claude-install.sh /tmp/gitleaks.tgz /tmp/gitea-mcp.tgz && claude --version | grep -q "^${CLAUDE_CODE_VERSION} " && apt-get purge -y --auto-remove curl && rm -rf /var/lib/apt/lists/* # buildkit |
| COPY devflow-*.whl requirements.txt /tmp/devflow/ # buildkit |
| RUN |5 CLAUDE_CODE_VERSION=2.1.304 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb GITEA_MCP_VERSION=1.10.0 GITEA_MCP_SHA256=84867059459083f06c3f26f8625fb21f1f4297bf21b35d1255859bdc7acfbad8 /bin/bash -o pipefail -c uv venv --no-cache --python /usr/local/bin/python3.12 /opt/devflow-tools/devflow && uv pip install --no-cache --python /opt/devflow-tools/devflow/bin/python --require-hashes --no-build -r /tmp/devflow/requirements.txt && uv pip install --no-cache --python /opt/devflow-tools/devflow/bin/python --no-deps --no-index /tmp/devflow/devflow-*.whl && uv pip check --python /opt/devflow-tools/devflow/bin/python && ln -s /opt/devflow-tools/devflow/bin/flow /usr/local/bin/flow && rm -rf /tmp/devflow # buildkit |
| ARG DEVFLOW_TAG=v0.1.7 |
| RUN |6 CLAUDE_CODE_VERSION=2.1.304 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb GITEA_MCP_VERSION=1.10.0 GITEA_MCP_SHA256=84867059459083f06c3f26f8625fb21f1f4297bf21b35d1255859bdc7acfbad8 DEVFLOW_TAG=v0.1.7 /bin/bash -o pipefail -c [[ "${DEVFLOW_TAG:-}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && git config --system url."file:///mnt/seed.git".insteadOf https://git.domanico.us/david/devflow.git && mkdir -p /tmp/seed-home /tmp/seed-config && export HOME=/tmp/seed-home CLAUDE_CONFIG_DIR=/tmp/seed-config CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed DISABLE_AUTOUPDATER=1 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 && claude plugin marketplace add "https://git.domanico.us/david/devflow.git#${DEVFLOW_TAG}" && claude plugin install reviewers@devflow && git config --system --remove-section url."file:///mnt/seed.git" && if [ ! -s /etc/gitconfig ]; then rm -f /etc/gitconfig; fi && tree="$(git -C /opt/claude-seed/marketplaces/devflow rev-parse HEAD:plugins/reviewers)" && install -d -m 0755 -o root -g root /etc/devflow && python3 -c 'import json, sys; json.dump({"version": 1, "devflow_tag": sys.argv[1], "reviewers_tree": sys.argv[2], "seed_dir": "/opt/claude-seed"}, open(sys.argv[3], "w"))' "${DEVFLOW_TAG}" "${tree}" /etc/devflow/agent-image.json && chmod 0644 /etc/devflow/agent-image.json && rm -rf /tmp/seed-home /tmp/seed-config && chown -R root:root /opt/claude-seed && chmod -R a-w,a+rX /opt/claude-seed # buildkit |
| COPY managed-settings.json gitea-mcp.json /tmp/agent-config/ # buildkit |
| RUN |6 CLAUDE_CODE_VERSION=2.1.304 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb GITEA_MCP_VERSION=1.10.0 GITEA_MCP_SHA256=84867059459083f06c3f26f8625fb21f1f4297bf21b35d1255859bdc7acfbad8 DEVFLOW_TAG=v0.1.7 /bin/bash -o pipefail -c install -d -m 0755 -o root -g root /etc/claude-code /etc/claude-code/managed-settings.d && sed "s/__DEVFLOW_TAG__/${DEVFLOW_TAG}/g" /tmp/agent-config/managed-settings.json > /etc/claude-code/managed-settings.json && ! grep -q __DEVFLOW_TAG__ /etc/claude-code/managed-settings.json && python3 -m json.tool /etc/claude-code/managed-settings.json >/dev/null && chown root:root /etc/claude-code/managed-settings.json && chmod 0644 /etc/claude-code/managed-settings.json && install -m 0644 -o root -g root /tmp/agent-config/gitea-mcp.json /etc/devflow/gitea-mcp.json && python3 -m json.tool /etc/devflow/gitea-mcp.json >/dev/null && rm -rf /tmp/agent-config # buildkit |
| RUN |6 CLAUDE_CODE_VERSION=2.1.304 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb GITEA_MCP_VERSION=1.10.0 GITEA_MCP_SHA256=84867059459083f06c3f26f8625fb21f1f4297bf21b35d1255859bdc7acfbad8 DEVFLOW_TAG=v0.1.7 /bin/bash -o pipefail -c useradd -m -u 1000 -s /bin/sh agent # buildkit |
| USER agent |
| WORKDIR /home/agent |
| ENV CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed CLAUDE_CODE_SYNC_PLUGIN_INSTALL=1 DISABLE_AUTOUPDATER=1 |
| RUN |6 CLAUDE_CODE_VERSION=2.1.304 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb GITEA_MCP_VERSION=1.10.0 GITEA_MCP_SHA256=84867059459083f06c3f26f8625fb21f1f4297bf21b35d1255859bdc7acfbad8 DEVFLOW_TAG=v0.1.7 /bin/bash -o pipefail -c claude --version && flow --version && flow review definition && gitleaks version && gitea-mcp --help >/dev/null && git --version && node --version && rm -rf /home/agent/.claude /home/agent/.claude.json /home/agent/.cache /home/agent/.local /home/agent/.config # buildkit |
Labels
| Key | Value |
|---|---|
| org.opencontainers.image.revision | 9c73a88532e3c13cd9ccc6979f49bff96a03f2b6 |
| org.opencontainers.image.source | https://git.domanico.us/david/devflow |
| org.opencontainers.image.version | 0.1.7 |
Details
Versions (3)
View all