> ## Documentation Index
> Fetch the complete documentation index at: https://docs.instapods.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom Domains

> Attach, verify, and remove custom domains from the CLI.

Point your own domain at a pod without leaving the terminal. Alias: `domain`.

A domain goes live in two steps: `add` it and create the DNS record it prints, then `verify` it. Verification issues the SSL certificate and starts routing the domain to the pod.

## List Domains

```bash theme={null}
instapods domains list my-app
```

`instapods domains my-app` does the same. Shows each domain with its status, SSL status, and verification method. A domain serves the pod only once its status is `active`.

## Add a Domain

```bash theme={null}
instapods domains add my-app app.example.com
```

Prints the DNS record to create:

```
Added app.example.com to pod my-app.

Create this DNS record:
  Type:   CNAME
  Host:   app.example.com
  Target: my-app.nbg1-1.instapods.app

Once DNS is live, run: instapods domains verify my-app app.example.com
```

| Flag | Description | Default |
| - | - | - |
| `-m, --method` | Verification method: `cname`, `txt` | `cname` |

With `--method txt`, the command prints two records: a TXT at `_instapods.<domain>` holding a verification token, and the CNAME that points the domain at the pod. Create both. The TXT record only proves ownership, and the SSL certificate cannot be issued until the domain itself resolves to the pod.

## Verify a Domain

```bash theme={null}
instapods domains verify my-app app.example.com
```

Alias: `check`.

Checks the DNS record. When it is correct, an SSL certificate is issued via Let's Encrypt and the domain starts serving the pod:

```
✓ app.example.com is live: https://app.example.com
```

If the record is not visible yet, the command prints the record again and exits non-zero. DNS changes usually propagate within a few minutes; run `verify` again once the record is live.

If DNS is correct but the certificate could not be issued, the command prints the reason and exits non-zero. Fix the cause, then run `verify` again.

Running `verify` on a domain that is already live changes nothing and exits `0`.

<Note>
  `verify` exits `0` only when the domain ends up active, so a script or an AI agent can rely on the exit code.
</Note>

## Remove a Domain

```bash theme={null}
# With confirmation prompt
instapods domains remove my-app app.example.com

# Skip confirmation
instapods domains remove my-app app.example.com -f
```

Aliases: `rm`, `delete`.

| Flag | Description | Default |
| - | - | - |
| `-f, --force` | Skip confirmation prompt | `false` |

The domain stops serving the pod immediately. Your pod's default `*.instapods.app` address is not affected.

In a script, in CI, or with `--json` there is nobody to answer the prompt, so `remove` requires `-f` and fails without it.

## JSON Output

Every subcommand accepts `--json`:

```bash theme={null}
instapods domains list my-app --json
```

## Limits

* Maximum 5 custom domains per pod
* A domain can be attached to only one pod at a time
* Worker pods have no public URL, so they cannot take a custom domain

See [Custom Domains](/dashboard/custom-domains) for how verification and SSL work.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.