Default path assignment
| Service type | Path prefix |
|---|---|
web | / |
api | /api/ |
| other | /<name>/ |
full-stack app with a web and api service gets:
https://full-stack.on.getfloo.com/→webhttps://full-stack.on.getfloo.com/api/→api
web service is the catch-all — any path not matched by a more specific prefix falls through to it.
Why same origin matters
All services share one hostname, so cookies and session tokens set by theweb service are visible to the api service without any cross-origin configuration. No CORS headers needed for same-origin requests.
If you separate services onto different domains, you’ll need to configure CORS and handle cross-origin cookie restrictions.
Per-service debug hostnames
Each service also gets its own hostname for direct access:Custom domains
Add adomain field to a service in floo.app.toml to bind a custom domain to that service:
api.example.com goes directly to the api service, bypassing the shared hostname routing.
See Custom Domains for DNS setup.
Local development
Duringfloo dev, each service runs on its own localhost port. Discovery vars (API_URL, WEB_URL, etc.) are injected so services can find each other without hardcoding ports.
See floo dev for the full local dev reference.