NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4943 most downloaded on PyPI
🐍 | Python library for Runpod API and serverless worker SDK.
Last release 1 months ago
10 Aug 2026
Release timing varies
gaps range from 2 weeks to 4 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
4 years old
112 releases · first in 2022
One column per quarter.
serverless: network-volume warm cache (VolumeCache) with adaptive transport
serverless: report fitness failure to host before force-exit
stop funneling all jobs to one worker (JobsProgress shared state)
add agent source tracking to user-agent header
fix config credential updates preserving profiles
fitness: comprehensive system fitness checks for worker startup validation
prevent PyPI local version rejection
allowedCudaVersions is treated as float without the quotes
fix: multiprocess broke local development by @deanq in https://github.com/runpod/runpod-python/pull/430
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.11...1.7.12
Update README.md - Runpod name by @lukepiette in https://github.com/runpod/runpod-python/pull/424
allowed_cuda_versions as string by @deanq in https://github.com/runpod/runpod-python/pull/421Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.10...1.7.11
fix: allowed_cuda_versions was incorrectly typed as string by @deanq in https://github.com/runpod/runpod-python/pull/418
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.9...1.7.10
Retire sls-core by @deanq in https://github.com/runpod/runpod-python/pull/406
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.8...1.7.9
Fix: handle uncaught exception only for Serverless workers by @deanq in https://github.com/runpod/runpod-python/pull/388
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.7...1.7.8
Update cryptography requirement from <44.0.0 to <45.0.0 by @dependabot in https://github.com/runpod/runpod-python/pull/380
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.6...1.7.7
Fix: JobScaler issues that cause request failures by @deanq in https://github.com/runpod/runpod-python/pull/383
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.5...1.7.6
Fix: failed requests due to race conditions in the job queue vs job progress by @deanq in https://github.com/runpod/runpod-python/pull/376
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.4...1.7.5
fix: long-running jobs crash with SIGTERM by @deanq in https://github.com/runpod/runpod-python/pull/370
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.3...1.7.4
1.7.3: Long-running jobs (>60 seconds) can cause the system to stop the worker, triggering retries and failures. Additionally, a long idle timeout (20
1.7.3: Long-running jobs (>60 seconds) can cause the system to stop the worker, triggering retries and failures. Additionally, a long idle timeout (20+ seconds) may result in similar behavior, especially for the second request.
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.2...1.7.3
1.7.2: A delay issue affects the first message sent to the endpoint, with users experiencing lower traffic being impacted more.
1.7.2: A delay issue affects the first message sent to the endpoint, with users experiencing lower traffic being impacted more.
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.1...1.7.2
1.7.1: Jobs running longer than 60 seconds may cause the health check to fail, leading to retries and job timeouts.
1.7.1: Jobs running longer than 60 seconds may cause the health check to fail, leading to retries and job timeouts.
Full Changelog: https://github.com/runpod/runpod-python/compare/1.7.0...1.7.1
Deprecated JobScaler.concurrency_modifier by @deanq in https://github.com/runpod/runpod-python/pull/331
Full Changelog: https://github.com/runpod/runpod-python/compare/1.6.2...1.7.0
1.6.2: Endpoints with high throughputs or concurrency modifiers can experience HTTP/502 from Cloudflare causing bottlenecks and delays on job queues.
1.6.2: Endpoints with high throughputs or concurrency modifiers can experience HTTP/502 from Cloudflare causing bottlenecks and delays on job queues.
Full Changelog: https://github.com/runpod/runpod-python/compare/1.6.1...1.6.2
User-Agent for better analytics tracking.
rp_serve_api flag.registry_auth to registry_auth_id for clarity.Full Changelog: https://github.com/runpod/runpod-python/compare/1.6.0...1.6.1
Rust Serverless Core Passing all tests.
Full Changelog: https://github.com/runpod/runpod-python/compare/1.5.3...1.6.0
Expose cuda selection when creating a pod.
flashboot when creating a new endpoint.containerRegistryAuthId for template creation.Full Changelog: https://github.com/runpod/runpod-python/compare/1.5.2...1.5.3
Edge case when using RunPod Serverless Core that returns None for function output.
None for function output.Full Changelog: https://github.com/runpod/runpod-python/compare/1.5.1...1.5.2
None for function output.Prevent stream from hanging on the final output.
GET method for stream test endpoint.0.0.2Full Changelog: https://github.com/runpod/runpod-python/compare/1.5.0...1.5.1
feat: update base and venv by @justinmerrell in https://github.com/runpod/runpod-python/pull/256
Full Changelog: https://github.com/runpod/runpod-python/compare/1.4.2...1.5.0
RUNPOD_USE_CORE=True or RUNPOD_CORE_PATH=/path/to/core.soAdded defaults for optional parameters in rp_fastapi to be compatible with pydantic.
rp_fastapi to be compatible with pydantic.Full Changelog: https://github.com/runpod/runpod-python/compare/1.4.1...1.4.2
Local test API server includes simulated endpoints that mimic the behavior of run, runsync, stream, and status.
run, runsync, stream, and status.Full Changelog: https://github.com/runpod/runpod-python/compare/1.4.0...1.4.1
[BREAKING] concurrency is now handled by concurrency_modifier which is a user provided function that takes in the current concurrency and returns the
concurrency_modifier which is a user provided function that takes in the current concurrency and returns the new concurrency. This allows for more complex concurrency logic to be implemented by the user.colorama requirement version to >= 0.2.5, < 0.4.5user['pubKey'] is None by @Michaelvll in https://github.com/runpod/runpod-python/pull/241Full Changelog: https://github.com/runpod/runpod-python/compare/1.3.7...1.4.0
Catch timeouts when checking for available jobs.
Full Changelog: https://github.com/runpod/runpod-python/compare/1.3.6...1.3.7
Restrict version of aiohttp to 3.8.6 to avoid breaking changes in 3.9.0
aiohttp to 3.8.6 to avoid breaking changes in 3.9.0Full Changelog: https://github.com/runpod/runpod-python/compare/1.3.5...1.3.6
project.toml now includes required dependencies
get_job error handlingproject.toml now includes required dependenciesFull Changelog: https://github.com/runpod/runpod-python/compare/1.3.4...1.3.5
Exposed logging job_id now request_id
job_id now request_idget_endpoints exposed to return all endpoints for a given userFull Changelog: https://github.com/runpod/runpod-python/compare/1.3.3...1.3.4
Method of creating logs with job id.
pillow dependency.python-dotenv dependency.setuptools_scm from required dependencies.Full Changelog: https://github.com/runpod/runpod-python/compare/1.3.2...1.3.3
Removed setup.cfg and moved all configuration to setup.py
setup.cfg and moved all configuration to setup.pyFull Changelog: https://github.com/runpod/runpod-python/compare/1.3.1...1.3.2
test_output can be passed in as an arg to compare the results of test_input
test_output can be passed in as an arg to compare the results of test_inputFull Changelog: https://github.com/runpod/runpod-python/compare/1.3.0...1.3.1
Backwards compatibility with Python >= 3.8
requirements.txtFull Changelog: https://github.com/runpod/runpod-python/compare/1.2.6...1.3.0
Force urllib3 logging to WARNING level to avoid spamming the console if the global logging level is set to DEBUG.
urllib3 logging to WARNING level to avoid spamming the console if the global logging level is set to DEBUG.Full Changelog: https://github.com/runpod/runpod-python/compare/1.2.5...1.2.6
urllib3 logging to WARNING level to avoid spamming the console if global logging level is set to DEBUG.Ignore template by @justinmerrell in https://github.com/runpod/runpod-python/pull/157
Full Changelog: https://github.com/runpod/runpod-python/compare/1.2.4...1.2.5
Update CI-e2e.yml by @justinmerrell in https://github.com/runpod/runpod-python/pull/154
Full Changelog: https://github.com/runpod/runpod-python/compare/1.2.3...1.2.4
Job outputs that were not dictionaries, bool, or str were swallowed by the serverless worker. This has been fixed.
Full Changelog: https://github.com/runpod/runpod-python/compare/1.2.2...1.2.3
User queries and mutations are now available in the Python API wrapper.
start_ssh added with the default True when creating new pods.network_volume_id can now be passed in when creating new pods, the correct data center is automatically selected.template_id can now be passed in when creating new pods.support_public_ip is not default to True when creating new pods.Full Changelog: https://github.com/runpod/runpod-python/compare/1.2.1...1.2.2
Version reported when an error is returned in serverless.
RUNPOD_LOG_LEVEL environment variable.runpod.serverless.progress_update can be called with the job object and string.Full Changelog: https://github.com/runpod/runpod-python/compare/1.2.0...1.2.1
Can generate a credentials file from the CLI to store your API key.
get_gpu now supports gpu_quantity as a parameter.api_wrapper to api for consistency.aiohttp_retry packaged replaced rp_retry.py implementation.get_podFull Changelog: https://github.com/runpod/runpod-python/compare/1.1.3...1.2.0
Add get_pod() API method by @alexeevit in https://github.com/runpod/runpod-python/pull/98
Full Changelog: https://github.com/runpod/runpod-python/compare/1.1.2...1.1.3
feat: e2e test streaming by @justinmerrell in https://github.com/runpod/runpod-python/pull/93
Full Changelog: https://github.com/runpod/runpod-python/compare/1.1.1...1.1.2
Preserve the final job result's post condition in streaming scenario. by @Jorghi12 in https://github.com/runpod/runpod-python/pull/88
Full Changelog: https://github.com/runpod/runpod-python/compare/1.1.0...1.1.1
Fixes bug where our ping health monitor would stop if the handler received a blocking function.
Fixes bug where our ping health monitor would stop if the handler received a blocking function.
Full Changelog: https://github.com/runpod/runpod-python/compare/1.0.1...1.1.0
Data Race in TakeJob by @Jorghi12 in https://github.com/runpod/runpod-python/pull/84
Full Changelog: https://github.com/runpod/runpod-python/compare/1.0.0...1.0.1
We're thrilled to announce the release of RunPod 1.0.0! After refining our CI/CD pipeline and gathering valuable feedback from thousands of users, we
We're thrilled to announce the release of RunPod 1.0.0! After refining our CI/CD pipeline and gathering valuable feedback from thousands of users, we are ready to introduce significant enhancements and fixes.
Workers are now smarter and more efficient. They can fetch and process multiple jobs in parallel, accelerating your workflows and productivity. Here's what's new:
concurrency_controller. This function determines the number of jobs a worker should fetch in parallel.Our platform offers a powerful streaming feature that allows users to receive real-time updates on job outputs. This is particularly useful when dealing with Language Model tasks. We support two types of streaming generator functions: regular generator and async generator.
def generator_streaming(job):
for i in range(5):
output = f"Generated token output {i}"
yield output
async def async_generator_streaming(job):
for i in range(5):
output = f"Generated async token output {i}"
yield output
await asyncio.sleep(1) # Simulate an asynchronous task (e.g., LLM processing time).
To enable streaming, use either a regular or async generator function to yield the output results. The generator will continuously produce token outputs, streamed to the client in real-time.
To utilize the generator function for streaming, you must use the /stream/{jobid} endpoint. Clients will receive the streaming token outputs by making an HTTP request to this endpoint. The jobid parameter in the endpoint URL helps the server identify the specific job for which the streaming is requested.
Once the streaming is initiated, the /stream/{jobid} endpoint will continuously receive generated token outputs as the generator function yields them. This provides real-time updates to the client or user, ensuring they can access the latest results throughout the job execution.
Using generator-type handlers for streaming, our platform enhances the user experience by delivering dynamic and up-to-date information for tasks involving Language Models and beyond.
We've also made some crucial improvements and squashed a few bugs:
Full Changelog: https://github.com/runpod/runpod-python/compare/0.10.0...1.0.0
Breaking Change: RUNPOD_DEBUG no longer controls whether or not logs are printed. To prevent all logs from printing, set RUNPOD_DEBUG_LEVEL to 0 or ca…
--rp_api_serve argument. This allows for faster, more flexible testing environments. Check out our blog post for an example.--rp_log_level set to the desired level. If this argument is present, it will override the RUNPOD_DEBUG_LEVEL.logger.py has been refactored and renamed to rp_logger.py for consistency.DEBUG by default. Note that when your worker runs on RunPod we set it to ERROR unless otherwise set.RUNPOD_DEBUG no longer controls whether or not logs are printed. To prevent all logs from printing, set RUNPOD_DEBUG_LEVEL to 0 or call your handler file with the argument --rp_log_level="NOTSET"data_center_id and country_code when creating Pods, allowing for more precise control over pod creation.Full Changelog: https://github.com/runpod/runpod-python/compare/0.9.12...0.10.0
Job returns are filtered to match the type dictionary before looking for the error key. This will prevent false positives from matching the term "erro
error key. This will prevent false positives from matching the term "error" in a returned body.Full Changelog: https://github.com/runpod/runpod-python/compare/0.9.11...0.9.12
If your handler contains yield it will be treated as a generator and can stream the results.
yield it will be treated as a generator and can stream the results.error and refresh_worker keysFull Changelog: https://github.com/runpod/runpod-python/compare/0.9.10...0.9.11
We've introduced a new Debugger Utility that allows you to set timing checkpoints in your code. This functionality can help you identify bottlenecks a
Full Changelog: https://github.com/runpod/runpod-python/compare/0.9.9...0.9.10
Timed out Jobs were not being handled gracefully
Fix:
Full Changelog: https://github.com/runpod/runpod-python/compare/0.9.8...0.9.9
Bug fix where no info was printed if RUNPOD_DEBUG_LEVEL was not explicitly set
RUNPOD_DEBUG_LEVEL was not explicitly setFull Changelog: https://github.com/runpod/runpod-python/compare/0.9.7...0.9.8
Full Changelog: https://github.com/runpod/runpod-python/compare/0.9.6...0.9.7
Full Changelog: https://github.com/runpod/runpod-python/compare/0.9.6...0.9.7
Your coding agent can read these notes before it upgrades. Set up the MCP server →