Skip to main content
Manage Pods, including creating, listing, starting, stopping, and deleting Pods.

Subcommands

List Pods

List your Pods. By default, this command shows only running Pods (similar to docker ps):
List all Pods including exited ones:
Filter by status:
Filter by creation time:

List flags

bool
Show all Pods including exited ones. By default, only running Pods are shown.
string
Filter by Pod status (e.g., RUNNING, EXITED). Cannot be used with --all.
string
Filter Pods created within the specified duration (e.g., 1h, 24h, 7d). Cannot be used with --created-after.
string
Filter Pods created after the specified date in YYYY-MM-DD format. Cannot be used with --since.
string
Filter by compute type (GPU or CPU).
string
Filter by Pod name.

Get Pod details

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

Create a Pod

Create a new Pod from a template:
Create a Pod with a custom Docker image:
Create a CPU-only Pod:
Block until the Pod’s SSH is reachable, then print the same output as pod get (including the live ssh block):
See Wait for the Pod to be usable for details on --wait and --wait-timeout.

Create flags

string
Template ID to use for Pod configuration. Use runpodctl template search to find templates.
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.
string
Custom name for the Pod.
string
GPU type (e.g., NVIDIA GeForce RTX 4090, NVIDIA A100 80GB PCIe). Use runpodctl gpu list to see available GPUs.
int
default:"1"
Number of GPUs to allocate.
string
default:"GPU"
Compute type (GPU or CPU).
int
default:"20"
Container disk size in GB.
int
Persistent volume size in GB.
string
default:"/workspace"
Mount path for the persistent volume.
string
Comma-separated list of ports to expose (e.g., 8888/http,22/tcp).
string
Environment variables as a JSON object (e.g., '{"KEY":"value"}').
string
default:"SECURE"
Cloud tier (SECURE or COMMUNITY).
string
Comma-separated list of preferred datacenter IDs. Use runpodctl datacenter list to see available datacenters.
bool
Enable global networking (Secure Cloud only).
bool
Require public IP (Community Cloud only).
bool
default:"true"
Enable SSH on the Pod.
string
Network volume ID to attach. Use runpodctl network-volume list to see available network volumes.
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.
string
Docker arguments passed to the container at runtime (e.g., "sleep infinity").
string
Container registry authentication ID for pulling private images. Use runpodctl registry list to see available registry credentials.
string
Country code for regional deployment (e.g., US, CA, EU). Restricts Pod placement to machines in the specified region.
string
Automatically stop the Pod after the specified duration (e.g., 1h, 24h, 7d).
string
Automatically terminate the Pod after the specified duration (e.g., 1h, 24h, 7d). Unlike --stop-after, this permanently deletes the Pod.
string
Compliance settings for the Pod (e.g., regulatory requirements for data handling).
bool
Block until the Pod is actually usable, not just scheduled. See Wait for the Pod to be usable.
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.

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:
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 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. 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:

Stop a Pod

Stop a running Pod:

Restart a Pod

Restart a Pod:

Reset a Pod

Reset a Pod to its initial state:

Update a Pod

Update Pod configuration:

Update flags

string
New name for the Pod.
string
New Docker image name.
int
New container disk size in GB.
int
New volume size in GB.
string
New volume mount path.
string
New comma-separated list of ports.
string
New environment variables as a JSON object.

Delete a Pod

Delete a Pod:

Pod URLs

Access exposed ports on your Pod using the following URL pattern:
For example, if your Pod ID is abc123xyz and you exposed port 8888: