Relationships
#4051 push (Apple Containers) makes an index whose platform manifest is unpullable on Forgejo
Opened by dmc · 10/27/2026
Summary
push with the Apple Containers runtime makes an image that cannot be pulled from a Forgejo (Gitea) registry. The tag resolves to the image index, but the platform manifest that the index points to returns 404 MANIFEST_UNKNOWN.
Cause
push runs container image push <ref>. Apple's containerization library pushes every descriptor with the same ref: tag (ImageStore+Export.swift: client.push(name: name, ref: tag, descriptor: descriptor, …)), so the child manifest goes to PUT /v2/<name>/manifests/<tag> and then the index goes to the same tag. Docker, buildah, skopeo and crane push child manifests by digest.
Forgejo keeps one package version per tag, so the index push replaces the child manifest, and the child manifest is no longer addressable by digest. A registry that keeps replaced manifests by digest (Docker Hub, distribution) hides the problem.
container image push --platform linux/amd64 does not help: it still pushes an index.
Reproduce
buildwithplatform: linux/amd64and tagforgejo.example/owner/repo/image:testing.pushthat image (Apple Containers runtime).skopeo inspect --raw docker://forgejo.example/owner/repo/image:testing→ an OCI index with onelinux/amd64manifestsha256:X.GET /v2/owner/repo/image/manifests/sha256:X→404 {"errors":[{"code":"MANIFEST_UNKNOWN"}]}.podman pull/bootc switchfail withreading manifest sha256:X … manifest unknown.
Versions: swamp 20261027.021509.0, @swamp/container-image 2026.10.22.1, Apple container 1.5.0, Forgejo 16.0.6.
Workaround that works
container image save --platform linux/amd64 -o image.tar <ref>
skopeo copy --multi-arch all oci-archive:image.tar docker://<ref>skopeo pushes the child manifest by digest and the index to the tag. The digests do not change, and the image pulls.
Request
For the Apple Containers runtime, make push give a pullable result on registries like Forgejo. For example, route it through image save + skopeo copy (when skopeo is present), or add an option for that path.
Upstream repository: https://github.com/swamp-club/swamp-extensions
Environment
- Extension:
@swamp/container-image@2026.10.22.1 - swamp:
20261027.021509.0-sha.f96841b5 - OS:
darwin(aarch64) - Deno:
2.9.8 - Shell:
/bin/zsh
Open
No activity in this phase yet.
system commented 10/27/2026, 10:05:17 PM
Classified automatically when this issue was filed.
- Source: Extensions
If you feel this classification is incorrect, add a ripple to tell us so.
Sign in to post a ripple.