Repository navigation
feat(agents): alias OpenHands and publish pi's and OpenHands' images - #308
Merged
Merged
Conversation
OpenHands gets the alias `openhands`, as Claude Code and pi have theirs. The agent images a release publishes are now one per agent folder in the agents bundle, so pi's and OpenHands' are built, checked and published to GHCR with Claude Code's, and a deploy pulls them by digest instead of building them. Since a release no longer pins an agent's protocol requirement, each of the three is built again only when its folder changes; OpenHands' requirements.txt explains its floor as the other two do. infra_build.py's allowlist and smoke checks gain both: pi runs its CLI and imports its server, OpenHands imports its server, which loads the OpenHands SDK. Dependabot bumps their base images too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
earakely-scale
force-pushed
the
feat/agents-openhands-alias-ghcr
branch
from
October 22, 2026 21:30
31f881e to
c13cb5a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #281 (OpenHands) and #288/#293 (publishing and pulling the Claude Code agent's image).
Alias.
aliases.tomlgives OpenHands the aliasopenhands, so a task names it asopenhandslikeclaude-codeandpi.pi and OpenHands images on GHCR.
AGENT_IMAGESinpublished_images.pyis now one image per agent folder in the agents bundle (agentenv-<folder>) instead of a hand-kept list holding only Claude Code. A release builds, checks and publishesagentenv-piandagentenv-openhandswithagentenv-claude-code, for linux/amd64 and linux/arm64, after the protocol is on PyPI (their requirements already get the release's protocol pin). A deploy pulls them by digest, as feat(bundle): pull the shipped agent's published image instead of building it #293 does for Claude Code.infra_build.py, which the jobs that hold the push token run without agent-env, gains both in its allowlist and its smoke checks: pi runspi --versionand imports its server, OpenHands imports its server, which loads the OpenHands SDK. The existing tests require exactly that: the allowlist must equal the published images, and every image but service-db needs a smoke check. A future agent folder fails CI until it has both.published_images_testnow checks every shipped agent folder's Dockerfile is published, not only Claude Code's.Built only when they change (#309). Rebased on #309, which stops a release from pinning an agent's protocol requirement, so a published agent image is built again only when its folder changes. That applies to pi's and OpenHands' images as soon as this publishes them: pi's floor is
>=0.1.305(from #309) and OpenHands'>=0.1.351, whoserequirements.txtnow explains the floor as the other two do. The README line that still said Claude Code's image is built "with the protocol pinned" now says it's built again only when its folder changes.Simulated two releases on this branch (protocol 0.1.400, then 0.1.401), with each source tag computed after the release's pin step:
dcd20d2f4796221d399d13e556e4c5440305The pin step rewrote only the echo-mcp example env's requirements, as #309 intends.
Docs: AGENTS.md, CONTRIBUTING.md and the agents README say the shipped agents' images are published, not only Claude Code's, and name pi and OpenHands by their aliases.
Checked
a2a-agent listtests, the agents' own tests).infra_build.py smokepasses on each:pi --versionprints 1.1.0, and both servers import and build their agent cards.After the release: v0.9.1349 published
agentenv-piandagentenv-openhands, and both pull anonymously, likeagentenv-claude-code: no admin step was needed. The 0.9.1349 wheel records their digests.🤖 Generated with Claude Code


Confidence Score: 5/5
The PR appears safe to merge.Summary
Adds the
openhandsalias and publishes images for all three shipped agents.openhands.Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Shipped agent folders] --> B[Discover published images] B --> C[Build and check amd64 and arm64] C --> D[Publish multi-platform images] D --> E[Record image digests in release wheel] E --> F[Deploy matching agent sources] F --> G[Pull by digest] G -->|Pull fails| H[Build from saved context]Reviews (2) · Last reviewed commit: "feat(agents): alias OpenHands and publis..." · Reviewed by Greptile