---
title: Custom domains
description: "Attach your own hostname to a deployment: the DNS records, verification, and TLS issuance."
---

Your project is always at `https://<name>.<username>.sproutboat.com`. To add your own hostname:

1. **Add the domain**

    <CodeGroup>

    ```sh Bun
    bunx sproutboat domains add example.com
    ```

    ```sh npm
    npx sproutboat domains add example.com
    ```

    </CodeGroup>

    It prints two records to create in your DNS:

    | Type | Name | Value | Notes |
    | --- | --- | --- | --- |
    | `TXT` | `_sproutboat.example.com` | `sproutboat-verify=<token>` | proves you control the zone |
    | `A` | `example.com` | the control-plane IP it prints | **DNS-only, not proxied** — makes the name route to the box |

2. **Verify**

    <CodeGroup>

    ```sh Bun
    bunx sproutboat domains verify example.com
    ```

    ```sh npm
    npx sproutboat domains verify example.com
    ```

    </CodeGroup>

    Verify checks the TXT record. If the hostname does not yet resolve to the box it still verifies but warns; re-run it once DNS has propagated.

:::note
The TLS certificate is issued by Caddy on the first HTTPS request. The apex and `www` of the platform's own domain are the only names inside `sproutboat.com` you may attach. After verification the TXT record can be removed; the A record must stay.
:::

## Related

- [CLI reference — domains](/reference/cli#domains)
- [Platform limits](/platform/limits) — custom domains per project
