Skip to content

feat(agent-server): publish python-minimal image - #5088

Merged
neubig merged 1 commit into
mainfrom
feat/publish-python-minimal
Sep 15, 2026
Merged

neubig merged 1 commit into
mainfrom
feat/publish-python-minimal

Conversation

@neubig

@neubig neubig commented Sep 15, 2026 •

Copy link
Copy Markdown
Member

Why

PR #5077 added the Debian-based binary-minimal target, but the release workflow only publishes the full binary target as python and python-slim. Users therefore cannot pull the true minimal runtime from GHCR.

Summary

  • publish python-minimal for amd64 and arm64 from the binary-minimal target
  • omit baked ACP providers and optional capabilities from this variant
  • consolidate architecture images into the same multi-arch/tag scheme as the existing variants
  • emit clean tags such as 1.49.0-python-minimal, without the redundant -binary-minimal suffix
  • retain the existing python and python-slim behavior unchanged

python-minimal remains ACP-capable through the existing pinned, on-demand provider installation path; it simply does not bake the ACP payload into the image.

Test plan

  • uv run pytest -q tests/agent_server/test_docker_build.py tests/cross/test_agent_server_build_metadata.py (76 passed)
  • uv run ruff check ...
  • uv run ruff format --check ...
  • parsed .github/workflows/server.yml with PyYAML
  • exercised build.py --build-ctx-only --arch amd64 --versioned-tag with IMAGE_FLAVOR=minimal and TARGET=binary-minimal; it emitted 1.48.0-python-minimal-amd64

This PR was created by an AI agent (OpenHands) on behalf of Graham Neubig.


🐳 Agent Server images for this PR — GHCR package, pull/run commands, and all pushed tags (click to expand)

• GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server

Variants & Base Images

Variant Architectures Base Image Docs / Tags
java amd64, arm64 eclipse-temurin:17-jdk Link
python-slim amd64, arm64 python-node-runtime Link
python-minimal amd64, arm64 python-node-runtime Link
python amd64, arm64 python-node-runtime Link
golang amd64, arm64 golang:1.21-bookworm Link

Pull (multi-arch manifest)

# Each variant is a multi-arch manifest supporting both amd64 and arm64
docker pull ghcr.io/openhands/agent-server:fd8651c-python

Run

docker run -it --rm \
  -p 8000:8000 \
  --name agent-server-fd8651c-python \
  ghcr.io/openhands/agent-server:fd8651c-python

All tags pushed for this build

ghcr.io/openhands/agent-server:fd8651c-golang-amd64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-golang-amd64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-golang-amd64
ghcr.io/openhands/agent-server:fd8651c-golang_tag_1.21-bookworm-amd64
ghcr.io/openhands/agent-server:fd8651c-golang-arm64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-golang-arm64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-golang-arm64
ghcr.io/openhands/agent-server:fd8651c-golang_tag_1.21-bookworm-arm64
ghcr.io/openhands/agent-server:fd8651c-java-amd64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-java-amd64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-java-amd64
ghcr.io/openhands/agent-server:fd8651c-eclipse-temurin_tag_17-jdk-amd64
ghcr.io/openhands/agent-server:fd8651c-java-arm64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-java-arm64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-java-arm64
ghcr.io/openhands/agent-server:fd8651c-eclipse-temurin_tag_17-jdk-arm64
ghcr.io/openhands/agent-server:fd8651c-python-amd64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python-amd64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python-amd64
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime-amd64
ghcr.io/openhands/agent-server:fd8651c-python-arm64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python-arm64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python-arm64
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime-arm64
ghcr.io/openhands/agent-server:fd8651c-python-minimal-amd64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python-minimal-amd64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python-minimal-amd64
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime-minimal-amd64
ghcr.io/openhands/agent-server:fd8651c-python-minimal-arm64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python-minimal-arm64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python-minimal-arm64
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime-minimal-arm64
ghcr.io/openhands/agent-server:fd8651c-python-slim-amd64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python-slim-amd64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python-slim-amd64
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime-slim-amd64
ghcr.io/openhands/agent-server:fd8651c-python-slim-arm64
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python-slim-arm64
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python-slim-arm64
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime-slim-arm64
ghcr.io/openhands/agent-server:fd8651c-golang
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-golang
ghcr.io/openhands/agent-server:feat-publish-python-minimal-golang
ghcr.io/openhands/agent-server:fd8651c-golang_tag_1.21-bookworm
ghcr.io/openhands/agent-server:fd8651c-java
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-java
ghcr.io/openhands/agent-server:feat-publish-python-minimal-java
ghcr.io/openhands/agent-server:fd8651c-eclipse-temurin_tag_17-jdk
ghcr.io/openhands/agent-server:fd8651c-python-minimal
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python-minimal
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python-minimal
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime-minimal
ghcr.io/openhands/agent-server:fd8651c-python-slim
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python-slim
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python-slim
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime-slim
ghcr.io/openhands/agent-server:fd8651c-python
ghcr.io/openhands/agent-server:fd8651c20781a791b4a010b8fe860ac6606cc25b-python
ghcr.io/openhands/agent-server:feat-publish-python-minimal-python
ghcr.io/openhands/agent-server:fd8651c-python-node-runtime

About Multi-Architecture Support

  • Each variant tag (e.g., fd8651c-python) is a multi-arch manifest supporting both amd64 and arm64
  • Docker automatically pulls the correct architecture for your platform
  • Individual architecture tags (e.g., fd8651c-python-amd64) are also available if needed

Co-authored-by: openhands <openhands@all-hands.dev>
@github-actions

Copy link
Copy Markdown
Contributor

REST API breakage checks (OpenAPI) — ✅ PASSED

Result: ✅ PASSED

Action log

@github-actions

Copy link
Copy Markdown
Contributor

Coverage

Coverage Report •
FileStmtsMissCoverMissing
openhands-agent-server/openhands/agent_server/docker
   build.py58813078%101, 104–105, 119, 124, 128–130, 134, 139, 156–161, 164, 187, 189, 197, 199–200, 202–206, 208, 212, 215, 218–221, 223–225, 227, 229, 231, 233, 250, 349–350, 354–355, 359–360, 364–365, 378, 380–388, 511, 525, 531–532, 550, 556, 576–577, 579, 655, 669, 672, 676–677, 681–682, 686, 702–704, 707, 713–716, 726, 741, 762, 792, 811–812, 816–818, 872, 983, 993–994, 1175–1177, 1181–1182, 1185, 1202–1207, 1209–1210, 1212–1214, 1217–1218, 1223, 1227, 1273–1275, 1277–1278, 1280–1284, 1297
TOTAL431751798458% 

@neubig
neubig marked this pull request as ready for review September 15, 2026 22:18

@enyst enyst left a comment

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.

Reviewed fd8651c. No actionable correctness or compatibility findings.

Validated the minimal build target and omitted extras, existing variant behavior, and matching architecture tags without cross-variant collisions for main and release builds. The 76 focused Docker-build and build-metadata tests passed locally. Both python-minimal image builds and the multi-architecture manifest job passed in CI. I did not run the published container locally.

The PR-description check still fails independently of the code review. Its errors require the first visible line to be HUMAN:, a human-written note before AGENT:, the AGENT: marker, ## How to Test, and a linked issue under ## Issue Number (new issues require ready-for-dev). A human contributor needs to supply the HUMAN note.

Approval follows the repository's code review guide.

@neubig
neubig merged commit 8224a0a into main Sep 15, 2026
56 of 57 checks passed
@neubig
neubig deleted the feat/publish-python-minimal branch September 15, 2026 23:50
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.

3 participants