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

# Reserved VM Deployments

> Learn how to publish your app to an always-on cloud server with Reserved VM Deployments.

A Reserved VM deployment runs on a virtual machine (VM) which provides dedicated computing resources for
your app. This deployment type offers predictable costs and performance without interruptions.

They are ideal for the following use cases:

* Memory-intensive background tasks
* Chat app bots that must stay connected
* Always-on API servers

<Frame>
  <img src="https://mintcdn.com/replit/jSmYU1wBTvl8UMyc/images/deployments/reserved-vm/deployment-reserved-vm.jpg?fit=max&auto=format&n=jSmYU1wBTvl8UMyc&q=85&s=1a205637a55a5721c7d3f20873936b38" alt="Reserved VM Deployments" width="1920" height="1080" data-path="images/deployments/reserved-vm/deployment-reserved-vm.jpg" />
</Frame>

## Features

Reserved VM Deployments include the following features:

* **Dedicated resources**: Get consistent app performance on reserved compute resources.
* **Custom domains**: Configure a custom domain or use a `<app-name>.replit.app` URL to access your app.
* **Computing resource options**: Choose the VM option that meets your app's performance needs.
* **Configurable port mappings**: Define which ports your app exposes to the internet.
* **Monitoring**: View logs and monitor your published app's status.

## Usage

You can access Reserved VM Deployments in the Publishing Project Editor tool.

<Accordion title="How to access Reserved VM Deployments">
  From the left **Tool dock**:

  1. Select <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/workspace-all-tools-button.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=579643854fb13c402de516695e52c554" alt="All tools icon" width="16" height="16" data-path="images/icons/workspace-all-tools-button.svg" /> **All tools** to see a list of Project Editor tools.
  2. Select <img class="icon-svg" src="https://mintcdn.com/replit/rJldsgYVucXB_6kW/images/icons/deploy-icon.svg?fit=max&auto=format&n=rJldsgYVucXB_6kW&q=85&s=853c5ef39a8a7ac3648b3a2ce182fcb8" alt="Publishing icon" width="16" height="16" data-path="images/icons/deploy-icon.svg" /> **Publishing**.
  3. Select the **Reserved VM** option and then select **Set up your published app**.

  From the **Search bar**:

  1. Select the <img class="icon-svg" src="https://mintcdn.com/replit/X_IP1EeHGm0cA2VA/images/icons/workspace-search-icon.svg?fit=max&auto=format&n=X_IP1EeHGm0cA2VA&q=85&s=d3feed840da2d19e1ee4873d137114dc" alt="magnifying glass icon" width="16" height="16" data-path="images/icons/workspace-search-icon.svg" /> magnifying glass at the top to open the search tool
  2. Type "Publishing" to locate the tool and select it from the results.
  3. Select the **Reserved VM** option and then select **Set up your published app**.
</Accordion>

<Frame caption="Reserved VM configuration screen in the Publishing tool">
  <img src="https://mintcdn.com/replit/jSmYU1wBTvl8UMyc/images/deployments/reserved-vm/reserved-vm-deployment-options.png?fit=max&auto=format&n=jSmYU1wBTvl8UMyc&q=85&s=879150faf99fffd3f52bb5eb9ec7fedf" alt="Reserved VM publishing options" width="2970" height="2182" data-path="images/deployments/reserved-vm/reserved-vm-deployment-options.png" />
</Frame>

### Machine configuration

Select the CPU and RAM configuration for the machine that hosts your deployment. You can view the option's cost next to the selected machine size.

### Primary domain

Specify the subdomain part of the hostname for your published app. After you publish, you can access your published app at `https://<subdomain>.replit.app`.

To learn how to use a custom domain, see [Custom Domains](cloud-services/deployments/custom-domains/).

### Private deployment

<Info>
  The private published app feature is available on the Pro and Enterprise plans.
</Info>

Private published apps grant access to your app only to members of your workspace, or to specific users and groups that you invite.
When publishing, you can choose between **Public**, **Workspace only**, or **Only you** access.

To learn how to set up a private deployment, see [Private Deployments](/cloud-services/deployments/private-deployments/).

### Build command

Enter the shell command that compiles or sets up your app before running the Run command in the **Build command** field.
For example, to optimize your JavaScript app for a production environment using Vite, you might add the `vite build` command.

### Run command

Enter the shell command that launches your task in the **Run command** field. This command should be similar to the one
you use for your workflow. For example, to start a Flask app called "myApp", you might add the `flask --app myApp run` command.

### Published app secrets

Select **Add published app secret** to add environment variables or secrets your app needs to run securely.

If your Replit App has environment variables or secrets, the Publishing tool adds them to the list automatically.

### App type options

Select one of the following options:

* **Web server**: Select this option if publishing a web app or an app that users can connect to on the internet.
* **Background worker**: Select this option if your app does not listen on a port or start a server.

When you select **Web Server**, you can customize which ports to expose by performing the following actions:

1. Expand the **Port configuration** section.
2. Select **Networking pane to configure** to open the **Networking** tab, where you can manage the port mappings.

For more information on configuring ports, see [Ports](/core-concepts/project-editor/app-setup/ports/).

## Next steps

To learn more about publishing, see the following resources:

* [Published App Monitoring](/cloud-services/deployments/monitoring-a-deployment/): Learn how to view logs and monitor your scheduled deployment.
* [Publishing costs](/billing/deployment-pricing): View the costs associated with publishing.
* [Pricing](https://replit.com/pricing/): View the pricing and allowances for each plan type.
* [Usage Allowances](/billing/about-usage-based-billing/): Learn about scheduled deployment usage limits and billing units.
