# Deployments (/dashboard/deployments)

Every Manufact-hosted server is backed by a deployment pipeline. A deployment goes through the steps **Cloning → Analyzing → Building → Deploying → Health Checks → Complete**, and you can follow each step live from the **Deployments** tab.![Deployment history table](/screenshots/dashboard/deployments/deployments-history.png)## Automatic deployments [#automatic-deployments]Pushing to your production branch triggers a deployment automatically — configure which branch is production in [Server settings](/dashboard/settings). You can also tune what else triggers a deploy there:- **Watch paths (globs)**: only deploy when files under specific paths change (useful in monorepos).
- **Branch allow list (globs)**: control which other branches create deployments.
- **Wait for CI**: hold the deploy until your GitHub checks pass.## Production and preview environments [#production-and-preview-environments]- **Production** is the deployment of your configured production branch. It serves your main gateway URL.
- **Preview** environments are created per branch. Each gets its own MCP URL of the form `https://<slug>--br-<branch>.run.mcp-use.com/mcp`, so you can test changes against real clients before merging.Use the **environment selector** in the server header to switch between production and preview branches, the URL chip, logs, and environment variables all follow the selected environment.<Callout title="Plan limits">
  Preview deployments require the Hobby plan or higher. See [Billing & plans](/dashboard/billing).
</Callout>## Manual deployments [#manual-deployments]![Trigger deployment dialog](/screenshots/dashboard/deployments/trigger-deployment-dialog.png)From the **Deployments** tab you can:- **Trigger deployment**: deploy a branch on demand.
- **Redeploy**: rebuild and ship the same source (after changing environment variables or settings). For a production-branch deployment that isn't currently active, this appears as **Promote to production**.
- **Set as Active**: switch traffic to a specific deployment.
- **Start / Stop / Delete**: manage stopped, failed, or old deployments.## Deployment history [#deployment-history]The history table shows every deployment with its MCP URL, source branch and commit, duration, creation time, and the latest completed [publish checklist](/dashboard/publish-checks) score when one exists. Click a row to open the detail drawer with **Build Logs** (broken down by pipeline step) and **Runtime Logs** tabs.To run the checklist automatically after deployments, configure **Checklist automation** in [Server settings](/dashboard/settings#checklist-automation).![Deployment drawer with build logs](/screenshots/dashboard/deployments/deployment-drawer-build-logs.png)## Build configuration [#build-configuration]The build is controlled by settings configured at creation time and editable later in [Server settings](/dashboard/settings):- **Framework preset**: mcp-use, mcp-python, FastMCP, and others, or **Dockerfile** for full control.
- **Root directory**: where your server lives inside the repository.
- **Build command / start command**: override the preset defaults.## Troubleshooting failed deployments [#troubleshooting-failed-deployments]Failed deployments surface on the org **Dashboard** under **Needs Attention**, and trigger an email if you have **Failed deployment emails** enabled in account settings (on by default). Open the deployment drawer to read build logs step by step, a failure at **Health Checks** means the deployed server didn't respond correctly, which usually points to a wrong start command or a missing environment variable.
