Skip to main content
The rp CLI is installed with the runpod Python package. Use it to authenticate, develop and deploy apps, and work with Pods and SSH keys. The same CLI is also available under the name runpod, so rp flash deploy and runpod flash deploy are equivalent.
The rp CLI is separate from runpodctl, which is a standalone binary with a different set of commands.

Command summary

App lifecycle commands live under rp flash. Login, secrets, registries, logs, updates, SSH, and Pod commands live at the root. Run rp --help or rp COMMAND --help for details on any command.

rp login

Authenticate with Runpod and save your credentials to ~/.runpod/config.toml:
Use --profile PROFILE_NAME with either login method to update only that profile. The default profile is default. To print the approval URL instead of opening a browser, add --no-open.

rp flash init

Scaffold a new app project:
This writes main.py (an app with one queue function and a local entrypoint), requirements.txt, and .runpodignore. Existing files aren’t overwritten unless you add --force. See Build an app.

rp flash dev

Run a live development session for the app defined in a file:
The session creates temporary endpoints, runs the function marked with @runpod.local_entrypoint, and streams worker logs back to your terminal. Edit your code, then press Enter to re-run. Workers pick up the new code automatically. See Dev sessions for how sessions work. To run the entrypoint once and exit, which is useful for scripts and CI, add --once:
When you press Ctrl-C, the session waits for the running entrypoint to finish and then deletes its endpoints. If cleanup fails, the command exits with an error and lists the endpoint IDs you need to delete.
App discovery imports your modules synchronously. Keep blocking work inside an entrypoint or a remote function. If discovery hangs on an import, interrupt it with Ctrl-C.

rp flash deploy

Build and deploy the app in the current project:
This packages and deploys every app found in the current directory. To deploy another directory, pass its path, for example rp flash deploy path/to/project. Flags: To learn what goes into the artifact, including ignore rules and the size limit, see Deploy an app.

rp flash app

Manage the apps you’ve deployed:

rp flash env

Manage an app’s environments, such as dev, staging, and production:
The env commands use the app in the current directory. If the directory has no app or more than one, pass --app APP_NAME.

rp flash undeploy

Delete an environment’s endpoints and the environment itself:
The app and its build history remain. --app is optional when the current directory has one app. Add --yes to skip the confirmation prompt.
Undeploying an app doesn’t delete network volumes it created. Volumes continue to incur storage charges until you delete them. See Network volumes to learn how to delete a volume.

Secrets and registries

Store secrets that your app reads with runpod.Secret, and save credentials for private container registries:
rp secret add also accepts --value and --description, and rp registry add accepts --username and --password. If you leave them out, the CLI prompts for them, which keeps the values out of your shell history. Reference a secret in code with env={"HF_TOKEN": runpod.Secret("SECRET_NAME")}, and registry credentials with registry_auth="REGISTRY_NAME".

rp logs

Show a Pod’s container and system logs, such as a Pod started by @app.task:

rp update

Update the runpod package, which includes the CLI, to the latest version:

rp ssh

Manage SSH keys on your account and connect to Pods:
rp ssh add generates a new key if you don’t pass one. To use an existing key, pass --key or --key-file. Keys are stored in ~/.runpod/ssh/.

rp pod

Work with Pods:

Next steps

Last modified on October 14, 2026