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

# pod

Manage Pods, including creating, listing, starting, stopping, and deleting Pods.

```bash theme={null}
runpodctl <subcommand> pod [flags]
```

## Subcommands

### List Pods

List your Pods. By default, this command shows only running Pods (similar to `docker ps`):

```bash theme={null}
runpodctl pod list
```

List all Pods including exited ones:

```bash theme={null}
runpodctl pod list --all
```

Filter by status:

```bash theme={null}
runpodctl pod list --status exited
```

Filter by creation time:

```bash theme={null}
# Pods created in the last 24 hours
runpodctl pod list --since 24h

# Pods created in the last 7 days
runpodctl pod list --since 7d

# Pods created after a specific date
runpodctl pod list --created-after 2025-01-15
```

#### List flags

<ResponseField name="--all, -a" type="bool">
  Show all Pods including exited ones. By default, only running Pods are shown.
</ResponseField>

<ResponseField name="--status" type="string">
  Filter by Pod status (e.g., `RUNNING`, `EXITED`). Cannot be used with `--all`.
</ResponseField>

<ResponseField name="--since" type="string">
  Filter Pods created within the specified duration (e.g., `1h`, `24h`, `7d`). Cannot be used with `--created-after`.
</ResponseField>

<ResponseField name="--created-after" type="string">
  Filter Pods created after the specified date in `YYYY-MM-DD` format. Cannot be used with `--since`.
</ResponseField>

<ResponseField name="--compute-type" type="string">
  Filter by compute type (`GPU` or `CPU`).
</ResponseField>

<ResponseField name="--name" type="string">
  Filter by Pod name.
</ResponseField>

### Get Pod details

Get detailed information about a specific Pod, including SSH connection info:

```bash theme={null}
runpodctl pod get <pod-id>
```

### Create a Pod

Create a new Pod from a template:

```bash theme={null}
runpodctl pod create --template-id runpod-torch-v21 --gpu-id "NVIDIA GeForce RTX 4090"
```

Create a Pod with a custom Docker image:

```bash theme={null}
runpodctl pod create --image "runpod/pytorch:1.0.3-cu1281-torch291-ubuntu2404" --gpu-id "NVIDIA GeForce RTX 4090"
```

Create a CPU-only Pod:

```bash theme={null}
runpodctl pod create --compute-type cpu --image ubuntu:22.04
```

Block until the Pod's SSH is reachable, then print the same output as `pod get` (including the live `ssh` block):

```bash theme={null}
runpodctl pod create --image "runpod/pytorch:1.0.3-cu1281-torch291-ubuntu2404" --gpu-id "NVIDIA GeForce RTX 4090" --wait
```

