/settings/registry-credentials):
- Container registries are where your images are pulled from. A credential here is a username and a password or token.
- Package registries are where a build installs dependencies from. A credential here is mounted into the Dockerfile build as a secret.
Container registry vendors
Each vendor tile opens a dialog you can deep link to, for example/settings/registry-credentials?connect=ghcr. The preset pre-fills the host, names the auth method and lists the scopes the token needs. Test connection authenticates the typed credential against the registry and stores nothing. Save credential stores it, encrypted at rest and never shown again.
ECR tokens last 12 hours. The preset records a 12 hour expiry so the existing expiry reminder fires, but the control plane does not refresh the token itself yet: re-issue it with the CLI before it lapses.
The table lists which services pull with each credential.
add reads the password from stdin or a no-echo prompt when --password is omitted. Every command takes --json.
Package registries for builds
A package registry credential holds an ecosystem, a URL, an optional username and a token. It applies to every build, one project or one app, and the narrowest scope wins when two registries share an ecosystem.
The files reach the build as BuildKit secret mounts, so they are never part of an image layer or the build cache key. Mount the one you need in your Dockerfile:
GOPROXY, GOPRIVATE) are passed as build args. The secret values are masked in build progress and logs before they are recorded in the deploy history.
Limits
- Secret mounts apply to Dockerfile builds on the control plane. A build dispatched to a remote build node fails with a clear error instead of building without credentials, and Railpack and pipeline
build-onlysteps do not receive them yet. The wiring points areinternal/build/router.go(Router.Build),internal/build/remote.go(RemoteRequest) andinternal/deploy/build_only.go. - There is no automatic token rotation reminder. Rotate by deleting and re-adding the registry.
Access
Listing and reading usage needsread. Adding, testing and removing credentials needs write:sensitive. Credential values are never returned by the API.