runpod Python package, so there’s one SDK, one package to install, and one CLI. This guide shows where each part of Flash lives in the Runpod SDK and walks you through moving an existing Flash project over.
runpod-flash is deprecated on October 29, 2026. Your existing Flash code and deployed endpoints keep working. After that date, the package gets no fixes or updates. New features land only in the runpod package. For details, see the deprecation timeline.What changed at a glance
- One package. Install
runpodinstead ofrunpod-flash. The app SDK, the endpoint client, the Serverless worker SDK, and the API wrapper all ship together. - One CLI. Flash commands now run as
rp flash COMMAND. Account commands such asrp loginlive at the root of the same CLI. The CLI is also available asrunpod, sorunpod flash deployworks too. - One login.
rp loginsaves credentials to~/.runpod/config.toml, which the whole SDK reads.RUNPOD_API_KEYis the only environment variable for authentication. - An app-based API. Instead of decorating functions with
@Endpoint, you create arunpod.Appand attach resources to it with@app.queue,@app.api, or the new@app.task. - A separate runtime. The code that runs on workers now ships in its own package,
runpod-sdk-runtime, so it can be released independently of the SDK. See Runtime. - A new major version. The unified SDK is
runpod2.0. Version 2.0 includes breaking changes, such as the removal of the oldrunpod config,runpod project, andrunpod execCLI commands. Until the stable release, you can test it withpip install runpod==2.0.0rc1.
What stays the same
runpod.Endpoint("ENDPOINT_ID")and itsrun,run_sync,status, andoutputmethods work exactly as before.runpod.serverless.startand the rest of the Serverless worker SDK are unchanged.- API wrapper functions such as
runpod.create_podandrunpod.get_podsstill work. - Your credentials file and
RUNPOD_API_KEYcarry over, so you don’t need to create a new API key.
Do you need to migrate?
Flash keeps working after its deprecation date, but it stops getting fixes and updates on October 29, 2026. Plan to move to the Runpod SDK by then. Migrate if you want features that are only in the Runpod SDK:@app.taskfor running one ephemeral Pod per call, such as training or fine-tuning jobs.runpod.Secretfor reading environment values from Runpod secrets.runpod.Modelfor platform-cached model weights..spawn()and.stream()for background jobs and streamed results.rp logsfor following a Pod’s logs from your terminal.
Requirements
- An existing Flash project.
- Python 3.10 to 3.14.
- The
runpodpackage, version 2.0 or later. - A Runpod account with a verified email address.
Step 1: Install the SDK and log in
In your project’s virtual environment, removerunpod-flash and install runpod:
runpod 2.0.0 is released, install the release candidate instead: pip install runpod==2.0.0rc1.
Then log in:
flash login, your saved credentials still work and this step updates the same ~/.runpod/config.toml file.
Step 2: Update your CLI commands
Replaceflash commands in your scripts, Makefiles, and CI with their rp flash equivalents:
See the CLI reference for all commands and flags.
Step 3: Update your code
The Runpod SDK groups your resources into an app. Work through the sections below in order.Imports and the app
Replace therunpod_flash import with runpod and create an app. The app name groups your resources when you deploy.
Queue-based endpoints
Replace the@Endpoint decorator with @app.queue:
rp flash dev main.py.
Resource names come from the function or class name, so the example above creates a resource called hello. To use a different name, pass name=, for example @app.queue(name="hello-gpu", gpu="4090").
Load-balanced endpoints
This is the biggest change. In Flash, you created anEndpoint instance and attached route functions to it. In the Runpod SDK, you write a class and mark it with @app.api. Methods marked with @runpod.get or @runpod.post become routes, and a method marked with @runpod.init runs once when each worker starts.
MyApi.post("/compute", {"x": 1}).
Calling functions
Hardware
TheGpuType and GpuGroup names are the same, and you can also use shorter strings:
Storage
Queue-based and load-balanced resources support one volume, mounted at
/runpod-volume. Tasks support one network volume and one global volume at different paths. Global volumes require GPU compute.
Other settings
See Resource parameters for the full list.
Environment variables and secrets
You can still pass plain values inenv. To keep tokens out of your code, store them as Runpod secrets and reference them with runpod.Secret:
Existing endpoints and custom images
Step 4: Check behavior that changed
These differences don’t raise errors, so check them before you deploy:- Default worker range. Resources now default to
workers=(0, 3)instead of(0, 1), so a busy endpoint can scale to three workers. Setworkersexplicitly if you need a different limit. - No local server in dev sessions.
flash devran a local server onlocalhost:8888with an API explorer at/docs.rp flash dev main.pyruns your@runpod.local_entrypointfunction instead and streams worker logs to your terminal. Update any local testing that sent curl requests tolocalhost:8888. - Custom images work differently. You no longer need an image that implements a Serverless handler. The SDK runs your function on any image that has Python 3.
- One volume per endpoint. Lists of volumes across datacenters aren’t supported.
- Volumes keep billing. Undeploying an app doesn’t delete the network volumes it created. Delete them separately when you no longer need them.
- New ignore file.
.flashignoreis replaced by.runpodignore, and deployments also follow your project’s.gitignorefiles..envfiles, keys, and credential files are always left out. See Ignore rules. - Python version must match in dev sessions. Dev sessions and tasks send your function from your local Python, so your local interpreter must be 3.10 to 3.14. See Dev sessions.
Step 5: Test, then deploy
-
Run your migrated app once in a dev session and check the output:
-
Fix any errors, then deploy:
- Confirm your endpoints on the Serverless page in the console.
-
When the new deployment works, remove the endpoints you deployed with Flash:
Known differences
A few Flash patterns don’t work the same way in the Runpod SDK yet. If your project uses one of them, test it carefully or stay on Flash until it’s supported:- Projects split across multiple local files.
- Classes used as remote resources, other than
@app.apiclasses. - Path and query parameters on HTTP routes.
- Resources that reference an existing template or endpoint with
template=orid=.
Flash deprecation timeline
The standalonerunpod-flash package is deprecated on October 29, 2026. Until then, it keeps working but gets no new features. After that date, it gets no fixes or updates. The package stays on PyPI, and Flash code and endpoints you’ve already deployed keep working.
The runpod/flash repository will also be archived, which makes it read-only. The archive date is announced in the repository.
The Flash pages in these docs stay online for reference, with a notice pointing to the Runpod SDK docs.
Deprecation notice
runpod-flash 1.21.0 and later print a deprecation notice once per process:
- The
flashCLI prints it to stderr on every command, includingflash --help. Output on stdout, such as fromflash --version, is unchanged. - The Python package raises a
FutureWarningthe first time your code uses the Flash API, such asfrom runpod_flash import Endpoint. - Deployed Flash workers don’t show the notice, so it doesn’t appear in your endpoint logs.
RUNPOD_FLASH_SILENCE_DEPRECATION=1:
PYTHONWARNINGS=ignore::FutureWarning.
Next steps
- Read the SDK overview to learn about apps, resource types, and storage.
- Configure resources with the full parameter reference.
- Build an app step by step.
- Review the CLI reference.
- Learn about the runtime that runs your code on workers.
- Browse the examples in the runpod-python repository.