Skip to main content

Flash

Flash is a Python SDK for developing cloud-native AI apps where you define everything -- hardware, remote functions, and dependencies -- using local code.

import asyncio
from runpod_flash import Endpoint, GpuType

@Endpoint(name="hello-gpu", gpu=GpuType.NVIDIA_GEFORCE_RTX_4090, dependencies=["torch"])
async def hello():
    import torch
    gpu_name = torch.cuda.get_device_name(0)
    print(f"Hello from your GPU! ({gpu_name})")
    return {"gpu": gpu_name}

asyncio.run(hello())
print("Done!")

Write @Endpoint decorated Python functions on your local machine. Deploy them with flash deploy, then call them by running the same script. Flash handles GPU/CPU provisioning and worker scaling on Runpod Serverless.

Setup

Install Flash

pip install runpod-flash
# or
uv tool install runpod-flash

Flash requires Python 3.10+ on macOS or Linux. Windows support is in development.

Authentication

flash login

This saves your API key and allows you to use the Flash CLI and call @Endpoint functions.

Coding agent integration

flash init writes an AGENTS.md at your project root containing CLI-first rules for AI coding tools (Cursor, Codex, Aider, Amp, Jules, etc.). It also creates CLAUDE.md as a symlink to AGENTS.md so Claude Code picks up the same rules.

If AGENTS.md or CLAUDE.md already exist in your project, Flash leaves them alone — your file, your rules.

Existing projects (already past flash init):

# from your project root
python -c "from runpod_flash.rules import install_agent_files; from pathlib import Path; install_agent_files(Path.cwd())"

Tools using other conventions: GitHub Copilot reads .github/copilot-instructions.md and Cursor (legacy) reads .cursorrules. If you use those, symlink or copy AGENTS.md:

ln -s ../AGENTS.md .github/copilot-instructions.md
ln -s AGENTS.md .cursorrules

Opt out: Delete AGENTS.md. No flash subcommand other than flash init (or an explicit call to install_agent_files(...)) will re-create it.

There is no --no-rules flag or flash rules subcommand by design: the rules are small, the cost of an unwanted file is one rm, and an opt-out flag would advertise the existence of the file to users who would otherwise never notice. If you have a use case that needs init-time suppression (corporate policy, regulated environments), open an issue and we'll revisit.

Claude Code skill bundle (optional): For richer Claude Code integration beyond static rules, install the cross-tool skill bundle:

npx skills add runpod/skills

See the SKILL.md file in the runpod/skills repository.

Quickstart

Create gpu_demo.py:

import asyncio
from runpod_flash import Endpoint, GpuType

@Endpoint(
    name="flash-quickstart",
    gpu=GpuType.NVIDIA_GEFORCE_RTX_4090,
    workers=3,
    dependencies=["numpy", "torch"]
)
def gpu_matrix_multiply(size):
    import numpy as np
    import torch

    device_name = torch.cuda.get_device_name(0)
    A = np.random.rand(size, size)
    B = np.random.rand(size, size)
    C = np.dot(A, B)

    return {
        "matrix_size": size,
        "result_mean": float(np.mean(C)),
        "gpu": device_name
    }

async def main():
    print("Running matrix multiplication on Runpod GPU...")
    result = await gpu_matrix_multiply(1000)
    print(f"Matrix size: {result['matrix_size']}x{result['matrix_size']}")
    print(f"Result mean: {result['result_mean']:.4f}")
    print(f"GPU used: {result['gpu']}")

if __name__ == "__main__":
    asyncio.run(main())

Deploy, then run:

flash deploy
python gpu_demo.py

How it works

Flash has two modes: deploy and dev.

Deploy and run (flash deploy + python script.py)

Deploy packages your code and provisions endpoints on Runpod. After deploying, run your script directly and Flash routes calls to your deployed endpoints via implicit resolution:

flash deploy                 # build, upload, provision endpoints
python gpu_demo.py           # calls deployed endpoints automatically

Flash resolves endpoints by matching the app name (defaults to the current directory name) and environment (defaults to production). Configure with env vars or .env:

