Skip to content

feat(docker): fall back to the GitHub release image when a registry i… - #7

Merged
thunderock merged 1 commit into
mainfrom
docker-image-github-release-fallback
Jul 6, 2026
Merged

thunderock merged 1 commit into
mainfrom
docker-image-github-release-fallback

Conversation

@thunderock

Copy link
Copy Markdown
Owner

…s unreachable

The agent-image pre-pull runs inside the Docker daemon, so it fails for ANY registry (Docker Hub, GHCR) when the daemon lives in a VM with no internet egress — e.g. a Colima/Lima VM whose virtual network a corporate VPN doesn't route. Retrying or switching registries can't help. Add a host-side fallback: the host (which does have network) downloads the image tarball from the GitHub release and docker loads it into the daemon over the socket, which needs no VM egress.

  • electron/ipc/docker-pull.ts: acquireAgentImage() fallback chain (cached -> docker pull -> GitHub-release download + docker load -> local build) plus downloadAndLoadReleaseImage() with sha256 verification and pinned->latest URL fallback
  • electron/ipc/pty.ts: wire the chain in for the default image; replace the terse pull error with a VM-egress diagnostic
  • .github/workflows/release.yml: build the agent image on native runners and attach per-arch forge-agent-.tar.gz + .sha256 to each release
  • docker-pull.test.ts: cover chain ordering, download, checksum mismatch, and 404->latest fallback

…s unreachable

The agent-image pre-pull runs inside the Docker daemon, so it fails for ANY registry (Docker Hub, GHCR) when the daemon lives in a VM with no internet egress — e.g. a Colima/Lima VM whose virtual network a corporate VPN doesn't route. Retrying or switching registries can't help. Add a host-side fallback: the host (which does have network) downloads the image tarball from the GitHub release and `docker load`s it into the daemon over the socket, which needs no VM egress.

- electron/ipc/docker-pull.ts: acquireAgentImage() fallback chain (cached -> docker pull -> GitHub-release download + docker load -> local build) plus downloadAndLoadReleaseImage() with sha256 verification and pinned->latest URL fallback
- electron/ipc/pty.ts: wire the chain in for the default image; replace the terse pull error with a VM-egress diagnostic
- .github/workflows/release.yml: build the agent image on native runners and attach per-arch forge-agent-<arch>.tar.gz + .sha256 to each release
- docker-pull.test.ts: cover chain ordering, download, checksum mismatch, and 404->latest fallback
@thunderock
thunderock merged commit 4427fef into main Jul 6, 2026
1 check passed
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.

1 participant