Every fleet pulls the images of the services Streamtime installs and of your workloads. By default they come from public registries, and each fleet keeps a local cache so a node pulls an image from the internet once.
Two things you can bring:
What it does
Where
A private mirror registry
Streamtime copies the images it needs into your registry, and fleets pull from there. For air-gapped or controlled environments
Settings → Container Registry (root organization), or first-time setup at Image Registries
Registry credentials
Streamtime tracks new versions of the packages it installs, and needs read access to GitHub Container Registry and Quay.io for it (Docker Hub is optional). The same credentials pull artefacts in private and air-gapped installations
First-time setup, Image Registries
Before you start
Mirror: the registry’s address (host and optional port), and a username and token if it needs them. For registries such as GHCR that only accept pushes under a path you own, the Destination namespace (for example your-org). Not needed for ECR.
GitHub Container Registry: a classic personal access token with the read:packages scope.
Quay.io: a robot account with read access; its username is orgname+robotname.
packagemainimport("bytes""crypto/rand""encoding/hex""encoding/json""net/http""os")constapi="https://api.example.com/organizations/<org>"// newKey returns a random idempotency key.funcnewKey()string{b:=make([]byte,16)rand.Read(b)returnhex.EncodeToString(b)}// call sends one request with the access token and a JSON body (or none).// An optional idempotency key is sent as the Idempotency-Key header.funccall(method,pathstring,bodyany,idempotencyKey...string)(*http.Response,error){varbufbytes.Bufferifbody!=nil{iferr:=json.NewEncoder(&buf).Encode(body);err!=nil{returnnil,err}}req,err:=http.NewRequest(method,api+path,&buf)iferr!=nil{returnnil,err}req.Header.Set("Authorization","Bearer "+os.Getenv("STREAMTIME_TOKEN"))req.Header.Set("Content-Type","application/json")iflen(idempotencyKey)>0{req.Header.Set("Idempotency-Key",idempotencyKey[0])}returnhttp.DefaultClient.Do(req)}
Set up a mirror registry
Go to Settings → Container Registry.
Enter Registry URL, and Username (optional) and Password / Token (optional) if the registry needs them. Add a Destination namespace (optional) for registries that need one.
Select Test Connection. It shows Connected successfully. when Streamtime can sign in.
Save, then select Sync Now to copy the images into your mirror. The copy runs in the background; this page doesn’t show its progress yet.
# Validates the credentials, then saves them.
curl -X POST "$API/container-registry/"\-H"Authorization: Bearer $STREAMTIME_TOKEN"-H"Content-Type: application/json"\-d'{"container_registry_url": "mirror.example.com",
"container_registry_username": "<user>",
"container_registry_password": "<token>",
"container_registry_namespace": "your-org"}'# Copy the images into the mirror.
curl -X POST "$API/container-registry/sync/"\-H"Authorization: Bearer $STREAMTIME_TOKEN"
GET $API/container-registry/ shows the saved settings (not the password); DELETE removes them.
Not available in the CLI yet. Use the console or the API.
Not available in MCP.
Registry credentials
In first-time setup, at the Image Registries step, enter the Username and Token / Password for GitHub Container Registry (GHCR) and Quay.io, and optionally Docker Hub. Each section explains how to create the credential.
Optionally fill in Container Image Mirror Registry (optional), the same mirror as above.
Check and continue.
Set during first-time setup only; there is no published API for it yet.