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

# Deployment Commands

> CLI commands for managing deployments on the Simplismart platform

Manage deployments using `simplismart deployments`.

### List Deployments

Lists deployments with optional filtering.

```bash theme={null}
simplismart deployments list [options]
```

| Option                 | Description                    |
| ---------------------- | ------------------------------ |
| `--model-repo-id UUID` | Filter by model repo UUID      |
| `--status STATUS`      | Filter by status               |
| `--offset N`           | Pagination offset (default: 0) |
| `--count N`            | Page size (default: 20)        |

#### Status Options

| Value      | Description                 |
| ---------- | --------------------------- |
| `DEPLOYED` | Deployment is running       |
| `PENDING`  | Deployment is being created |
| `FAILED`   | Deployment failed           |
| `STOPPED`  | Deployment is stopped       |
| `DELETED`  | Deployment has been deleted |

**Example:**

```bash theme={null}
# List all deployments
simplismart deployments list --offset 0 --count 20

# Filter by status
simplismart deployments list --status DEPLOYED --offset 0 --count 20

# Filter by model repo
simplismart deployments list --model-repo-id <MODEL_REPO_ID> --status FAILED
```

**Expected output**

```json theme={null}
[
  {
    "deployment_id": "<DEPLOYMENT_ID>",
    "deployment_name": "whisper-nemo-diarization",
    "model_repo_id": "<MODEL_REPO_ID>",
    "model_repo_name": "whisper-nemo-diarization",
    "model_type": "unknown",
    "accelerator_type": ["nvidia-h100"],
    "accelerator_count": 1,
    "status": "DEPLOYED"
  },
  {
    "deployment_id": "<DEPLOYMENT_ID>",
    "deployment_name": "Gemma-3-4B",
    "model_repo_id": "<MODEL_REPO_ID>",
    "model_repo_name": "gemma-3-4b-optim-v2",
    "model_type": "llm",
    "accelerator_type": ["nvidia-h100"],
    "accelerator_count": 1,
    "status": "DEPLOYED"
  }
]
```

### List Model Deployments

Lists all model deployments for an organization.

```bash theme={null}
simplismart deployments list-model [options]
```

| Option                    | Description                                                        |
| ------------------------- | ------------------------------------------------------------------ |
| `--org-id UUID`           | Organization UUID (uses token org if omitted)                      |
| `--order-type {asc,desc}` | Sort order: `desc` (latest first, default) or `asc` (oldest first) |

**Example:**

```bash theme={null}
simplismart deployments list-model --order-type desc
```

### Create Deployment

Creates a deployment for a model repo.

```bash theme={null}
simplismart deployments create [options]
```

| Option                                         | Description                                                                                 |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `--model-repo UUID`                            | Model repo UUID (required)                                                                  |
| `--org UUID`                                   | Organization UUID (required)                                                                |
| `--gpu-id ID`                                  | GPU type (required) - e.g., `nvidia-h100`, `A10`                                            |
| `--name NAME`                                  | Deployment name (required)                                                                  |
| `--min-pod-replicas N`                         | Minimum pod replicas (required)                                                             |
| `--max-pod-replicas N`                         | Maximum pod replicas (required)                                                             |
| `--autoscale-config JSON/@file`                | Autoscaling config (required unless `min-pod-replicas` and `max-pod-replicas` are set to 1) |
| `--env-variables JSON/@file`                   | Environment variables                                                                       |
| `--deployment-custom-configuration JSON/@file` | Custom deployment config                                                                    |
| `--healthcheck JSON/@file`                     | Health check config                                                                         |
| `--ports JSON/@file`                           | Port mappings                                                                               |
| `--metrics-path JSON/@file`                    | Metrics paths                                                                               |
| `--persistent-volume-claims JSON/@file`        | PVC configurations                                                                          |
| `--deployment-tag TAG`                         | Deployment tag                                                                              |
| `--fast-scaleup`                               | Enable fast scale-up (use `--no-fast-scaleup` to disable)                                   |
| `--scale-to-zero-enabled`                      | Traffic-based scale-to-zero (default off: `false`)                                          |
| `--async-deployment-type {SYNC,ASYNC}`         | Processing mode                                                                             |
| `--auth-enabled`                               | Enable auth on the deployment endpoint (use `--no-auth-enabled` to disable)                 |
| `--extra-details JSON/@file`                   | Extra deployment details, e.g. `{"is_websocket_enabled": false}`                            |
| `--deployment-input-files JSON/@file`          | Input file mounts, e.g. `[{"name": "weights", "path": "/mnt/weights"}]`                     |

