Guides
Domains
Keep the project Default URL, optionally add a Robodev URL, and serve the app on one or more custom subdomains.
Every project always keeps https://{projectId}.robodev.povio.dev (locally {id}.localhost:4000) as the Default URL. That host is the API URL the CLI and generated clients use. From project Settings, a project admin can set a Robodev URL and an organization admin can add custom subdomains, as many as needed. The App URL prefers the primary custom domain, then the Robodev URL, then the project id host. Auth magic-link and forgot-password emails use the App URL. The dashboard shows the App URL on Overview, MCP, APIs, Logs and Connect; Settings keeps the Default URL.
Robodev URL
- Optional, globally unique, 3–63 characters: lowercase letters, digits, and hyphens.
- Serves the app at a host like https://acme.robodev.povio.dev. This is not a customer CNAME.
- Reserved names such as www, api, storage, and cname are rejected. Names starting with prj- are rejected.
- Remove the Robodev URL in Settings to drop that host.
Custom subdomains
Add a hostname such as www.example.com. Names like example.com are not supported yet — use a subdomain. A project can have several custom domains; adding one never replaces another. Starbase does not serve or issue TLS for a hostname until its DNS is verified, and every verified domain serves the app (there are no redirects between them).
- Create a CNAME whose name is the relative host (www for www.example.com) and whose value is cname.robodev.povio.dev. Some providers want the full hostname.
- Click Check DNS in Settings. Starbase follows the CNAME chain until it reaches cname.robodev.povio.dev or {projectId}.robodev.povio.dev.
- A new domain is not live until Check DNS succeeds. Removing a domain stops the app serving on it; DNS at your provider is unchanged.
- Organization members can view the domains and their DNS records; only organization admins can add, verify, make primary or remove them.
Primary domain
- Exactly one verified domain is the primary, and it is the App URL. Pending domains never become the App URL.
- The first domain to pass Check DNS becomes the primary. Use Make primary in Settings → Custom domains to pick another verified domain.
- Removing the primary makes the oldest other verified domain the primary. With none left, the App URL falls back to the Robodev URL, then the Default URL.
- Every verified domain is an allowed Auth redirect_uri origin, not only the primary.
Domains API
- GET /v1/projects/:id/domains — every custom domain and the App URL (project members).
- POST /v1/projects/:id/domains with { hostname } — add a domain; adding one the project already has returns it unchanged.
- POST /v1/projects/:id/domains/:hostname/verify — check DNS for that domain.
- POST /v1/projects/:id/domains/:hostname/primary — make a verified domain the primary (409 domain_not_verified otherwise).
- DELETE /v1/projects/:id/domains/:hostname — remove that domain; the response names the promoted primary, if any.
- GET /v1/projects/:id returns customDomains (primary, then other verified, then pending) and customDomain, the primary or else the oldest pending domain. The older single-domain routes (PUT /domain, POST /domain/verify, DELETE /domain) still work and act on that customDomain.
apiUrl stays on {projectId}.{apex}. Point backends and VITE_API_URL at that host. Open the app from the App URL after a custom domain is valid.
The same actions are available from the hosted MCP connector (set_project_slug, set_custom_domain to add a domain, verify_custom_domain, set_primary_custom_domain, remove_custom_domain, and project_info to read the current state), with the same roles: the Robodev URL needs a project admin and custom domains need an organization admin. When a project has several domains, pass hostname to verify_custom_domain and remove_custom_domain.