Skip to content

Publish pure agent runtime images with version tags#801

Open
law-chain-hot wants to merge 12 commits into
mainfrom
codex/agent-runtime-images-v2
Open

Publish pure agent runtime images with version tags#801
law-chain-hot wants to merge 12 commits into
mainfrom
codex/agent-runtime-images-v2

Conversation

@law-chain-hot

@law-chain-hot law-chain-hot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add pure source-controlled Dockerfiles for the three existing GHCR packages: boxlite-agent-base, boxlite-agent-python, and boxlite-agent-node
  • add version-based publishing from images/agent-runtime/VERSION, starting at v0.1.0, with Buildx publishing linux/amd64 and linux/arm64
  • update API fallbacks, SST env refs, and Dashboard create-box options to the existing package names with the first version tag v0.1.0

Pure Image Boundary

  • the runtime images contain OS/runtime tooling only
  • no boxlite-daemon, no start-agent-runtime.sh, no BoxLite process supervisor is embedded in the images
  • BoxLite boxes continue to pull and run these refs through the existing image/runtime path

Versioning

  • source of truth: images/agent-runtime/VERSION
  • initial value: 0.1.0, published as v0.1.0
  • future releases increment this file, for example 0.1.0 -> 0.1.1, and publish the matching vX.Y.Z tag

Image refs

  • ghcr.io/boxlite-ai/boxlite-agent-base:v0.1.0
  • ghcr.io/boxlite-ai/boxlite-agent-python:v0.1.0
  • ghcr.io/boxlite-ai/boxlite-agent-node:v0.1.0

Verification

  • bash -n scripts/images/build-agent-runtime.sh
  • node --check apps/scripts/local-dex-env.mjs
  • ruby -e 'require "yaml"; YAML.load_file(".github/workflows/publish-agent-runtime-images.yml"); puts "workflow yaml ok"'
  • git diff --check
  • TAG=bad PLATFORMS=linux/amd64 PUSH=0 bash scripts/images/build-agent-runtime.sh exits before Docker with tag validation error
  • TAG=v0.1.0 PLATFORMS=linux/s390x PUSH=0 bash scripts/images/build-agent-runtime.sh exits before Docker with platform validation error
  • cd apps && NX_DAEMON=false yarn nx test api -- --testPathPatterns=src/box/constants/curated-images.constant.spec.ts
  • cd apps/dashboard && yarn vitest run src/components/Box/supportedBoxImages.test.ts
  • NX_DAEMON=false make lint:apps passed with existing warnings only

Not Run

  • local Docker buildx dry-run: Docker daemon is not running on this machine
  • NX_DAEMON=false make test:apps: blocked before apps tests by uninitialized libkrun/libkrunfw submodules during dev:go

Summary by CodeRabbit

Release Notes

  • New Features

    • Agent runtime images now versioned and published to container registry with multi-architecture support (amd64, arm64).
    • Three agent runtime variants available: base, Python, and Node.
  • Documentation

    • Added design documentation for versioned agent runtime image publishing workflow.
  • Tests

    • Added test suite validating supported runtime image configurations.
  • Chores

    • Updated infrastructure configuration and CI/CD workflows to support automated image publishing.

@law-chain-hot law-chain-hot requested a review from a team as a code owner June 16, 2026 07:10
@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 75730a1c-595b-45df-a73f-06112b4f4f84

📥 Commits

Reviewing files that changed from the base of the PR and between 23cebc9 and cc9e7da.

📒 Files selected for processing (8)
  • .dockerignore
  • .github/workflows/publish-agent-runtime-images.yml
  • apps/scripts/local-dex-env.mjs
  • docs/plans/agent-runtime-images-versioned-design.md
  • images/agent-runtime/base.Dockerfile
  • images/agent-runtime/node.Dockerfile
  • images/agent-runtime/python.Dockerfile
  • scripts/images/build-agent-runtime.sh
💤 Files with no reviewable changes (2)
  • .dockerignore
  • apps/scripts/local-dex-env.mjs
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/plans/agent-runtime-images-versioned-design.md

📝 Walkthrough

Walkthrough

Introduces three agent runtime Dockerfiles (base, python, node) under images/agent-runtime/ with a VERSION file at 0.1.0, a rewritten multi-arch build script, and a new GitHub Actions workflow to publish versioned images to GHCR. Downstream references—API allowlist, infra config, dashboard image picker, and local dev script—are updated to the new v0.1.0 tags. A design document is also added.

Changes

Agent Runtime Images v0.1.0

