Loading...
Loading...
runpod-flash — code-first serverless: write Python locally, run it on remote Runpod GPUs/CPUs with `flash dev` (hot-reload + live worker logs), then `flash deploy`. Use for @Endpoint/@remote functions, resource config, and debugging flash deployments. For CLI-only infra management use runpodctl or runpod-mcp.
npx skill4agent add runpod/runpod-plugins-official flashflash devflash deployEndpointreference/| Need | Read |
|---|---|
Install, auth, | reference/setup-and-cli.md |
| reference/api.md |
| Worked patterns — choosing a model, warm-worker model loading, CPU→GPU pipeline, parallel calls | reference/patterns.md |
uv tool install runpod-flashflash loginexport RUNPOD_API_KEY=...flash init my-projectflash devflash dev:8888flash deployflash devflash devNameErrorflash deployflash devflash devprintflash dev > /tmp/flash-dev.log 2>&1 & # background; never run it blocking
for i in $(seq 1 60); do grep -q "flash dev localhost:" /tmp/flash-dev.log && break; sleep 2; done # bounded ~2min; if it never appears, check the log for errors
URL=$(grep -o "localhost:[0-9]*" /tmp/flash-dev.log | head -1) # actual port (8888 bumps if taken)
curl -s "$URL/main/predict" -d '{"data": {...}}' # dispatches to the remote worker✓ flash dev localhost:<port>main.py/predict/main/predict422loc@api.post("/predict")POST /main/predictdef predict(data: dict){"data": {...}}@EndpointPOST /main/runsync/runsync/runinputdef synthesize(data: dict){"input": {"data": {...}}}input--auto-provisionkill %1from runpod_flash import Endpoint, GpuGroup
@Endpoint(name="my-worker", gpu=GpuGroup.AMPERE_80, workers=5, dependencies=["torch"])
async def compute(data):
import torch # MUST import inside function (cloudpickle)
return {"sum": torch.tensor(data, device="cuda").sum().item()}
result = await compute([1, 2, 3])from runpod_flash import Endpoint, GpuGroup
api = Endpoint(name="my-api", gpu=GpuGroup.ADA_24, workers=(1, 5), dependencies=["torch"])
@api.post("/predict")
async def predict(data: list[float]):
import torch
return {"result": torch.tensor(data, device="cuda").sum().item()}
@api.get("/health")
async def health():
return {"status": "ok"}from runpod_flash import Endpoint, GpuGroup, PodTemplate
server = Endpoint(
name="my-server",
image="my-org/my-image:latest",
gpu=GpuGroup.AMPERE_80,
workers=1,
env={"HF_TOKEN": "xxx"},
template=PodTemplate(containerDiskInGb=100),
)
# LB-style
result = await server.post("/v1/completions", {"prompt": "hello"})
models = await server.get("/v1/models")
# QB-style
job = await server.run({"prompt": "hello"}) # optional: webhook="https://..." for completion callback
await job.wait()
print(job.output)ep = Endpoint(id="abc123")
job = await ep.runsync({"prompt": "hello"}) # runsync wraps this as {"input": {"prompt": "hello"}}
print(job.output)| Parameters | Mode |
|---|---|
| Decorator (your code) |
| Client (deploys image, then HTTP calls) |
| Client (connects to existing, no provisioning) |
image=image=dependencies=[...]system_dependencies=[...]image=image="vllm/vllm-openai:latest"runpod/worker-vllmrunpod/worker-comfyimage=flash deployflash devNameErrorawaitdependencies=[]{"audio_b64": ...}image=id=gpu=[GpuGroup.ADA_24, GpuGroup.AMPERE_80]workers=5runsyncep.runsync(data, timeout=120)ep.run()job.wait()@api.post(...){"data": {...}}@Endpoint.../run.../runsynchandler(**job_input)inputdef transcribe(input_data: dict){"input": {"input_data": {...}}}def read(input: dict){"input": {"input": {...}}}got an unexpected keyword argument …**kwargsinput{"input": {}}Job has missing field(s): id or inputep.runsync(x)api.post(...)@Endpoint__init__flash devdeployglobal _MODEL
try: _MODEL
except NameError: _MODEL = load_model() # runs once per worker, reused across callsdependencies=[]nvidia-cublas-cu12nvidia-cudnn-cu12RUNPOD_API_KEYflash loginGraphQL request failed: 401flash devGraphQL request failed: 401curl -s -o /dev/null -w '%{http_code}' https://rest.runpod.io/v1/endpoints -H "Authorization: Bearer $RUNPOD_API_KEY"unset RUNPOD_API_KEYflash loginexportsystem_dependencies=["ffmpeg", "espeak-ng"]flash app delete <app>flash undeploy listflash app deleterunpodctl serverless delete <id>