# Alchemist: Deploys and Domains

How deployments work on the Alchemist platform and how to attach custom domains.

---

Every project has a **Live URL** on the platform's shared domain. You can also attach one or more custom domains from the **Domains** tab.

## How deploys happen

A deploy is triggered automatically whenever:

- The agent's branch merges into your project's default branch.
- You click **Redeploy** in the project's detail view.
- You push a commit to the default branch from outside the platform (after ejecting, or via a deploy token).

Each deploy runs a build sandbox that produces a container image, then the platform's rollout controller pushes that image to the live pod behind the same URL. Crossover is a few seconds. In-flight requests finish on the old pod.

## Force a redeploy

If your Live URL stops responding, or you want to ship a config change without a code change, open the project and click **Redeploy**. The platform resolves the current HEAD SHA of your default branch, enqueues a fresh deploy at that SHA, and returns the existing in-flight deploy if one is already running. The button is safe to click twice.

## Auto-retry on transient failures

Builds and rollouts sometimes fail for reasons that have nothing to do with your code: registry rate-limits, transient auth blips, a flapping upstream mirror. The platform automatically retries a failed deploy up to **two times** (three attempts total) before surfacing the failure to you.

While the auto-retry is in flight you'll see an amber banner reading "Build failed, auto-retrying. No action needed." If all three attempts fail, a manual **Retry Deployment** button appears. At that point the failure is usually something the agent can fix. Open a ticket describing the error.

## Custom domains

Add a domain from the **Domains** tab. The platform handles certificate issuance and renewal automatically. Domains are billed at the registrar's wholesale price plus a flat platform markup. The price you pay is shown at purchase and frozen on your invoice, so future markup changes never re-bill historical purchases.

For client-facing tools, put the app on a subdomain of the client's own domain (for example `rooms.clientname.com`) rather than yours. It reads as their system, not a vendor portal, which matters for adoption.

*AVCodex · Your AV expertise. Amplified by AI.*
