web-3f9a2c1.apps.example.com. The address never changes and never
points at a newer release, so you can open an older deploy next to the live one.
The deploy history shows a Visit button on each of them, and the live deploy
keeps answering on the app’s own URL.
How it works
For each kept deploy the control plane runs a retained copy of that deploy’s pinned image with its recorded config. A retained copy has no volumes, host ports, hooks or automatic rollback, and it sleeps afterAPP_DEPLOY_URL_IDLE_MINUTES without traffic (default 5), then wakes on the
first visit, so old deploys do not run idle.
The hostname is one label under the apps base domain. Without a base domain it
falls back to the sslip.io address of the control plane’s public IP. With
neither, no URLs are created.
Retention
A deploy only keeps a URL while its image can still be redeployed: it needs a
registry digest or a rollback pin. Rollback pins and image cleanup are not
changed by this feature.
A retained copy runs the old code with the app’s env, so jobs and webhooks of an
old deploy can fire while it is awake. It does not get the app’s volumes.