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

# Manage Pods

> Create, start, stop, and terminate Pods using the Runpod console or CLI.

export const TemplatesTooltip = () => {
  return <Tooltip headline="Templates" tip="Pre-configured Pod setups that bundle Docker images with hardware specs, network settings, and environment variables for quick deployment." cta="Learn more about templates" href="/pods/templates/overview">templates</Tooltip>;
};

export const MachineTooltip = () => {
  return <Tooltip headline="Machine" tip="The physical server hardware within a data center that hosts your compute resources.">machine</Tooltip>;
};

This page covers the core Pod management operations. For CLI usage, first [install the Runpod CLI](/runpodctl/overview) and configure your API key:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
runpodctl config --apiKey RUNPOD_API_KEY
```

## Quick reference

| Action        | Web UI                                                   | CLI                                                               |
| ------------- | -------------------------------------------------------- | ----------------------------------------------------------------- |
| **Deploy**    | [Pods page](https://www.console.runpod.io/pods) → Deploy | `runpodctl pod create --name NAME --gpu-id "GPU" --image "IMAGE"` |
| **Start**     | Expand Pod → Play icon                                   | `runpodctl pod start POD_ID`                                      |
| **Stop**      | Expand Pod → Stop icon                                   | `runpodctl pod stop POD_ID`                                       |
| **Update**    | Three-dot menu → Edit Pod                                | `runpodctl pod update POD_ID`                                     |
| **Terminate** | Expand Pod → Trash icon                                  | `runpodctl pod delete POD_ID`                                     |
| **List**      | [Pods page](https://www.console.runpod.io/pods)          | `runpodctl pod list`                                              |

## Deploy a Pod

<Tip>
  Deploy preconfigured Pods from the [Runpod Hub](/hub/overview#deploy-as-a-pod) for quick setup.
</Tip>

<Tabs>
  <Tab title="Web">
    1. Open the [Pods page](https://www.console.runpod.io/pods) and click **Deploy**.
    2. (Optional) Attach a [network volume](/storage/network-volumes) for persistent storage.
    3. Select **GPU** or **CPU**, then configure:

    **GPU**: Select GPU type → Name your Pod → (Optional) Choose a template → Set GPU count → Click **Deploy On-Demand**

    **CPU**: Select CPU type → Choose instance configuration → Name your Pod → Click **Deploy On-Demand**

    <Warning>
      **CUDA compatibility**: Ensure the host <MachineTooltip /> CUDA version matches your <TemplatesTooltip /> requirements. If you see "OCI runtime create failed" errors, use **Additional filters → CUDA Versions** to select compatible machines.
    </Warning>
  </Tab>

  <Tab title="CLI">
    ```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
    runpodctl pod create \
      --name hello-world \
      --gpu-id "NVIDIA A40" \
      --image "runpod/pytorch:3.10-2.0.0-117" \
      --container-disk-in-gb 10 \
      --volume-in-gb 100
    ```
  </Tab>

  <Tab title="REST API">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl --request POST \
      --url https://rest.runpod.io/v1/pods \
      --header 'Authorization: Bearer RUNPOD_API_KEY' \
      --header 'Content-Type: application/json' \
      --data '{
        "name": "my-pod",
        "imageName": "runpod/pytorch:2.1.0-py3.10-cuda11.8.0-devel-ubuntu22.04",
        "gpuTypeIds": ["NVIDIA GeForce RTX 4090"],
        "gpuCount": 1,
        "containerDiskInGb": 50,
        "volumeInGb": 20
      }'
    ```

    To deploy a Pod from an existing template, use the `templateId` parameter instead of specifying individual configuration options:

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl --request POST \
      --url https://rest.runpod.io/v1/pods \
      --header 'Authorization: Bearer RUNPOD_API_KEY' \
      --header 'Content-Type: application/json' \
      --data '{
        "name": "my-pod-from-template",
        "templateId": "YOUR_TEMPLATE_ID",
        "gpuTypeIds": ["NVIDIA GeForce RTX 4090"],
        "gpuCount": 1
      }'
    ```

    See the [Pod API reference](/api-reference/pods/POST/pods) for all parameters.
  </Tab>
</Tabs>

## Stop a Pod

Stopping a Pod releases the GPU and preserves data in `/workspace` (volume disk). Container disk data is cleared.

<Warning>
  You'll still be charged for [volume disk storage](/pods/storage/types#volume-disk) while stopped. Terminate the Pod if you don't need to retain your environment.
</Warning>

<Tip>
  When using a [network volume](/storage/network-volumes), your `/workspace` data is preserved whether you stop or terminate the Pod.
</Tip>

<Tabs>
  <Tab title="Web">
    1. Open the [Pods page](https://www.console.runpod.io/pods) and expand your Pod.
    2. Click the **Stop** button (square icon) and confirm.
  </Tab>

  <Tab title="CLI">
    ```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
    runpodctl pod stop $RUNPOD_POD_ID
    ```

    **Schedule a stop** (e.g., after 2 hours):

    ```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
    sleep 2h; runpodctl pod stop $RUNPOD_POD_ID &
    ```
  </Tab>

  <Tab title="REST API">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl --request POST \
      --url "https://rest.runpod.io/v1/pods/$RUNPOD_POD_ID/stop" \
      --header 'Authorization: Bearer RUNPOD_API_KEY'
    ```
  </Tab>
