- The SDK (
runpod) runs on your machine. It defines your app, talks to the Runpod API, and powers therpCLI. - The runtime (
runpod-sdk-runtime) runs on each worker. It loads your code, binds storage and other resources, and executes your functions when requests arrive.
How the runtime gets onto workers
You don’t install the runtime yourself. Runpod handles it in one of two ways, depending on how your resource is configured:- Default images. Runpod’s worker images come with the runtime already installed and cached on Runpod machines, so workers start without an extra install step.
- Custom images. If you set
image=on a resource, the worker installsrunpod-sdk-runtimewhen it starts. Your image needs Python andpip, and the worker needs network access to the package index.
When you need the runtime separately
Most users never interact with the runtime directly. You might need to think about it in these cases:- You use a custom container image. The image must be able to install
runpod-sdk-runtimeat startup. If the install fails, the worker can’t start and requests time out. - You need a specific runtime version. For example, to pick up a fix before it reaches the default images, or to pin a known-good version.
- You’re debugging worker startup. Worker logs that mention the runtime or its bootstrap step come from this package, not from your code or the SDK.
- You want to read or contribute to the worker-side code. It lives in the runpod-workers/sdk-runtime repository, not in runpod-python.
Serverless workers you build yourself
The runtime is only used by apps defined withrunpod.App. If you build your own worker container with a handler function and runpod.serverless.start, you don’t need the runtime. Keep installing the runpod package in your image as before. See Handler functions.
Next steps
- Read the SDK overview.
- See what changed when Flash became part of the SDK.