Skip to main content
Every EdgeSpark project ships behind a platform-managed default URL like your-project.edgespark.app. To serve your own purchased hostname instead, use the edgespark domain family of CLI commands. The CLI prints exactly the DNS records you need; the platform handles ownership verification, EdgeSpark routing, and TLS certificate issuance. You stay in your project directory the whole time. Each command resolves the project from edgespark.toml and your authenticated CLI session.

Add a domain

The CLI registers the hostname against your project and returns the DNS records to publish. The actual record names and values are computed per project — copy them verbatim from the CLI output. A subdomain looks like:
Publish every record in the list — the CNAME makes traffic flow, and the TXT is what EdgeSpark uses to prove the domain belongs to you. The <scoped> segment of the TXT name is derived from your project ID, so two projects can never claim the same hostname with conflicting tokens. If your DNS provider supports domain-connect, add may also print a Setup URL you can open to add the records with one click instead of copy-pasting.
EdgeSpark uses a TXT ownership challenge — there is no nameserver delegation. Your existing DNS provider stays in charge.

Verify activation

After publishing the DNS records, wait for the domain to flip active:
The command polls every 15 seconds until the domain is active or the timeout is reached. Default timeout is 15 minutes; raise it for slow DNS or busy certificate authorities:
--timeout accepts ms, s, m, h units (e.g. 90s, 5m, 1h). When activation succeeds:
If the timeout elapses before activation, the CLI prints the current status, repeats any DNS records still missing, and exits 0 so you can re-run verify later. The domain is not lost — it stays registered on the project.

Inspect a domain

status is a one-shot read of where a domain stands. It does not poll:
Output includes the activation Status, the platform’s view of routing health (EdgeSpark routing), the TLS certificate state (SSL), any warnings, and the DNS records still pending if setup is incomplete.
Status is the high-level activation flag. EdgeSpark routing and SSL are independent, finer-grained strings sourced from the platform’s CDN integration — when a domain is stuck in pending, look at those two fields to tell DNS-side problems apart from TLS-issuance problems. Use status for spot checks; use verify when you want the CLI to wait.

List domains

Prints a table of every custom domain on the current project with its status and live URL. Use this from CI or scripts to confirm what is wired up.

Remove a domain

Detaches the hostname from the project. The CLI returns the post-removal status; depending on your DNS provider, you may also want to delete the CNAME and TXT records at the source.

Domain status values

The high-level Status field can take five values: status and verify also surface a free-form error_message field when the platform has a specific reason for a non-active state.

Apex versus subdomain

Both shapes work — the CLI prints the right records for each:
  • Subdomain (app.example.com) — a CNAME record where the host is the full hostname.
  • Apex (example.com) — the same CNAME record, but with @ as the host. Your DNS provider must support CNAME flattening at the apex — Cloudflare, Route 53, DNSimple, Vercel DNS, and others do; some legacy registrars do not. If yours does not support flattening, choose a subdomain instead.
When in doubt, copy the records the CLI prints verbatim — they are what the platform expects.

Troubleshooting

For platform-wide naming and quota limits, see platform limits.

See also

Deploy your project

Ship a build and learn the default project URL the platform issues.

Environments

The current single-environment model and how custom domains fit it.
Last modified on April 30, 2026