</Tabs>

## Start a Pod

Resume a stopped Pod. Note: You may be allocated [zero GPUs](/references/troubleshooting/zero-gpus) if capacity has changed.

<Tabs>
  <Tab title="Web">
    1. Open the [Pods page](https://www.console.runpod.io/pods) and expand your Pod.
    2. Click the **Start** button (play icon).
  </Tab>

  <Tab title="CLI">
    ```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
    runpodctl pod start $RUNPOD_POD_ID
    ```
  </Tab>

  <Tab title="REST API">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl --request POST \
      --url "https://rest.runpod.io/v1/pods/$RUNPOD_POD_ID/start" \
      --header 'Authorization: Bearer RUNPOD_API_KEY'
    ```
  </Tab>
</Tabs>

## Update a Pod

Modify an existing Pod's configuration, such as storage size, image, ports, or environment variables.

<Warning>
  Editing a running Pod resets it completely, erasing all data not stored in `/workspace` or a network volume.
</Warning>

<Tabs>
  <Tab title="Web">
    1. Open the [Pods page](https://www.console.runpod.io/pods).
    2. Click the three-dot menu next to the Pod you want to update.
    3. Click **Edit Pod** and modify your configuration.
    4. Click **Save** to apply changes.
  </Tab>

  <Tab title="REST API">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl --request PATCH \
      --url "https://rest.runpod.io/v1/pods/$RUNPOD_POD_ID" \
      --header 'Authorization: Bearer RUNPOD_API_KEY' \
      --header 'Content-Type: application/json' \
      --data '{
        "containerDiskInGb": 100,
        "volumeInGb": 200
      }'
    ```

    See the [Pod API reference](/api-reference/pods/PATCH/pods/podId) for all editable fields.
  </Tab>
</Tabs>

## Terminate a Pod

<Danger>
  Terminating permanently deletes all data not stored in a [network volume](/storage/network-volumes). Export important data first.
</Danger>

<Tabs>
  <Tab title="Web">
    1. Open the [Pods page](https://www.console.runpod.io/pods) and expand your Pod.
    2. Stop the Pod if running, then click **Terminate** (trash icon) and confirm.
  </Tab>

  <Tab title="CLI">
    ```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
    runpodctl pod delete $RUNPOD_POD_ID
    ```
  </Tab>

  <Tab title="REST API">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl --request DELETE \
      --url "https://rest.runpod.io/v1/pods/$RUNPOD_POD_ID" \
      --header 'Authorization: Bearer RUNPOD_API_KEY'
    ```
  </Tab>
</Tabs>

## View logs

Pods provide two log types:

* **Container logs**: Application output (stdout)
* **System logs**: Pod lifecycle events (startup, shutdown, errors)

Access logs from the [Pods page](https://www.console.runpod.io/pods) by expanding your Pod and clicking **Logs**.

## Troubleshooting

| Issue                          | Solution                                                                                          |
| ------------------------------ | ------------------------------------------------------------------------------------------------- |
| **Zero GPUs on restart**       | See [Zero GPU Pods](/references/troubleshooting/zero-gpus)                                        |
| **Pod stuck initializing**     | Check logs for command errors; ensure you have an idle job (e.g., `sleep infinity`) if using SSH  |
| **Docker Compose not working** | Not supported. Use a [custom template](/pods/templates/overview) with your dependencies baked in. |

Need help? [Contact support](https://www.runpod.io/contact).
