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 desired status (desiredStatus), such as RUNNING or EXITED. Matching is case-insensitive. Does not accept runtimeStatus values like initializing; passing one returns no results. 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:

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

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 runtime status

runpodctl pod get and runpodctl pod list now report a Pod’s real runtime state in their JSON and YAML output, alongside the existing desiredStatus. desiredStatus is the state you asked for (for example, RUNNING), while runtimeStatus is what the Pod is actually doing. For example, a Pod still pulling a large image and a Pod that has been serving traffic for an hour both show desiredStatus: RUNNING, but their runtimeStatus values differ.
string
Always present. What the Pod is actually doing (see the table below).
string
Present only when there is more to say. A stable token you can safely branch on in scripts.
string
Present when available. The backend’s raw status text (for example, Exited by user: <date> or Outbid: <date>).
For example, runpodctl pod list --output json returns entries like this for a running Pod:
When a Pod is initializing, runtimeStatus is initializing, runtimeStatusReason is awaiting_container, and uptimeSeconds is omitted because no container is reporting yet.

Runtime status values

Runtime status reasons

To poll a Pod to readiness in a script, wait for runtimeStatus: running. Branch on the runtimeStatus and runtimeStatusReason tokens rather than parsing the free-text lastStatusChange.
A runtimeStatus of unknown with reason runtime_unavailable during polling usually means the runtime lookup momentarily failed, not that the Pod is down—keep polling rather than treating it as terminal.
runtimeStatus and desiredStatus come from different sources, so a single command can briefly show them disagreeing (for example, desiredStatus: RUNNING next to runtimeStatus: stopped). When they disagree, trust runtimeStatus.
The uptimeSeconds field now reports the container’s actual uptime and is omitted entirely when no container is reporting, instead of always showing 0.

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: