Quick start
After installing and configuringrunpodctl, you can start managing resources immediately:
Install Runpod CLI locally
Every you deploy comes preinstalled withrunpodctl and a Pod-scoped API key. You can also install it on your local machine to manage resources remotely.
Step 1: Choose an installation method
Choose the installation method that matches your operating system.- Install script
- macOS
- Linux
- Windows
- Google Colab / Jupyter Notebook
- conda / mamba / pixi
The install script automatically detects your operating system and architecture:Or using curl:The script installs the latest version to
/usr/local/bin when run as root, or to ~/.local/bin for non-root users. If you don’t have root access, the script displays instructions for adding runpodctl to your PATH.runpodctl globally on your system, so you can run commands from any directory.
Step 2: Configure your API key
Before you can userunpodctl locally, you must configure it with an API key.
The easiest way to set up your API key and SSH configuration is with the doctor command:
Step 3: Verify installation
To verify thatrunpodctl installed successfully, run this command:
Command groups
Runpod CLI organizes commands into groups based on the resource type:Help and reference
Learn how to use Runpod CLI commands by browsing the CLI reference using the sidebar to the left, or by running thehelp command:
Output format
Successful command output goes to standard output as JSON by default, which makes runpodctl scriptable and agent-friendly. Use the--output flag to switch to a human-readable table or YAML:
template search and hub search emit [] on standard output when nothing matches, instead of a prose message, so a caller piping the output into a JSON parser gets a valid empty list on the no-match case.
Error format
When a command fails, runpodctl writes a single flat JSON object to standard error and exits with a non-zero status. Branch on thecode field, never on the message text:
Codes runpodctl generates:
The API can also return its own code, which is passed through in lowercase. Treat the list above as the set the CLI generates rather than an exhaustive one.
Exit codes
Every documented resource command exits non-zero on failure, includingmodel, update, send, and receive (which previously exited 0 on some failure paths). Do not rely on stdout being empty to detect failure. Check the exit code and parse the JSON error object on stderr.
A few legacy surfaces still print plain-text errors and do not carry a code:
- The legacy pod verbs (
get pod,create pod,remove pod,start pod,stop pod,create pods,remove pods) andget cloudprintError: <message>via cobra and exit1. execprints plain text and exits1.projectprints to standard output and exits0on failure (tracked upstream).
project until the upstream fix lands.
Environment variables
Invoke is a separate service from the control plane. Pointing
RUNPOD_API_URL or RUNPOD_GRAPHQL_URL at a non-production host does not move the invoke URLs; override RUNPOD_INVOKE_URL explicitly when you need that.
Shell completion
Enable tab completion for your shell to make working withrunpodctl easier:
~/.bashrc or ~/.zshrc). The command is idempotent—running it again skips installation if completion is already configured.
Restart your shell or source the configuration file for changes to take effect.