runpodctl is the cli tool to manage gpu pods, serverless endpoints, and more on runpod.io.
note: all pods automatically come with runpodctl installed with a pod-scoped api key.
wget -qO- cli.runpod.net | sudo bashbrew install runpod/runpodctl/runpodctlwget https://github.com/runpod/runpodctl/releases/latest/download/runpodctl-windows-amd64.exe -O runpodctl.exerunpodctl is available on conda-forge.
# conda
conda install conda-forge::runpodctl
# mamba
mamba install conda-forge::runpodctl
# pixi (user-global install)
pixi global install runpodctl# configure api key
runpodctl config --apiKey=your_api_key
# list all pods
runpodctl pod list
# get a specific pod
runpodctl pod get pod_id
# create a pod
runpodctl pod create --image=runpod/pytorch:2.8.0-py3.11-cuda12.8.1-cudnn-devel-ubuntu22.04 --gpu-id=NVIDIA_A100
# start/stop/delete a pod
runpodctl pod start pod_id
runpodctl pod stop pod_id
runpodctl pod delete pod_idcommands follow noun-verb pattern: runpodctl <resource> <action>
runpodctl pod list # list all pods
runpodctl pod get <id> # get pod details
runpodctl pod create --image=<img> # create a pod
runpodctl pod update <id> # update a pod
runpodctl pod start <id> # start a stopped pod
runpodctl pod stop <id> # stop a running pod
runpodctl pod delete <id> # delete a podrunpodctl serverless list # list endpoints (alias: sls)
runpodctl serverless get <id> # get endpoint details
runpodctl serverless create # create endpoint
runpodctl serverless update <id> # update endpoint
runpodctl serverless delete <id> # delete endpointother resources: template (alias: tpl), volume (alias: vol), registry (alias: reg)
send and receive files without api key using croc:
# send a file
runpodctl send data.txt
# output: code is: 8338-galileo-collect-fidel
# receive on another computer
runpodctl receive 8338-galileo-collect-fideldefault output is json (optimized for agents). use --output flag for alternatives:
runpodctl pod list # json (default)
runpodctl pod list --output=table # human-readable table
runpodctl pod list --output=yaml # yaml formatlegacy commands are still supported but deprecated. please update your scripts:
get pod, create pod, remove pod, start pod, stop pod
releases are fully automated by goreleaser via the release github action (.github/workflows/release.yml). to cut a release:
-
make sure
mainis green and holds everything you want to ship. -
create and push a
v*semver tag on the commit to release:git tag v2.7.0 git push origin v2.7.0
-
the tag push triggers the
releaseworkflow, which runsgoreleaser release --cleanand:- builds binaries for darwin/linux/windows (amd64/arm64), incl. raw
runpodctl-{os}-{arch}binaries for the legacy self-update command and a upx-compressed linux/amd64 build. - creates the github release with archives + checksums (prereleases are auto-detected from the tag).
- opens pull requests on runpod/homebrew-runpodctl for the homebrew formula and cask.
- builds binaries for darwin/linux/windows (amd64/arm64), incl. raw
-
merge the homebrew pull requests. the tap lives in a separate repo, so the release is not complete for
brew installusers until those prs are merged. (they cannot be combined into this repo.)
notes:
- the workflow can also be run manually via
workflow_dispatch(re-runs goreleaser against the current ref). - the homebrew prs are authored by a github app; tap auth uses the
RELEASE_APP_ID/RELEASE_APP_PRIVATE_KEYsecrets, and goreleaser pushes via the generatedHOMEBREW_TAP_TOKEN. - conda-forge is updated separately by the conda-forge feedstock bot, not by this workflow.