Skip to content
This page is a translation of the authoritative Chinese source and may lag behind.View the original

Image tags and architectures ​

The official image is published to ghcr.io/gatellm-io/gatellm. This chapter covers three things: which tags exist and when to use each; which CPU architectures the image supports and how they are selected on pull; and what those -amd64 / -arm64 suffixed tags on the GHCR package page are, and whether you should use them.

Tag semantics and when to use them ​

tagmeaningwhen to use
vX.Y.Zimmutable, corresponds to one formal releaserecommended for production — reproducible and rollback-able
latestfloating, always points at the newest formal releasetrialing, single-node, non-strict environments
sha-<sha7>immutable, corresponds to a specific git commit (7-char short sha)tracing a binary back to source, troubleshooting

⚠️ Do not use latest in production: it is a floating tag, so a restart or scale-out can pull a different version, and a failure can neither be reproduced nor rolled back to a known target. Pin vX.Y.Z; for absolute immutability pin further to @sha256:<digest> (see below).

Supported architectures ​

The official image is a multi-arch OCI index, so docker pull auto-resolves the architecture for your host with no extra flags:

platformcoverage
linux/amd64x86_64: Intel / AMD servers, Docker Desktop on Windows, Intel Mac
linux/arm64aarch64: Kunpeng / Phytium / AWS Graviton / Ampere, Apple Silicon

docker / containerd / Kubernetes / podman / nerdctl all select automatically from the OCI index's platform field, so the same docker pull ghcr.io/gatellm-io/gatellm:latest fetches arm64 on an ARM server and amd64 on an x86 server.

Architectures not published: armv7, ppc64le, s390x, loongarch64 (Loongson), etc. Pulling on these platforms reports:

no matching manifest for linux/<arch> in the manifest list entries

This is a hard limit — only linux/amd64 and linux/arm64 are published.

When you need to pin an architecture explicitly ​

Usually you don't. But for cross-arch builds, image mirroring, or air-gapped environments, you can pin precisely two ways:

bash
# Option 1: --platform picks the platform
docker pull --platform linux/arm64 ghcr.io/gatellm-io/gatellm:latest

# Option 2: @digest pins to an exact manifest (absolutely immutable)
docker pull ghcr.io/gatellm-io/gatellm@sha256:<digest>

⚠️ Don't pin linux/amd64 on an ARM host: the pull succeeds (the manifest exists), but the container fails to start with exec format error — the binary is x86 instructions that the ARM CPU can't execute without an emulation layer like QEMU / Rosetta. Likewise, don't pin linux/arm64 on an x86 host.

Historical -amd64 / -arm64 suffixed tags ​

Releases up to v0.2.0 used to additionally list v0.2.0-amd64, v0.2.0-arm64, latest-amd64, and similar suffixed tags on the GHCR package page — intermediate artifacts from the earlier build pipeline: the two architecture legs each pushed an addressable intermediate tag (<tag>-<arch>) for the merge step to reference, byte-identical to the same-platform slice of the corresponding multi-arch tag.

Those suffixed tags, along with the v0.2.0 image, were cleaned up in 2026-09. The package page now keeps only the final multi-arch tags: just use vX.Y.Z / latest directly; to pin an architecture use --platform or @digest above.

The build pipeline now pushes intermediate images to a private staging repo, leaving only the final multi-arch tag in the public package, so new releases no longer produce these suffixed tags.

Offline / air-gapped transfer ​

docker save only exports the single image your local daemon resolved — the one architecture you pulled — losing the multi-arch index. Two correct approaches for offline environments:

bash
# Option 1: pull per-platform first, then save (yields a single-arch tar)
docker pull --platform linux/arm64 ghcr.io/gatellm-io/gatellm:latest
docker save ghcr.io/gatellm-io/gatellm:latest -o gatellm-arm64.tar

# Option 2: skopeo copy --all preserves the full index (for syncing to a private registry)
skopeo copy --all docker://ghcr.io/gatellm-io/gatellm:latest docker://registry.example.com/gatellm:latest

⚠️ These examples use latest to keep the mechanics readable — for a real mirror, pin vX.Y.Z (or @sha256:<digest>) so the synced image is reproducible and rollback-able.

Verification commands ​

bash
# See whether a tag is a multi-arch index (lists all platforms)
docker buildx imagetools inspect ghcr.io/gatellm-io/gatellm:latest

# See which architecture actually landed in your local daemon
docker image inspect gatellm --format '{{.Architecture}}'