<Info>
  A deployment scales using **one** of two approaches, and they cannot be combined:

  * **Traffic-based** (`--scale-to-zero-enabled`): scales down when the deployment is idle.
  * **Cron-based / schedule-based** (`cronScaling`): runs on a fixed schedule. Set `--min-pod-replicas 0` if you also want it to scale to zero outside the scheduled window.
</Info>

**Example:**

The command below deploys a model on an H100 serving 1 to 2 replicas, autoscaling on GPU utilization (target 80%), with fast scale-up, async request handling, and endpoint auth enabled.

```bash theme={null}
# Create deployment
simplismart deployments create-private \
  --model-repo <MODEL_REPO_ID> \
  --org "$ORG_ID" \
  --gpu-id nvidia-h100 \
  --name vision-deploy \
  --min-pod-replicas 1 \
  --max-pod-replicas 2 \
  --autoscale-config '{"targets":[{"metric":"gpu","target":80}]}' \
  --fast-scaleup \
  --async-deployment-type ASYNC \
  --auth-enabled
```

The `targets` in `--autoscale-config` accept these metrics:

| Metric        | Description                                           |
| ------------- | ----------------------------------------------------- |
| `concurrency` | Number of concurrent requests                         |
| `cpu`         | CPU utilization percentage                            |
| `gpu`         | GPU utilization percentage                            |
| `gram`        | GPU memory utilization                                |
| `latency`     | Request latency (supports percentiles 50, 75, 90, 95) |
| `ram`         | RAM utilization                                       |
| `throughput`  | Requests per second                                   |

