# Addresses and custom domains

> Your Rootsy computer's address at <name>.rtsy.dev, connecting a domain you own with CNAME records from the workspace or over MCP, root domains and www, and what each status means.

This page covers your computer's address and the custom domains you point at it: the DNS records, root domains and `www`, statuses, plan limits, and managing domains over MCP. Whatever your computer serves on port 8090 answers on the address and on every connected domain. [Serve an app](https://rootsy.io/docs/reference/serving.md) covers setting that up.

## Your computer's address

Each computer gets the address `https://<name>.rtsy.dev`, with a certificate Rootsy manages. The `<name>` part (the computer's slug) comes from the name you give the computer when you create it. It has 3 to 32 lowercase letters, digits and single hyphens, and it can't start or end with a hyphen. Some names are reserved, including any containing `rootsy`. The slug has to be free, and the create dialog checks as you type. If someone takes it between that check and creation, Rootsy adds `-2` to `-5` instead of failing.

To print the address and any custom domains from the computer:

```sh
rootsy domains
```

```text
site:     https://my-computer.rtsy.dev
example.com  active
www.example.com  active
```

The address is separate from your workspace at `<name>.rootsy.io`. The workspace needs you to sign in, and it's where the Terminal and Editor live. Visitors use the address. Rootsy doesn't put a login in front of it, so anything you serve is reachable there until you add one. See [Protect an app](https://rootsy.io/docs/reference/protect-an-app.md).

## Connect a custom domain

1. Open **domains** in the workspace and choose **+ add domain**.
2. Enter the domain, for example `app.example.com` or `example.com`. Rootsy strips any `https://`, path and leading `www.`. To connect `www.example.com`, enter `example.com` and keep the `www` option on.
3. For a root domain, choose whether to also connect `www`, and whether to redirect the root to `www`. Both are on by default.
4. Choose **Add — show DNS records**. The window shows the records to create.
5. Create those records at your DNS provider. Rootsy checks for them and issues the HTTPS certificate once they're in place.

The window shows each check as it runs: nameservers, the CNAME, propagation, the certificate and an HTTP response. It has a **check now** button. Rootsy also keeps checking in the background. Records usually appear within minutes. DNS can take up to 48 hours.

Rootsy only routes web traffic. It never changes your domain's DNS or email records. You create the records yourself.

## The DNS records

Every record points at the same target, `connect.rtsy.dev`:

| You're connecting | Type | Name | Value |
| --- | --- | --- | --- |
| A subdomain such as `app.example.com` | CNAME | `app` | `connect.rtsy.dev` |
| A root domain such as `example.com` | CNAME | `@` | `connect.rtsy.dev` |
| The `www` that goes with a root domain | CNAME | `www` | `connect.rtsy.dev` |

Some DNS providers don't allow a CNAME on the root (`@`). Use their ALIAS or ANAME record type with the same value. Rootsy recognizes GoDaddy and Squarespace Domains as providers with neither. For those, when you also connect `www`, the window lists only the `www` CNAME. It tells you to send `example.com` to `www.example.com` with the provider's domain forwarding, which is often HTTP-only.

If your DNS is on Cloudflare, set the record's proxy status to "DNS only" (grey cloud).

If your domain has CAA records, one of them must allow `letsencrypt.org`, `pki.goog` or `ssl.com`, or the certificate can't be issued:

```text
example.com.  CAA  0 issue "letsencrypt.org"
```

The window may also list "provider validation alternatives". These are other ways to prove ownership or get the certificate. You need them only if the CNAME check doesn't pass.

## Root domains and www

When you connect a root domain, you can connect its `www` in the same step. The pair counts as one domain toward your plan. With "Redirect example.com → www.example.com" on, visitors to the root get a 301 redirect to `www`, with the path and query kept. That's the recommended setup. The redirect option applies only when `www` is connected too.

Your nginx sees the hostname the visitor used in the `Host` header. To serve a different app on a custom domain than on the address, give it its own `server_name`. See [Serve an app](https://rootsy.io/docs/reference/serving.md).

## Status

`rootsy domains` prints each hostname's last saved status. It doesn't show detached, so a detached domain can still read `active` there. Check the Domains window or MCP `get_domain`. The Domains window shows a label:

| `rootsy domains` | Domains window | Meaning |
| --- | --- | --- |
| `pending_dns` | waiting on dns | Rootsy hasn't found the record yet. |
| `issuing` | setting up https | The record is in place and the certificate is being issued. |
| `active` | domain connected | The domain serves your computer over HTTPS. |
| `error` | needs attention | The record points somewhere else, a CAA record blocks the certificate, or the check failed. The window shows which. |
| `expired` | expired — try again | The domain didn't connect within 7 days. Fix the records, then choose **start checking again**. |
| (last saved status) | detached | Saved but not routing, because your account has more domains than its plan includes. |

A root domain with `www` shows the less ready of the two.

## How many domains you can connect

Domains are counted across your whole account, not per computer. Your plan sets how many custom domains the account can connect. [Billing](https://rootsy.io/docs/reference/billing.md) lists the number for each plan.

If you move to a plan with fewer domains than you've connected, the extra domains are detached after 24 hours. The oldest stay connected and the newest are detached first. Their records and settings stay saved. They reconnect, oldest first, when there's room again.

## Domains Rootsy won't accept

Rootsy refuses internationalized domains (those with `xn--` labels), hostnames longer than 253 characters or deeper than 6 labels, public suffixes on their own (such as `co.uk`), and Rootsy's own domains.

## Remove a domain

Open the domain in the Domains window and choose **remove**, then confirm. Removing a root domain removes its `www` too. Routing updates can still be pending after the removal is saved.

Rootsy never edits your DNS. When you remove a domain or delete its computer, remove or repoint its CNAME records at your DNS provider.

## Manage domains over MCP

An agent connected over MCP can connect, check and remove domains with the same rules and limits as the Domains window. Every tool takes `account_id` and `computer_id`. [Connect with MCP](https://rootsy.io/docs/reference/mcp.md) covers setup.

| Tool | Inputs besides the computer | What it does |
| --- | --- | --- |
| `list_domains` | none | Lists the computer's domains with their records and statuses. It doesn't run checks. |
| `get_domain` | `domain_id` | Reads one domain. It doesn't run checks. |
| `connect_domain` | `hostname`, `include_www`, `redirect_to_www` | Saves the domain and returns the records to create |
| `verify_domain` | `domain_id` | Runs the same checks as **check now** |
| `remove_domain` | `domain_id`, `confirm_remove: true` | Removes the domain and its `www` |

`domain_id` is the root or subdomain entry's ID. A `www` paired with a root domain has no tool of its own. `include_www` and `redirect_to_www` are both required. They apply only to a root domain, and the result shows the settings Rootsy saved. The tools never edit DNS at your provider. The agent or the person still creates the records.

`setup_connected: true` means DNS and the certificate check out for every hostname in the entry. `attachment_saved: true` only means the domain is saved. An HTTP response from the domain doesn't prove it serves your app. `remove_domain` always answers `removed: true` and `cleanup_pending: true`. Cleanup can continue after the answer.

Each change has 75 seconds to finish. A client that gives up sooner doesn't cancel it. If a `connect_domain` response is lost, call `list_domains` and look for the hostname before connecting again. After an uncertain `verify_domain` or `remove_domain`, read the same `domain_id` with `get_domain`.

---
Page: https://rootsy.io/docs/reference/domains/ · Updated: 2026-10-21 · All docs: https://rootsy.io/llms.txt
