# Deployments (/deployments)



## Choose a deployment type [#choose-a-deployment-type]

Deployments are where users reach the project. Use a **lite deployment** to get a branch live fast for demos, internal review, and early usage. Use a **full deployment** when real users depend on the project and you need dedicated production operations.

```mermaid
flowchart TD
  subgraph managed [Managed runtime]
    L[Lite deployment]
  end
  subgraph cloud [Project's cloud]
    F[Full deployment]
  end
  B[Repository branch] -->|starts directly| L
  B -->|approved pull request| F
  L --> D[Demos and review]
  F --> U[Real users]
```

| Criteria       | [Lite deployment](/deployments/lite-deployment/)            | [Full deployment](/deployments/full-deployment/)                                 |
| -------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------- |
| Best for       | Demos, internal review, and early users.                    | Software real users and the business depend on.                                  |
| Runtime        | A managed runtime that follows a repository branch.         | A dedicated, SOC 2 ready environment in the project's cloud: GCP, Azure, or AWS. |
| Setup          | Starts from the branch with no cloud environment to create. | Approved through a `project.yaml` pull request, then provisioned end to end.     |
| Updates        | Releases each commit to the branch.                         | GCP and AWS deployments release each push to the branch.                         |
| Operations     | Logs and a terminal into the running deployment.            | Logs, metrics, DNS, certificates, observability, and isolated state.             |
| Who can create | Project admins and Basic Access members.                    | Project admins.                                                                  |

<Accordions>
  <Accordion title="Under the hood: how the two paths differ">
    | Criteria                             | Lite deployment                                                                                       | Full deployment                                                                                                                      |
    | ------------------------------------ | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
    | Runtime                              | Starts the branch through the repository's Docker Compose contract on a managed runtime.              | Creates or reuses the cloud environment boundary, attaches billing or subscription access, and creates the Terraform apply identity. |
    | Source                               | Ensures the branch exists and updates the runtime when the branch receives pushes.                    | Deploys the declared branch through the provider's continuous-delivery path.                                                         |
    | [Variables](/environment-variables/) | Resolves project and deployment variables and the managed integrations that support lite deployments. | Writes variables into Terraform configuration and the provider's secret store before the apply.                                      |
    | State                                | Keeps runtime status, URLs, and errors in Crucible.                                                   | Creates provider-specific artifact storage and isolated Terraform state so each environment applies and recovers independently.      |
    | Operations                           | No dedicated DNS workflow or cloud observability setup.                                               | Provisions DNS, wires observability, and registers the deployment URL in Crucible.                                                   |
  </Accordion>
</Accordions>

## Choose the production deployment [#choose-the-production-deployment]

Project admins mark the deployment that represents the live product with the **Prod deployment** selector above the deployment list. Choosing another deployment replaces the selection, and **No Prod deployment** clears it; Crucible never promotes a deployment on its own. The Prod deployment is tagged **Prod** and listed first.

* PR previews and deployments that are being deleted cannot be selected.
* A lite deployment marked Prod cannot be deleted until Prod is cleared or moved.
* Deleting a full deployment clears the selection during final cleanup.