See [Wait for the Pod to be usable](#wait-for-the-pod-to-be-usable) for details on `--wait` and `--wait-timeout`.

#### Create flags

<ResponseField name="--template-id" type="string">
  Template ID to use for Pod configuration. Use [`runpodctl template search`](/runpodctl/reference/runpodctl-template) to find templates.
</ResponseField>

<ResponseField name="--image" type="string">
  Docker image to use (e.g., `runpod/pytorch:2.8.0-py3.11-cuda12.8.1-cudnn-devel-ubuntu22.04`). Required if no template specified.
</ResponseField>

<ResponseField name="--name" type="string">
  Custom name for the Pod.
</ResponseField>

<ResponseField name="--gpu-id" type="string">
  GPU type (e.g., `NVIDIA GeForce RTX 4090`, `NVIDIA A100 80GB PCIe`). Use [`runpodctl gpu list`](/runpodctl/reference/runpodctl-gpu) to see available GPUs.
</ResponseField>

<ResponseField name="--gpu-count" type="int" default="1">
  Number of GPUs to allocate.
</ResponseField>

<ResponseField name="--compute-type" type="string" default="GPU">
  Compute type (`GPU` or `CPU`).
</ResponseField>

<ResponseField name="--container-disk-in-gb" type="int" default="20">
  Container disk size in GB.
</ResponseField>

<ResponseField name="--volume-in-gb" type="int">
  Persistent volume size in GB.
</ResponseField>

<ResponseField name="--volume-mount-path" type="string" default="/workspace">
  Mount path for the persistent volume.
</ResponseField>

<ResponseField name="--ports" type="string">
  Comma-separated list of ports to expose (e.g., `8888/http,22/tcp`).
</ResponseField>

<ResponseField name="--env" type="string">
  Environment variables as a JSON object (e.g., `'{"KEY":"value"}'`).
</ResponseField>

<ResponseField name="--cloud-type" type="string" default="SECURE">
  Cloud tier (`SECURE` or `COMMUNITY`).
</ResponseField>

<ResponseField name="--data-center-ids" type="string">
  Comma-separated list of preferred datacenter IDs. Use [`runpodctl datacenter list`](/runpodctl/reference/runpodctl-datacenter) to see available datacenters.
</ResponseField>

<ResponseField name="--global-networking" type="bool">
  Enable global networking (Secure Cloud only).
</ResponseField>

<ResponseField name="--public-ip" type="bool">
  Require public IP (Community Cloud only).
</ResponseField>

<ResponseField name="--ssh" type="bool" default="true">
  Enable SSH on the Pod.
</ResponseField>

<ResponseField name="--network-volume-id" type="string">
  Network volume ID to attach. Use [`runpodctl network-volume list`](/runpodctl/reference/runpodctl-network-volume) to see available network volumes.
</ResponseField>

<ResponseField name="--min-cuda-version" type="string">
  Minimum CUDA version required (e.g., `11.8`, `12.4`). The Pod will only be scheduled on machines that meet this CUDA version requirement.
</ResponseField>

<ResponseField name="--docker-args" type="string">
  Docker arguments passed to the container at runtime (e.g., `"sleep infinity"`).
</ResponseField>

<ResponseField name="--registry-auth-id" type="string">
  Container registry authentication ID for pulling private images. Use [`runpodctl registry list`](/runpodctl/reference/runpodctl-registry) to see available registry credentials.
</ResponseField>

<ResponseField name="--country-code" type="string">
  Country code for regional deployment (e.g., `US`, `CA`, `EU`). Restricts Pod placement to machines in the specified region.
</ResponseField>

<ResponseField name="--stop-after" type="string">
  Automatically stop the Pod after the specified duration (e.g., `1h`, `24h`, `7d`).
</ResponseField>

<ResponseField name="--terminate-after" type="string">
  Automatically terminate the Pod after the specified duration (e.g., `1h`, `24h`, `7d`). Unlike `--stop-after`, this permanently deletes the Pod.
</ResponseField>

<ResponseField name="--compliance" type="string">
  Compliance settings for the Pod (e.g., regulatory requirements for data handling).
</ResponseField>

<ResponseField name="--wait" type="bool">
  Block until the Pod is actually usable, not just scheduled. See [Wait for the Pod to be usable](#wait-for-the-pod-to-be-usable).
</ResponseField>

<ResponseField name="--wait-timeout" type="string" default="10m">
  Maximum time to wait when `--wait` is set. Accepts values like `90s`, `10m`, `1h`, `2d`. On timeout the Pod is kept (it is billing) and the error carries its `id`.
</ResponseField>

#### Wait for the Pod to be usable

By default, `pod create` returns as soon as the Pod is scheduled. Its container image may still be pulling and sshd may not be running yet. Pass `--wait` to block until the Pod is reachable over SSH before the command returns:

```bash theme={null}
runpodctl pod create --image <image> --gpu-id "NVIDIA GeForce RTX 4090" --wait
```

**Readiness predicate.** With `--wait`, the CLI polls the Pod's public port `22` and considers it ready once a TCP connection succeeds and the server replies with an SSH protocol banner. There is no key check or full handshake, so the wait can succeed against an image whose sshd never received your key. When ready, `pod create` prints the same shape as [`runpodctl pod get`](#get-pod-details) rather than the plain create response, so the payload includes the live `ssh` block.

**Timeout behavior.** `--wait-timeout` defaults to `10m` and shares the CLI's duration parser (`90s`, `10m`, `1h`, `2d`). If the wait times out or you cancel with `Ctrl-C`, **the Pod is not deleted** — you are still billed for it. The command exits non-zero, and the error object carries an `id` field with the Pod ID plus a `code` of `wait_timeout` or `wait_interrupted` so you can clean up with [`runpodctl pod delete`](#delete-a-pod).

**Flag compatibility.** `--wait` requires SSH, so it cannot be combined with `--ssh=false`. Two other combinations still work but print a warning on stderr because they often fail to produce a reachable SSH port:

* `--compute-type CPU` — CPU Pods are created over REST and do not get Runpod-managed SSH, so only images that start their own sshd become reachable.
* `--cloud-type COMMUNITY` without `--public-ip` — Community Cloud only maps a public SSH port when the machine has a public IP.

### Start a Pod

Start a stopped Pod:

```bash theme={null}
runpodctl pod start <pod-id>
```

### Stop a Pod

Stop a running Pod:

```bash theme={null}
runpodctl pod stop <pod-id>
```

### Restart a Pod

Restart a Pod:

```bash theme={null}
runpodctl pod restart <pod-id>
```

### Reset a Pod

Reset a Pod to its initial state:

```bash theme={null}
runpodctl pod reset <pod-id>
```

### Update a Pod

Update Pod configuration:

```bash theme={null}
runpodctl pod update <pod-id> --name "new-name"
```

#### Update flags

<ResponseField name="--name" type="string">
  New name for the Pod.
</ResponseField>

<ResponseField name="--image" type="string">
  New Docker image name.
</ResponseField>

<ResponseField name="--container-disk-in-gb" type="int">
  New container disk size in GB.
</ResponseField>

<ResponseField name="--volume-in-gb" type="int">
  New volume size in GB.
</ResponseField>

<ResponseField name="--volume-mount-path" type="string">
  New volume mount path.
</ResponseField>

<ResponseField name="--ports" type="string">
  New comma-separated list of ports.
</ResponseField>

<ResponseField name="--env" type="string">
  New environment variables as a JSON object.
</ResponseField>

### Delete a Pod

Delete a Pod:

```bash theme={null}
runpodctl pod delete <pod-id>
```

## Pod URLs

Access exposed ports on your Pod using the following URL pattern:

```
https://<pod-id>-<port>.proxy.runpod.net
```

For example, if your Pod ID is `abc123xyz` and you exposed port 8888:

```
https://abc123xyz-8888.proxy.runpod.net
```

## Related commands

* [`runpodctl gpu list`](/runpodctl/reference/runpodctl-gpu)
* [`runpodctl template`](/runpodctl/reference/runpodctl-template)
* [`runpodctl ssh`](/runpodctl/reference/runpodctl-ssh)