FLASH_APP=my-project         # defaults to current directory name
FLASH_ENV=staging            # defaults to "production"

Dev mode (flash dev)

For local development and testing, flash dev starts a hybrid dev server that runs your FastAPI app locally while provisioning live ephemeral workers on Runpod:

flash dev                    # starts local server + provisions workers
flash dev --port 3000        # custom port
flash dev --auto-provision   # provision all endpoints at startup

What Flash does

  • Remote execution: @Endpoint functions run on Runpod Serverless GPUs/CPUs
  • Implicit endpoint resolution: python script.py routes to deployed endpoints automatically
  • Auto-scaling: workers scale from 0 to N based on demand
  • Dependency management: packages install automatically on remote workers
  • Two patterns: queue-based (@Endpoint) for batch work, load-balanced (Endpoint() + routes) for REST APIs
  • Concurrency control: max_concurrency lets each worker process multiple jobs simultaneously

Documentation

Full documentation: docs.runpod.io/flash

Flash apps

When you're ready to move beyond scripts and build a production-ready API, you can create a Flash app (a collection of interconnected endpoints with diverse hardware configurations) and deploy it to Runpod.

Follow this tutorial to build your first Flash app.

Flash CLI

flash --help

Learn more about the Flash CLI.

Examples

Browse working examples: github.com/runpod/flash-examples

Requirements

  • Python 3.10-3.13
  • macOS or Linux (Windows support in development)
  • A Runpod account (email must be verified) with an API key

Contributing

We welcome contributions! See RELEASE_SYSTEM.md for development workflow.

git clone https://github.com/runpod/flash.git
cd flash
pip install -e ".[dev]"

# use conventional commits
git commit -m "feat: add new feature"
git commit -m "fix: resolve issue"

Support

License

MIT License - see LICENSE for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

runpod_flash-1.19.0.tar.gz (211.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

runpod_flash-1.19.0-py3-none-any.whl (248.7 kB view details)

Uploaded Python 3

File details

Details for the file runpod_flash-1.19.0.tar.gz.

File metadata

  • Download URL: runpod_flash-1.19.0.tar.gz
  • Upload date:
  • Size: 211.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for runpod_flash-1.19.0.tar.gz
Algorithm Hash digest
SHA256 70344dd7e2939a901a3c1c6eefe1a678a2f5533cb17f4b1239692bc278148952
MD5 84ec9bfe8754a688ae065d138dbab32d
BLAKE2b-256 a71512b46f2f45391095683f070cab73a8ff0f49aa015b2d9466d3d50487926f

See more details on using hashes here.

Provenance

The following attestation bundles were made for runpod_flash-1.19.0.tar.gz:

Publisher: release-please.yml on runpod/flash

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file runpod_flash-1.19.0-py3-none-any.whl.

File metadata

  • Download URL: runpod_flash-1.19.0-py3-none-any.whl
  • Upload date:
  • Size: 248.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for runpod_flash-1.19.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d7fc371e368be5504476a7ad915c0da965f0a0905c4a100017160168108020f4
MD5 0ff462ed7b6060a32acaae731918912f
BLAKE2b-256 c27e00665d3b0c47f52ffd43499a8ba7d5cd3adb5f0d74a04e8b094b84abe51d

See more details on using hashes here.

Provenance

The following attestation bundles were made for runpod_flash-1.19.0-py3-none-any.whl:

Publisher: release-please.yml on runpod/flash

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.19.0 This release

2 files

1.18.0

2 files

1.17.0

2 files

1.16.0

2 files

1.15.0

2 files

1.14.0

2 files

1.13.0

2 files

1.12.0

2 files

1.11.3

2 files

1.11.2

2 files

1.11.1

2 files

1.11.0

2 files

1.10.2

2 files

1.10.1

2 files

1.10.0

2 files

1.9.1

2 files

1.9.0

2 files

1.8.1

2 files

1.8.0

2 files

1.7.0

2 files

1.6.1

2 files

1.6.0

2 files

1.5.0

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page