Every floo app gets a default URL on *.on.getfloo.com. You can add your own domain with automatic SSL.
Add a domain
floo domains add myapp.com --app my-app
Domain added: myapp.com
Status: pending
Configure DNS:
CNAME myapp.com → my-app.on.getfloo.com
Add a CNAME record at your DNS provider:
| Type | Name | Target |
|---|
| CNAME | myapp.com | my-app.on.getfloo.com |
For apex domains (e.g., example.com without www), use your provider’s CNAME flattening or ALIAS record feature.
Verify DNS
Once your CNAME record is in place, verify ownership from the CLI or the dashboard:
floo domains verify myapp.com --app my-app
Or click Verify DNS on the pending domain in the dashboard.
Floo checks that your CNAME resolves to the correct gateway host. Once verified:
- Domain status changes to active
- SSL is provisioned automatically
- Org admins receive a confirmation email
The dashboard auto-polls pending domains every 30 seconds, so the status will update on its own once DNS propagates.
DNS changes can take up to 24 hours to propagate, but most providers update within minutes.
Check status
floo domains list --app my-app
Domains for my-app:
myapp.com active CNAME → my-app.on.getfloo.com
Per-service custom domains
For multi-service apps, you can bind a custom domain to a specific service by adding domain to floo.app.toml:
[services.api]
type = "api"
path = "./api"
port = 8000
ingress = "public"
domain = "api.example.com"
Then add it via the CLI with --services to bind it to the service, and configure DNS:
floo domains add api.example.com --app my-app --services api
The CNAME target is the per-service hostname:
| Type | Name | Target |
|---|
| CNAME | api.example.com | my-app-api.on.getfloo.com |
A custom domain on a service overrides path-prefix routing — traffic to api.example.com goes directly to the api service. The app’s access_mode still applies on the custom domain.
Remove a domain
floo domains remove myapp.com --app my-app
For agents
# Add domain and get DNS instructions
floo domains add myapp.com --app my-app --json 2>/dev/null | jq '.data'
# Verify after user configures DNS
floo domains verify myapp.com --app my-app --json 2>/dev/null | jq '.data'
# Check domain status
floo domains list --app my-app --json 2>/dev/null | jq '.data.domains'
JSON output:
{
"hostname": "myapp.com",
"status": "pending",
"dns_instructions": "CNAME my-app.on.getfloo.com"
}