# Networking

Every service gets a generated `*.onlizard.com` domain with automatic TLS the moment it deploys, regardless of region. Attach your own hostname when you're ready to go live.

## Generated domains

A service's default domain is created for you. Show it (or generate a fresh one):

```bash
lizard domain                    # show the service's current domain
lizard domain generate           # generate a new *.onlizard.com subdomain
```

Object storage served from an [S3 addon](https://lizard.build/docs/addons/storage) uses a region-scoped gateway host (`s3-<region>.onlizard.com`) instead.

## Attach a custom domain

The hostname is a **positional argument** — there is no `add` subcommand:

```bash
lizard domain app.example.com --service web
```

Lizard returns the DNS records to create (a `CNAME` for the hostname and a `TXT` record for verification). Add them at your DNS provider.

## Verify

Once DNS has propagated, activate the domain:

```bash
lizard domain verify app.example.com
```

This checks the `TXT` record and activates the domain. TLS is provisioned automatically.

## Remove a domain

```bash
lizard domain delete app.example.com
lizard domain rm app.example.com --yes   # alias, skip confirmation
```

## Exposing a specific port

If your service serves on a non-default port, attach the domain to that port:

```bash
lizard domain app.example.com --service web --port 8080
```

## Worker services

A [worker-mode service](https://lizard.build/docs/deploy/workers) (`containerPort=0`) may still show a generated domain, but it serves nothing — there's no listener and no load-balancer route. Don't attach a custom domain to a worker.

## Manage in the dashboard

The **Domains** view in the dashboard (`lizard open`) shows each domain's verification and TLS status and lets you add or remove hostnames visually.

## See also

- [`lizard domain`](https://lizard.build/docs/cli/domain) — the full command reference.
- [Regions](https://lizard.build/docs/deploy/regions) — co-locating services and addons for latency.
- [From prototype to a SaaS people pay for](https://lizard.build/blog/google-antigravity-how-to-deploy-your-app-to-production#from-vibe-coded-prototype-to-a-saas-people-pay-for) — where a custom domain sits among the other things a generated app still needs.
