Skip to main content
Two different things live under Settings > Registry credentials (/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:
Only non-secret values (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.
Test makes one authenticated request to the URL and reports whether it was reachable and accepted the credential.

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-only steps do not receive them yet. The wiring points are internal/build/router.go (Router.Build), internal/build/remote.go (RemoteRequest) and internal/deploy/build_only.go.
  • There is no automatic token rotation reminder. Rotate by deleting and re-adding the registry.

Access

Listing and reading usage needs read. Adding, testing and removing credentials needs write:sensitive. Credential values are never returned by the API.
Last modified on October 15, 2026