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

# Deploy a custom model

If the [Application Catalog](/edge-ai/everywhere-inference/application-catalog) does not include the model you need, you can deploy any Docker container image from a public or private registry.

The container image must meet Everywhere Inference requirements — [prepare it for deployment](/edge-ai/everywhere-inference/ai-models/prepare-a-custom-ai-model-for-deployment) before proceeding.

<Info>
  [Request a quota increase](/edge-ai/everywhere-inference/quotas/request-quota-increase) if the account quota is insufficient for the selected flavor.
</Info>

## Deploy the model

In the [Gcore Customer Portal](https://portal.gcore.com/), navigate to **Everywhere Inference** > **Deployments** and click **Deploy custom inference** in the top-right corner. The **Deploy custom model** form opens.

<Frame>
  <img src="https://mintcdn.com/gcore/uiRa_jFs2CEr69p9/images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-1.png?fit=max&auto=format&n=uiRa_jFs2CEr69p9&q=85&s=eb7cd0c4a7d08113419bce5814099f23" alt="Deployments page showing Deploy application from catalog and Deploy custom inference buttons" width="1400" height="900" data-path="images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-1.png" />
</Frame>

### Step 1. Configure the model image

Under **Model image**, configure the container image source.

**Public registry**: Select **Public**, then enter the **Model image URL (docker tag)** and the **Container port** where the model listens for requests.

<Frame>
  <img src="https://mintcdn.com/gcore/uiRa_jFs2CEr69p9/images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-4.png?fit=max&auto=format&n=uiRa_jFs2CEr69p9&q=85&s=a1e8ce5f9f1df2b6413f052174de0f62" alt="Model image section with Public registry type selected" width="1400" height="900" data-path="images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-4.png" />
</Frame>

**Private registry**: Select **Private**, select the registry from the **Registry** dropdown, then enter the **Model image URL (docker tag)** and the **Container port**.

<Frame>
  <img src="https://mintcdn.com/gcore/uiRa_jFs2CEr69p9/images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-8.png?fit=max&auto=format&n=uiRa_jFs2CEr69p9&q=85&s=4aeb8b23529f460092a8f12f1dbd93fd" alt="Model image section with Private registry type selected, showing Registry dropdown" width="1400" height="900" data-path="images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-8.png" />
</Frame>

If no private registry is configured yet, click **+ Add registry** to [add one](/edge-ai/everywhere-inference/container-image-registries/add-a-registry).

(Optional) Enable the **Set startup command** toggle to specify a command that runs when the container starts.

### Step 2. Select pod configuration

Under **Pod configuration**, select the compute resources for the deployment:

* **Flavor type** — select **CPU-optimized** or **GPU-optimized**.
* **Flavor** — select the hardware configuration from the dropdown.

The following flavor parameters are recommended based on model size:

| **Billion parameters** | **Recommended flavor** |
| ---------------------- | ---------------------- |
| \< 21                  | 1 x L40S 48 GB         |
| 21–41                  | 2 x L40S 48 GB         |
| > 41                   | 4 x L40S 48 GB         |

### Step 3. Set up routing placement

Under **Routing placement**, select up to six regions where the model will run.

<Frame>
  <img src="https://mintcdn.com/gcore/uiRa_jFs2CEr69p9/images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-5.png?fit=max&auto=format&n=uiRa_jFs2CEr69p9&q=85&s=43efb9991bb70e8c7f9d406f70d040fe" alt="Routing placement and Autoscaling limits sections" width="1400" height="900" data-path="images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-5.png" />
</Frame>

### Step 4. Configure autoscaling

Under **Autoscaling limits**, configure pod scaling:

* **All selected regions** — applies the same autoscaling settings to all selected regions.
* **Custom** — applies different settings per region.
* **Minimum pods** — the minimum number of pods to maintain during low-traffic periods.
* **Maximum pods** — the maximum number of pods that can be provisioned during peak traffic.
* **Cooldown period** — the time (in seconds) the autoscaler waits after a scaling event before making another adjustment.
* **Pod lifetime** — the time (in seconds) before an idle pod is deleted after its last request.

<Info>
  A pod with a lifetime of zero seconds will take approximately one minute to scale down.
</Info>

Under **Autoscaling triggers**, define the conditions that trigger pod provisioning. By default, CPU utilization and GPU utilization triggers are included with an 80% threshold. Click **Add trigger** to add more triggers.

<Frame>
  <img src="https://mintcdn.com/gcore/uiRa_jFs2CEr69p9/images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-6.png?fit=max&auto=format&n=uiRa_jFs2CEr69p9&q=85&s=a98f43daf60903d50bb3a8202e7cbf70" alt="Autoscaling triggers and Health checks sections" width="1400" height="900" data-path="images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-6.png" />
</Frame>

### Step 5 (optional). Configure health checks

Under **Health checks**, enable probes to monitor container availability:

* **Liveness probe** — restarts the container if it becomes unresponsive.
* **Readiness probe** — removes the container from load balancing until it is ready to serve traffic.
* **Startup probe** — delays other probes until the container finishes starting up.

### Step 6. Set deployment details

Under **Deployment details**, enter a deployment name. Use only letters and numbers — hyphens are not allowed in deployment names. An optional description can also be added.

<Frame>
  <img src="https://mintcdn.com/gcore/uiRa_jFs2CEr69p9/images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-7.png?fit=max&auto=format&n=uiRa_jFs2CEr69p9&q=85&s=20e2c5b284266cdd76a68847a00565e8" alt="Deployment details and Additional options sections" width="1400" height="900" data-path="images/docs/edge-ai/everywhere-inference/ai-models/deploy-an-ai-model/deploy-an-ai-model-7.png" />
</Frame>

### Step 7 (optional). Set additional options

Under **Additional options**:

* Enable **Set environment variables** to pass key-value pairs to the container at runtime.
* Enable **Enable API Key authentication** to restrict access using [API keys](/edge-ai/everywhere-inference/api-keys/create-inference-deployment-with-auth).

Multiple API keys can be associated with a single deployment, and the same API key can be attached to multiple deployments.

### Step 8. Finalize the deployment

Review the estimated cost in the right panel, then click **Deploy model**.

Gcore creates the deployment and opens the **Deployments** page, where the deployment status is visible.

## Deployment status

The new deployment appears on the **Deployments** page with a **Deploying** status. Once all pods are running, the status changes to **Active**.

The endpoint URL becomes available on the deployment detail page. Use it to send inference requests as described in [Query a deployed model](/edge-ai/everywhere-inference/ai-models/query-deployed-model). Logs, compute settings, and other deployment options are available on the [deployment detail page](/edge-ai/everywhere-inference/ai-models/manage-ai-model-deployments).
