Add a staging environment
Goal: Have a production environment and one or more non-production environments (staging, dev, QA, preview-something) inside the same project. Each environment runs independent apps, databases, env vars, and custom domains.
Prerequisites:
- A project on Dev tier or higher. Hobby is prod-only.
- The project already has its auto-created
prodenvironment.
- Open the project detail page.
- Click + Add env in the environment selector next to the
prodpill. - Type a name (e.g.
staging). Names are lowercase, 1–32 chars,[a-z0-9-]. The namesprod,api,admin,auth,wwware reserved. - Click Create. A new env pill appears; you are switched to it automatically.
- From the staging env, create apps, databases, and env vars as usual. They are independent of prod. App and database caps (
Max apps/Max DBsin your plan) are counted across all your projects and environments combined — adding a staging env does not double your app cap. - Staging apps serve at
{slug}-staging.run.uploy.eu(prod apps keep the bare{slug}.run.uploy.eu).
Tier caps
Section titled “Tier caps”| Tier | Max environments per project |
|---|---|
| Hobby | 1 (prod only) |
| Dev | 2 |
| Pro | 3 |
| Business | 3 |
Hitting the cap returns 402 tier_quota_exceeded in the dialog with an upgrade prompt.
Non-prod resources
Section titled “Non-prod resources”Apps in non-prod environments run at half the CPU and memory request of prod. Limits are unchanged — an app can still burst to its full ceiling when needed. This keeps flat-tier pricing viable when running prod + staging + dev side-by-side. You do not need to configure anything; it is automatic.
Delete an environment
Section titled “Delete an environment”- Remove all apps and databases from the environment first (otherwise you’ll get 409 env_not_empty).
- On the env settings panel, click Delete.
- The k8s namespace is destroyed; the env row is removed.
Prod cannot be deleted. Delete the project if you want to start over.
Limitations (MVP)
Section titled “Limitations (MVP)”- No clone-from-prod on env create.
- No project-level shared env vars — each env owns its full list.
- No env rename — delete + recreate.
- No cross-env DB attach — an app in
stagingcannot attach to a DB inprod. - No env var reference syntax (
${{ prod.API_URL }}).
These are tracked follow-ups.