These are the same scaling metrics you set when [creating a deployment](/model-suite/deployments/creating-a-deployment) on the Simplismart Platform. For what each metric measures and how thresholds trigger scaling, see [Add Scaling Metrics](/model-suite/deployments/creating-a-deployment#add-scaling-metrics).

Cron-based scaling (called schedule-based scaling on the Simplismart platform) runs the deployment on a fixed schedule. For example, to keep it up on weekdays 9am to 6pm UTC and scale to zero outside that window, set `--min-pod-replicas 0` and pass a `cronScaling` config. Each `cronScaling` rule requires `timezone`, `start`, `end`, and `desiredReplicas`:

```bash theme={null}
simplismart deployments create-private \
  --model-repo <MODEL_REPO_ID> \
  --org "$ORG_ID" \
  --gpu-id nvidia-h100 \
  --name my-deploy \
  --min-pod-replicas 0 \
  --max-pod-replicas 2 \
  --autoscale-config '{"targets":[{"metric":"gpu","target":80}],"cronScaling":[{"timezone":"UTC","start":"0 9 * * 1,2,3,4,5","end":"0 18 * * 1,2,3,4,5","desiredReplicas":2}]}'
```

Each `cronScaling` rule accepts:

| Field             | Required | Description                                                  |
| ----------------- | -------- | ------------------------------------------------------------ |
| `timezone`        | Yes      | IANA timezone, e.g. `UTC`                                    |
| `start`           | Yes      | Cron expression for when the active window starts            |
| `end`             | Yes      | Cron expression for when the active window ends              |
| `desiredReplicas` | No       | Replicas to run inside the window (default `1`, minimum `1`) |

You can also pass the config as a file with `--autoscale-config @autoscale.json`, where `autoscale.json` contains:

```json theme={null}
{
  "targets": [
    {"metric": "gpu", "target": 80}
  ],
  "cronScaling": [
    {
      "timezone": "UTC",
      "start": "0 9 * * 1,2,3,4,5",
      "end": "0 18 * * 1,2,3,4,5",
      "desiredReplicas": 2
    }
  ]
}
```

### Get Deployment

Gets deployment details by ID.

```bash theme={null}
simplismart deployments get [options]
```

| Option                 | Description                |
| ---------------------- | -------------------------- |
| `--deployment-id UUID` | Deployment UUID (required) |

**Example:**

```bash theme={null}
simplismart deployments get --deployment-id <DEPLOYMENT_ID>
```

**Expected output**

Returns a single deployment object with full details (e.g. `deployment_id`, `deployment_name`, `model_repo_id`, `model_repo_name`, `status`, `accelerator_type`, `accelerator_count`, and other configuration fields).

```json theme={null}
{
  "uuid": "<DEPLOYMENT_UUID>",
  "avatar": {
    ...
  },
  "created_by": {
    ...
  },
  "persistent_volume_claims": [],
  "autoscale_config": {
    "targets": [
      {
        "unit": "%",
        "metric": "cpu",
        "target": 80,
        "description": "Average CPU usage across all pods"
      }
    ]
  },
  "deployment_custom_configuration": {
    "command": []
  },
  "ports": {
    "http": {
      "port": 8000
    }
  },
  "healthcheck": {
    "path": "/health",
    "port": 8000,
    "initialDelaySeconds": 30,
    "periodSeconds": 10,
    "timeoutSeconds": 5
  },
  "env_variables": {},
  "metrics_path": [],
  "metrics_http_method_overrides": {},
  "created_at": "2026-03-02T11:53:05.744416Z",
  "updated_at": "2026-03-02T12:05:17.018284Z",
  "is_public": false,
  "name": "whisper-nemo-diarization",
  "display_name": "whisper-nemo-diarization",
  "proxy_name": "",
  "status": "DEPLOYED",
  "slug": "fi0pjr7jaf",
  "autoscaling": true,
  "min_pod_replicas": 1,
  "max_pod_replicas": 8,
  "scale_to_zero_enabled": false,
  "model_cloud": "",
  "accelerator_type": "nvidia-h100",
  "accelerator_request": 1.0,
  "accelerator_limit": 1.0,
  "cpu_request": 23.0,
  "cpu_limit": 23.0,
  "memory_request": 190.0,
  "memory_limit": 190.0,
  "node_affinity": "none",
  "ended_at": null,
  "image_url": null,
  "tags": null,
  "proxy_url": "<PROXY_URL>",
  "api_details": {},
  "input_configuration": {},
  "deleted_at": null,
  "deployment_details": {},
  "advanced_configuration": {},
  "extra_details": {
    "deployment_tag": "production",
    "deletion_retry_count": 0
  },
  "external_deployment_id": null,
  "is_deployable": true,
  "model_output_type": "",
  "paused_at": null,
  "resumed_at": null,
  "async_deployment_type": "SYNC",
  "has_custom_proxy": false,
  "is_private_request_tracking_enabled": false,
  "is_privately_deployed": true,
  "status_description": null,
  "image_prepuller": false,
  "is_warmpool_deployment": false,
  "additional_tags": {},
  "cluster_selection_logic": [
    ...
  ],
  "org": "<ORG_ID>",
  "updated_by": null,
  "model_repo": "<MODEL_REPO_ID>",
  "cluster": "<CLUSTER_ID>",
  "pricing_catalog": null,
  "additional_usage_details": null,
  "input_volume_mounts": null,
  "output_volume_mounts": null,
  "source_secret": null,
  "deployment_config": null,
  "pricing_config": null,
  "node_groups": [
    "<NODE_GROUP_ID>"
  ]
}
```

### Update Deployment

Updates deployment configuration.

```bash theme={null}
simplismart deployments update [options]
```

| Option                 | Description                                 |
| ---------------------- | ------------------------------------------- |
| `--deployment-id UUID` | Deployment UUID (required)                  |
| `--payload JSON/@file` | JSON object with editable fields (required) |

**Example:**

```bash theme={null}
simplismart deployments update --deployment-id <DEPLOYMENT_ID> --payload @edit-payload.json
```

### Stop Deployment

Stops a running deployment.

```bash theme={null}
simplismart deployments stop [options]
```

| Option                 | Description                |
| ---------------------- | -------------------------- |
| `--deployment-id UUID` | Deployment UUID (required) |

**Example:**

```bash theme={null}
simplismart deployments stop --deployment-id <DEPLOYMENT_ID>
```

### Start Deployment

Starts a stopped deployment.

```bash theme={null}
simplismart deployments start [options]
```

| Option                 | Description                |
| ---------------------- | -------------------------- |
| `--deployment-id UUID` | Deployment UUID (required) |

**Example:**

```bash theme={null}
simplismart deployments start --deployment-id <DEPLOYMENT_ID>
```

### Scale Deployment

Updates the autoscaling configuration of a live deployment.

```bash theme={null}
simplismart deployments scale [options]
```

| Option                              | Description                                                          |
| ----------------------------------- | -------------------------------------------------------------------- |
| `--deployment-id UUID`              | Deployment UUID (required)                                           |
| `--min-replicas N`                  | Minimum replicas (required). `0` requires `--cron-scaling`           |
| `--max-replicas N`                  | Maximum replicas (required)                                          |
| `--scale-to-zero`                   | Traffic-based scale-to-zero. Cannot combine with `--cron-scaling`    |
| `--cooldown-period SECONDS`         | KEDA cooldown period                                                 |
| `--initial-cooldown-period SECONDS` | KEDA initial cooldown period                                         |
| `--cron-scaling JSON/@file`         | List of cron windows (`timezone`, `start`, `end`, `desiredReplicas`) |
| `--targets JSON/@file`              | KEDA metric targets (`metric`, `target`, optional `percentile`)      |
| `--scale-up-behavior JSON/@file`    | HPA scale-up behavior                                                |
| `--scale-down-behavior JSON/@file`  | HPA scale-down behavior                                              |

<Note>
  On this endpoint `cronScaling`, `targets`, `scaleDownBehavior`, and `scaleUpBehavior` are **top-level** fields (unlike `create` / `update`, where they nest inside `--autoscale-config`). Two rules are validated client-side before the request: `--min-replicas 0` requires `--cron-scaling`, and `--scale-to-zero` cannot be combined with `--cron-scaling`.
</Note>

**Examples:**

```bash theme={null}
# Plain min/max replicas
simplismart deployments scale \
  --deployment-id <DEPLOYMENT_ID> \
  --min-replicas 1 \
  --max-replicas 3

# Traffic-based scale-to-zero with a cooldown
simplismart deployments scale \
  --deployment-id <DEPLOYMENT_ID> \
  --min-replicas 1 --max-replicas 3 \
  --scale-to-zero --cooldown-period 30

# Cron window — min-replicas 0, run only weekdays 8am–6pm UTC
simplismart deployments scale \
  --deployment-id <DEPLOYMENT_ID> \
  --min-replicas 0 --max-replicas 2 \
  --cron-scaling '[{"timezone":"UTC","start":"0 8 * * 1-5","end":"0 18 * * 1-5","desiredReplicas":1}]'

# Latency metric target + both HPA behaviors (fast up, gentle down)
simplismart deployments scale \
  --deployment-id <DEPLOYMENT_ID> \
  --min-replicas 1 --max-replicas 8 \
  --targets '[{"metric":"latency","target":200,"percentile":95}]' \
  --scale-up-behavior '{"stabilizationWindowSeconds":0,"selectPolicy":"Max","policies":[{"type":"Pods","value":4,"periodSeconds":15}]}' \
  --scale-down-behavior '{"stabilizationWindowSeconds":300,"selectPolicy":"Min","policies":[{"type":"Percent","value":25,"periodSeconds":60}]}'

# Large configs can be read from a file with @
simplismart deployments scale \
  --deployment-id <DEPLOYMENT_ID> \
  --min-replicas 1 --max-replicas 8 --scale-up-behavior @scale_up.json
```

### Delete Deployment

Deletes a deployment.

```bash theme={null}
simplismart deployments delete [options]
```

| Option                 | Description                |
| ---------------------- | -------------------------- |
| `--deployment-id UUID` | Deployment UUID (required) |

**Example:**

```bash theme={null}
simplismart deployments delete --deployment-id <DEPLOYMENT_ID>
```

***

## BYOC Deployment

Create a BYOC deployment with a payload (cluster, nodegroup, etc.). See [Bring your own compute](/inference/bring-your-own-compute) and [Deploy on imported cluster](/model-suite/deployments/deploy-on-an-imported-cluster).

```bash theme={null}
simplismart deployments create-byoc --payload '{
  "model_repo": "<MODEL_REPO_ID>",
  "org": "<YOUR_ORG_UUID>",
  "name": "my-byoc-deploy",
  "min_pod_replicas": 1,
  "max_pod_replicas": 1,
  "nodegroups": ["<NODEGROUP_ID>"]
}'

# Or from a JSON file
simplismart deployments create-byoc --payload @byoc-create.json
```
