Core Concepts
The words the dashboard uses, and what each one means for your apps.
The words the dashboard uses, and what each one means for your apps.
Workspace
A workspace holds your applications, your teammates, your integrations and your
bill. It has a name and a short URL name — its slug (acme) — and its dashboard
lives at cloady.com/w/acme.
One workspace covers every region and every environment; there is nothing to set up per location. Everyone you invite sees every app in it, and one subscription covers all of them (Capacity and price).
Application
An application — "app" in the dashboard — is one thing you have deployed: a WordPress site, a Node API, a Postgres database. It has a URL, logs, variables, storage and a deployment history, and you start one from three places:
- Catalog — a ready-made app (WordPress, Postgres, n8n, …): pick it, name it, deploy.
- GitHub — one of your repos, built by Cloady and redeployed when you push.
- Upload — a folder or zip from your machine.
What an app is made of — its services and its volumes — is fixed when you create it. There is no upgrade onto a newer catalog release; deploy a fresh app and migrate.
Each app lives in one region and one environment, both chosen when you create it,
and its name is unique inside your workspace and environment — so blog in production
and blog in preview are two different apps, with their own data and their own URLs.
Renaming an app changes its URL, because the address follows the name. The change takes effect immediately and nothing else moves: data, variables and custom domains stay put, so you only have to update whatever linked to the old address. (For apps built from your own code, deployments made before a rename can no longer be rolled back to.) Deleting an app deletes its data permanently — never delete an app in order to rename it.
Services and endpoints
- A service is one container inside an app — a WordPress app has two, the site and its MySQL. Each appears on its own in Settings → Services, with its own logs, shell and restart button.
- An endpoint is a port a service listens on, plus its protocol. A published port is
reachable from the internet; a port exposed only internally is reachable by the app's
other services, by service name. Web ports get an
https://URL; database and game ports are raw TCP or UDP and get a host and a port number.
An app has one public hostname, answered by its primary endpoint — the first HTTP endpoint it declares, or its first TCP endpoint if it declares none. Other services get no hostname of their own; reach them from inside the app by service name. When an app publishes a TCP or UDP port alongside a website, connect to that port using the IPv6 address shown on the app's page.
Region
A region is where an app runs — today usw1 (US West), use1 (US East), eu1
(Germany) and sin1 (Singapore). You pick one when you create the app, and can move it
later with Transfer in the app's danger zone; an app with volumes is down while its
data copies to the new region. Apps do not fail over between regions; if you need one
in two places, deploy it twice.
There is nothing to switch on first. A new workspace can deploy to any region right away, free or paid. One error stops a deploy on those grounds:
payment_required— the app would take the workspace past its free allowance and there is no card on file, or the card was declined. Add one in workspace Settings → Billing, or make the app smaller.
The first app in a quieter region shows Provisioning capacity for a few minutes while a machine is brought up. If none arrives the deploy fails; retry, or choose another region.
Capacity and price
You never pick a plan. A workspace's apps declare what they need — the limits in their compose files, multiplied by the scale you choose — and the total is priced on four plans:
| Plan | vCPU | RAM | SSD | Price / month |
|---|---|---|---|---|
| Small | 1 vCPU | 2 GB | 50 GB | $6.00 |
| Medium | 4 vCPU | 8 GB | 200 GB | $20.00 |
| Large | 10 vCPU | 44 GB | 600 GB | $65.00 |
| Max | 16 vCPU | 92 GB | 1 TB | $120.00 |
- The total lands on the smallest plan that covers all three resources and is priced between that plan and the one below it. Reaching a plan's limits exactly costs that plan's price; anything in between costs in between, so the bill never jumps at a boundary and asking for more never costs less.
- Prices are the same in every region. Nothing is metered — you pay for what your apps declare, not for what they use.
- A workspace whose apps fit inside 0.5 vCPU, 1 GB of RAM and 5 GB of SSD pays nothing. It is a threshold, not a discount: once any one resource goes past it, the whole workspace is billed.
- Increases are charged straight away for the rest of the period, and a declined card blocks the change rather than granting it. Decreases take effect at your next renewal, so you keep what you already paid for.
Environment
Every app is in one of three environments — production, preview or development:
- Names do not collide across them: production
blogand previewblogare separate apps. - They all draw from the workspace's single pool, and count toward one bill.
- Preview and development apps carry the environment in their hostname.
- Apps in
developmentdo not redeploy on a push unless you turn that on; production and preview do by default.
Region and environment are part of the dashboard URL
(cloady.com/w/acme/hil1/production/a/blog); the switcher at the top changes which set
of apps you are looking at.
Domain
A domain is a hostname pointing at an app, managed in Settings → Domains:
- Built-in — the
cloady.iohostname every app gets. HTTPS is set up for you. - Custom — a hostname you own. Add it, then create the DNS record the panel shows: a CNAME to the built-in hostname for a subdomain, or the A and AAAA records it lists for a bare apex, which cannot be a CNAME. Once DNS resolves, Cloady gets a Let's Encrypt certificate for it; the panel tracks it as queued → pending → issued, and shows failed with a reason if the record never resolved.
One domain is marked primary — that is the one the Open button uses.
Resources and scaling
A workspace's usage is the sum of what its apps declare. There is no capacity to buy up front and no ceiling to run into.
Each service runs with a CPU and a memory limit — whatever the app declares, or 0.5 vCPU and 1 GB when it declares nothing. Settings → Resources scales those per app, from 0.25× to 4× in quarter steps, CPU and memory separately, and what an app costs is the sum of its services' limits at the current scale.
When you deploy a new app or scale one up, Cloady adds its limits to everything already
deployed and prices the new total before anything is created. Inside the free allowance
nothing is charged. Beyond it, the card on file is charged for the difference; with no
card, or a declined one, you get payment_required and nothing changes. The scale
form shows the monthly difference before you save.
Storage behaves differently from CPU and memory. Volume sizes are set per volume in Settings → Resources, the scale factor never touches them, and a volume can grow but never shrink — the new size applies when you save and cannot be undone. Settings → Volumes is where you browse a volume's files and see how full it is.
URLs
Cloady uses two domains: cloady.com for the dashboard, where workspaces are paths
(cloady.com/w/acme), and cloady.io for your deployed apps.
An app's hostname is its name, a short unique code, and the workspace name. Preview and
development add the environment; regions other than hil1 add the region:
my-blog-k7q2v9ze-acme.cloady.io production · hil1
my-blog-k7q2v9ze-acme.preview.cloady.io preview · hil1
my-blog-k7q2v9ze-acme.eu1.cloady.io production · eu1
my-blog-k7q2v9ze-acme.preview.eu1.cloady.io preview · eu1The first part is the app's slug, editable in Settings → General. It follows the app's name until you set it yourself; after that it stays put, and renaming the app no longer changes the URL.
Environment variables
Settings → Environment holds the variables your app's services see. Values marked
secret are hidden after saving and can be revealed one at a time, and you can paste a
.env file to import many at once. A change takes effect on the next deploy —
saving a variable does not restart what is already running, so use Redeploy to apply
it right away.
Cloady sets a few itself, which you can reference from your own values with ${...}:
| Variable | Value |
|---|---|
CLOADY_PRIMARY_URL | https:// plus the app's hostname |
CLOADY_PRIMARY_HOST, CLOADY_DOMAIN | the app's hostname |
CLOADY_WORKSPACE, CLOADY_SVCID | the workspace slug, the app's slug |
CLOADY_HOST_<SERVICE> | the in-app address of another service |
Next: see the Dashboard Guide for working in the UI, or the API Overview to drive Cloady programmatically.