Locations & replicas
A service runs in one or more locations — the places in the world its replicas run — and each location carries its own replica count. This page covers where locations come from, adding and removing them, and how traffic reaches a service that runs in several.
What a location is
A location is a cloud region Koo's hosting layer runs in. Its id names the cloud provider and that provider's region code — aws-us-east-2, for example — and the console shows each one as the provider plus the region code.
Your account has a set of enabled locations. Every environment offers that same set, and each service picks its own subset — locations belong to the service, so two services in the same environment can run in different places.
Add or remove a location
- Click the service's node on the environment canvas and go to its Settings tab.
- Under Locations & replicas, click Add location.
- Pick a location and the replica count it starts with, then confirm.
- To drop a location, click the × on its row and confirm Remove location — its replicas drain before teardown.
- Press Deploy on the changes bar (Shift+Enter).
Location edits are staged changes — nothing moves until you deploy.
Replicas per location
Each location row carries its own replica count — a fixed number, not an autoscaling range. Every replica runs at the service's CPU and memory; see Resources & scaling for sizing and the per-location replica ceiling your plan sets.
For a serverless service the count is the scale ceiling — it scales from zero up to that many replicas in each location; see scale to zero. A cron service has no replica count: it runs one instance per location on each tick.
Single-location services
Databases always run in exactly one location, with exactly one replica — see Postgres. A web service with a persistent volume is pinned to one location too, because the disk lives there.
For these, the Locations & replicas card shows one pinned row with a Change button that swaps the location. Data does not travel with it: moving a volume service destroys the disk's data — the volumes page covers that warning — and moving a database leaves its stored data behind, so the database starts empty in the new location.
Plan limits
Running a service in more than one location requires a paid plan, and each plan caps how many locations a single service may run in — the numbers are on usage and limits.
At your plan's cap, the console stops offering Add location and names the plan that lifts the cap. The API rejects a write over the cap with a quota_exceeded error naming that plan.
How traffic reaches your service
A service has one public URL no matter how many locations it runs in. Each request is routed to the nearest location, so visitors reach the replicas closest to them.