Layer / File(s) Summary
Agent runtime Dockerfiles and VERSION file
images/agent-runtime/VERSION, images/agent-runtime/base.Dockerfile, images/agent-runtime/python.Dockerfile, images/agent-runtime/node.Dockerfile
Adds three independent Dockerfiles (base on debian:bookworm-slim, python on python:3.12-slim-bookworm, node on node:22-bookworm-slim), each installing runtime tooling, configuring UTC timezone, enabling passwordless sudo, setting /workspace, and running sleep infinity as CMD. VERSION file is initialized to 0.1.0.
Build script: tag derivation, platform validation, and image builds
scripts/images/build-agent-runtime.sh
Rewrites the build script with read_runtime_image_version, normalize_tag, validate_platform, parse_platforms, and build_image functions. Removes daemon cross-compilation. Main loop builds base/python/node images via docker buildx with push, load, or cache-only output depending on PUSH and platform count.
GitHub Actions publish workflow
.github/workflows/publish-agent-runtime-images.yml
Adds workflow triggered on path-filtered pushes to main and workflow_dispatch. Resolves and validates semver tag from input or VERSION file, authenticates to ghcr.io, and invokes the build script with PUSH=1 for both linux/amd64 and linux/arm64.
Docker ignore refinement and local dev script cleanup
.dockerignore, apps/scripts/local-dex-env.mjs
Narrows .dockerignore from apps/dist to apps/dist/*. Updates the local dev script to use v0.1.0-local as the default runtime tag, removes ensureDaemonRuntimeBinary call and its helper, and reformats the runtime images list with comments.
API allowlist and infra config updated to v0.1.0 refs
apps/api/src/box/constants/curated-images.constant.ts, apps/api/src/box/constants/curated-images.constant.spec.ts, apps/infra/sst.config.ts
Updates fallbackRef values in the curated image allowlist and its spec to ghcr.io/boxlite-ai/boxlite-agent-{base,python,node}:v0.1.0. Updates BOXLITE_SYSTEM_IMAGE_TAG and three pinned image env var defaults in infra config to v0.1.0.
Dashboard supported images module extraction and test
apps/dashboard/src/components/Box/supportedBoxImages.ts, apps/dashboard/src/components/Box/CreateBoxSheet.tsx, apps/dashboard/src/components/Box/supportedBoxImages.test.ts
Extracts SUPPORTED_BOX_IMAGES from CreateBoxSheet into a dedicated supportedBoxImages.ts module with pinned v0.1.0 refs. CreateBoxSheet imports from the new module. Vitest test validates the ordered ref list and confirms the first entry is the default base image.
Agent runtime images versioned design document
docs/plans/agent-runtime-images-versioned-design.md
Adds design doc covering GHCR naming, versioning from VERSION file, multi-arch build approach, downstream allowlist/dashboard wiring, fail-fast conditions, testing targets, files to change, and out-of-scope items.

Sequence Diagram(s)

sequenceDiagram
  participant Dev as Developer / CI push to main
  participant GHA as publish-agent-runtime-images.yml
  participant VersionStep as Resolve Version Step
  participant BuildScript as build-agent-runtime.sh
  participant GHCR as ghcr.io/boxlite-ai

  Dev->>GHA: push to main (images/agent-runtime/** changed)
  GHA->>VersionStep: input version or read images/agent-runtime/VERSION
  VersionStep->>VersionStep: strip leading v, validate vMAJOR.MINOR.PATCH
  VersionStep->>GHCR: docker login (GITHUB_TOKEN)
  VersionStep->>BuildScript: TAG=v0.1.0, PUSH=1, PLATFORMS=linux/amd64,linux/arm64
  BuildScript->>BuildScript: normalize_tag, parse_platforms
  loop base, python, node
    BuildScript->>GHCR: docker buildx --push ghcr.io/boxlite-ai/boxlite-agent-{flavor}:v0.1.0
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • boxlite-ai/boxlite#730: Modifies the same .dockerignore rules around apps/dist build-context path exclusions.
  • boxlite-ai/boxlite#758: Directly touches the curated image allowlist in curated-images.constant.ts, which this PR also updates to v0.1.0 tags.
  • boxlite-ai/boxlite#792: Modifies the same curated-images.constant.ts allowlist flow and the CreateBoxSheet image picker integration that this PR refactors.

Suggested reviewers

  • DorianZheng
  • G4614

🐇 Three flavors of runtime, freshly baked,
v0.1.0 tags, no date-stamp mistakes!
The VERSION file whispers a semver delight,
Buildx spins up for amd64 and arm's might.
The rabbit hops on — new images ship right! 🚀

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 11.11% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the primary change: establishing versioned publishing for agent runtime Docker images with semantic version tags.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/agent-runtime-images-v2

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e55dc6b17e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread images/agent-runtime/base.Dockerfile Outdated
Comment thread .github/workflows/publish-agent-runtime-images.yml Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (2)
docs/plans/agent-runtime-images-v2.md (1)

3-3: 💤 Low value

Consider removing or repositioning the Claude directive.

Line 3 contains an internal planning instruction ("For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans...") that is meta-commentary rather than part of the final deliverable. For a polished implementation plan, either remove it or move it to a separate internal notes section if future cross-references are needed.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/plans/agent-runtime-images-v2.md` at line 3, The blockquote on line 3
starting with "For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans"
is an internal planning directive that serves as meta-commentary rather than
part of the actual implementation plan documentation. Either remove this entire
blockquote line if it is not needed for future reference, or move it to a
separate internal notes section at the end of the document if cross-references
to this instruction are required. Ensure the remaining document content flows
naturally without this meta-commentary.
apps/dashboard/src/components/Box/supportedBoxImages.test.ts (1)

11-12: ⚡ Quick win

Assert a single default image invariant.

Current assertions allow multiple isDefault: true entries to slip through. Add a count check so default selection remains explicit and deterministic.

♻️ Suggested test addition
 describe('supported box images', () => {
   it('exposes the three versioned runtime image refs, base first', () => {
     expect(SUPPORTED_BOX_IMAGES.map((image) => image.ref)).toEqual([
       'ghcr.io/boxlite-ai/boxlite-agent-base-v2:v0.9.5',
       'ghcr.io/boxlite-ai/boxlite-agent-python-v2:v0.9.5',
       'ghcr.io/boxlite-ai/boxlite-agent-node-v2:v0.9.5',
     ])
     expect(SUPPORTED_BOX_IMAGES[0]).toMatchObject({ id: 'base', isDefault: true })
+    expect(SUPPORTED_BOX_IMAGES.filter((image) => image.isDefault)).toHaveLength(1)
   })
 })
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/dashboard/src/components/Box/supportedBoxImages.test.ts` around lines 11
- 12, The current test assertion on the SUPPORTED_BOX_IMAGES array only checks
that the first element has isDefault: true, but doesn't prevent multiple default
entries from existing. Add an additional assertion that counts the number of
elements in SUPPORTED_BOX_IMAGES with isDefault: true and verifies that exactly
one element has this property set to true. This ensures the default image
selection remains deterministic and explicit.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/publish-agent-runtime-images.yml:
- Around line 6-11: The workflow trigger paths filter does not include
.dockerignore, which means changes to that file won't trigger the workflow even
though it affects the Docker build context and published artifacts. Add
.dockerignore as a new entry to the paths list in the on.push trigger section of
the workflow file, placing it alongside the existing paths like Cargo.toml,
apps/daemon/**, images/agent-runtime/**, and
scripts/images/build-agent-runtime.sh.
- Around line 34-48: Replace all mutable version tags with immutable commit SHAs
for the third-party GitHub Actions in the workflow file. Specifically, update
actions/checkout@v5, actions/setup-go@v5, docker/setup-qemu-action@v3,
docker/setup-buildx-action@v3, and docker/login-action@v3 by replacing each `@v`#
tag with the full commit SHA of that specific version (e.g., `@abc123def456`...).
This ensures supply-chain security by preventing unexpected code execution if
action repositories are compromised.
- Around line 33-35: The actions/checkout action in the workflow is persisting
git credentials by default, which is unnecessary since no subsequent steps
perform git operations. Add the persist-credentials parameter set to false in
the checkout action configuration to prevent unnecessary credential persistence
and reduce the security exposure. This is a best practice for workflows that
don't require git credentials for operations after the checkout step.

In `@docs/plans/agent-runtime-images-v2.md`:
- Line 13: The Markdown document violates heading hierarchy by jumping from the
main document heading (h1) directly to task headings marked with ### (h3),
skipping the h2 level. Change all task headings throughout the document from ###
to ## to maintain proper Markdown hierarchy where each heading level increments
by one. This includes all headings that start with "Task" (such as "Task 1:
Restore Agent Runtime Sources" and subsequent task headings).

In `@images/agent-runtime/start-agent-runtime.sh`:
- Around line 6-9: The fallback logic is setting the wrong environment variable.
The daemon configuration requires BOXLITE_BOX_ID, but the code currently checks
for and sets BOXLITE_SANDBOX_ID. Change the condition to check if BOXLITE_BOX_ID
is unset, and then set BOXLITE_BOX_ID to the hostname value (using the same
pattern: set the variable, then export it). This ensures the required daemon
environment variable has a proper fallback when not provided.

---

Nitpick comments:
In `@apps/dashboard/src/components/Box/supportedBoxImages.test.ts`:
- Around line 11-12: The current test assertion on the SUPPORTED_BOX_IMAGES
array only checks that the first element has isDefault: true, but doesn't
prevent multiple default entries from existing. Add an additional assertion that
counts the number of elements in SUPPORTED_BOX_IMAGES with isDefault: true and
verifies that exactly one element has this property set to true. This ensures
the default image selection remains deterministic and explicit.

In `@docs/plans/agent-runtime-images-v2.md`:
- Line 3: The blockquote on line 3 starting with "For Claude: REQUIRED
SUB-SKILL: Use superpowers:executing-plans" is an internal planning directive
that serves as meta-commentary rather than part of the actual implementation
plan documentation. Either remove this entire blockquote line if it is not
needed for future reference, or move it to a separate internal notes section at
the end of the document if cross-references to this instruction are required.
Ensure the remaining document content flows naturally without this
meta-commentary.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: a0c3b2a3-852b-40b7-9a3c-c00cf4a87a84

📥 Commits

Reviewing files that changed from the base of the PR and between f394033 and e55dc6b.

📒 Files selected for processing (15)
  • .dockerignore
  • .github/workflows/publish-agent-runtime-images.yml
  • apps/api/src/box/constants/curated-images.constant.spec.ts
  • apps/api/src/box/constants/curated-images.constant.ts
  • apps/dashboard/src/components/Box/CreateBoxSheet.tsx
  • apps/dashboard/src/components/Box/supportedBoxImages.test.ts
  • apps/dashboard/src/components/Box/supportedBoxImages.ts
  • apps/infra/sst.config.ts
  • docs/plans/agent-runtime-images-v2-design.md
  • docs/plans/agent-runtime-images-v2.md
  • images/agent-runtime/base.Dockerfile
  • images/agent-runtime/node.Dockerfile
  • images/agent-runtime/python.Dockerfile
  • images/agent-runtime/start-agent-runtime.sh
  • scripts/images/build-agent-runtime.sh

Comment thread .github/workflows/publish-agent-runtime-images.yml Outdated
Comment thread .github/workflows/publish-agent-runtime-images.yml
Comment thread .github/workflows/publish-agent-runtime-images.yml Outdated
Comment thread docs/plans/agent-runtime-images-v2.md Outdated
Comment thread images/agent-runtime/start-agent-runtime.sh Outdated
@@ -0,0 +1,85 @@
name: Publish Agent Runtime Images

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

better name

@law-chain-hot law-chain-hot changed the title Publish agent runtime v2 images with version tags Publish original agent runtime packages with version tags Jun 16, 2026
Comment thread images/agent-runtime/base.Dockerfile Outdated
&& rm -rf /var/lib/apt/lists/*

ARG TARGETARCH
COPY apps/dist/apps/daemon-runtime/boxlite-daemon-${TARGETARCH} /boxlite/bin/boxlite-daemon

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't need this

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/images/build-agent-runtime.sh`:
- Line 93: The target variable assignment on line 93 currently uses the naming
pattern boxlite-agent-<image> but needs to match the publishing contract which
requires boxlite-agent-<image>-v2. Update the target variable assignment to
append -v2 between the image name and the tag separator to ensure the image is
published to the correct repository matching the v2 naming convention.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8ce2039e-56f4-4b86-baf9-af497cfedd58

📥 Commits

Reviewing files that changed from the base of the PR and between 690b99d and 543ef7c.

📒 Files selected for processing (11)
  • .github/workflows/publish-agent-runtime-images.yml
  • apps/api/src/box/constants/curated-images.constant.spec.ts
  • apps/api/src/box/constants/curated-images.constant.ts
  • apps/dashboard/src/components/Box/supportedBoxImages.test.ts
  • apps/dashboard/src/components/Box/supportedBoxImages.ts
  • apps/infra/sst.config.ts
  • apps/scripts/local-dex-env.mjs
  • docs/plans/agent-runtime-images-versioned-design.md
  • docs/plans/agent-runtime-images-versioned.md
  • images/agent-runtime/VERSION
  • scripts/images/build-agent-runtime.sh
✅ Files skipped from review due to trivial changes (3)
  • images/agent-runtime/VERSION
  • docs/plans/agent-runtime-images-versioned-design.md
  • docs/plans/agent-runtime-images-versioned.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • apps/dashboard/src/components/Box/supportedBoxImages.test.ts
  • apps/api/src/box/constants/curated-images.constant.spec.ts
  • apps/dashboard/src/components/Box/supportedBoxImages.ts

Comment thread scripts/images/build-agent-runtime.sh Outdated
local image="$1"
local tag="$2"
local dockerfile="$ROOT_DIR/images/agent-runtime/${image}.Dockerfile"
local target="$REGISTRY/boxlite-agent-${image}:$tag"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Use the v2 image repository names to match the publishing contract.

Line 93 currently publishes ghcr.io/boxlite-ai/boxlite-agent-<image>:<tag>, but this PR’s contract is to publish boxlite-agent-<image>-v2:<tag>. As written, the workflow will push to the wrong repos and downstream v2 references won’t resolve.

Suggested fix
-  local target="$REGISTRY/boxlite-agent-${image}:$tag"
+  local target="$REGISTRY/boxlite-agent-${image}-v2:$tag"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
local target="$REGISTRY/boxlite-agent-${image}:$tag"
local target="$REGISTRY/boxlite-agent-${image}-v2:$tag"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/images/build-agent-runtime.sh` at line 93, The target variable
assignment on line 93 currently uses the naming pattern boxlite-agent-<image>
but needs to match the publishing contract which requires
boxlite-agent-<image>-v2. Update the target variable assignment to append -v2
between the image name and the tag separator to ensure the image is published to
the correct repository matching the v2 naming convention.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
images/agent-runtime/python.Dockerfile (1)

38-40: 💤 Low value

Consider removing redundant apt Python packages.

The python:3.12-slim-bookworm base image already provides Python 3.12 with pip and venv. Installing python3, python3-pip, python3-venv from apt adds Debian's Python 3.11 alongside the existing 3.12, increasing image size and potentially causing version confusion.

None of the other apt packages in this Dockerfile depend on the system python3 package. If you specifically need the Debian Python for some compatibility reason, consider documenting that case; otherwise these three packages can be removed.

♻️ Suggested diff
 RUN apt-get update \
   && apt-get install -y --no-install-recommends \
     bash \
     build-essential \
     ca-certificates \
     curl \
     git \
     jq \
     less \
     openssh-client \
     pkg-config \
     procps \
-    python3 \
-    python3-pip \
-    python3-venv \
     sudo \
     tzdata \
     unzip \
     wget \
     zip \
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@images/agent-runtime/python.Dockerfile` around lines 38 - 40, Remove the
redundant `python3`, `python3-pip`, and `python3-venv` packages from the apt
package list since the `python:3.12-slim-bookworm` base image already provides
Python 3.12 with pip and venv. These lines are not needed and only increase the
image size while potentially introducing Python 3.11 from Debian, causing
unnecessary version confusion. Delete the three lines containing these package
names from the apt installation section.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@images/agent-runtime/python.Dockerfile`:
- Around line 38-40: Remove the redundant `python3`, `python3-pip`, and
`python3-venv` packages from the apt package list since the
`python:3.12-slim-bookworm` base image already provides Python 3.12 with pip and
venv. These lines are not needed and only increase the image size while
potentially introducing Python 3.11 from Debian, causing unnecessary version
confusion. Delete the three lines containing these package names from the apt
installation section.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8c3abc0d-6062-45fb-91a7-042778c60219

📥 Commits

Reviewing files that changed from the base of the PR and between 543ef7c and 23cebc9.

📒 Files selected for processing (11)
  • .dockerignore
  • .github/workflows/publish-agent-runtime-images.yml
  • apps/api/src/box/constants/curated-images.constant.ts
  • apps/dashboard/src/components/Box/supportedBoxImages.ts
  • apps/infra/sst.config.ts
  • apps/scripts/local-dex-env.mjs
  • images/agent-runtime/base.Dockerfile
  • images/agent-runtime/node.Dockerfile
  • images/agent-runtime/python.Dockerfile
  • images/agent-runtime/start-agent-runtime.sh
  • scripts/images/build-agent-runtime.sh
✅ Files skipped from review due to trivial changes (1)
  • apps/api/src/box/constants/curated-images.constant.ts
🚧 Files skipped from review as they are similar to previous changes (7)
  • .dockerignore
  • apps/dashboard/src/components/Box/supportedBoxImages.ts
  • images/agent-runtime/start-agent-runtime.sh
  • apps/scripts/local-dex-env.mjs
  • apps/infra/sst.config.ts
  • .github/workflows/publish-agent-runtime-images.yml
  • scripts/images/build-agent-runtime.sh

@law-chain-hot law-chain-hot changed the title Publish original agent runtime packages with version tags Publish pure agent runtime images with version tags Jun 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants