Registries and credentials
The registry belongs to the app. Public: the console resolves the tag to a digest itself and checks that the digest you give, if any, matches. Private: the console never pulls, so you paste the digest and every supervisor verifies the manifest and each layer against it.
# what to paste into a release from a private registry
fleetwide digest ghcr.io/acme/my-app:1.4.2
# a multi-platform tag prints the index digest: one release, every architecture
# or, with Docker:
docker buildx imagetools inspect ghcr.io/acme/my-app:1.4.2 --format '{{json .Manifest.Digest}}'Containers pull layers straight from your registry. A login they need lives on the fleet, under its Credentials tab, and is delivered over mTLS only to that fleet’s containers. Four kinds: a registry login (username and password or token for one registry host), AWS ECR and Google Artifact Registry (one per fleet, matching every registry of that cloud), and a git token for one git host, used for git-sourced assets. A secret you store is encrypted at rest and never shown again; or leave it on the customer side and name the container environment variable the supervisor reads it from.
Amazon ECR and Google Artifact Registry log in with what the container already has: a task, instance or IRSA role, Workload Identity or the node service account. Record that as the credential’s mode and nothing is stored; or give the supervisor an access key or a service-account key and it exchanges it for a registry login itself. A mounted Docker config (~/.docker/config.json) works too. The fleet page says which hosts still need a login before a release can be pulled.

Advanced registry options. Under Advanced on the app (and on an asset item) a registry can be marked plain HTTP, for a local or air-gapped relay with no TLS, or skip TLS certificate verification, for a registry with a self-signed certificate. Both apply to every release of the app and are carried to the supervisor with the release; a release can also set them on its own. Neither affects how layers are verified: every pull still checks each layer against the release's digest.
