[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PP8YP7K13MQSCGSH17ZYRM":3,"skill-same:01M6PP8YP7K13MQSCGSH17ZYRM":174},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":31,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":63,"commitSha":64,"skillDirectory":65,"forksCount":66,"repositoryHtmlUrl":67,"repositoryHomepageUrl":68,"ownerHtmlUrl":69,"ownerBlogUrl":70,"ownerDescription":6,"updatedAt":71,"install":72,"resources":85},"01M6PP8YP7K13MQSCGSH17ZYRM","runpod-flash",null,"Code-first serverless with the Runpod Python SDK (`runpod` 2.0): define a `runpod.App` with `@app.queue` \u002F `@app.api` \u002F `@app.task`, iterate on remote GPUs\u002FCPUs with `rp flash dev`, ship with `rp flash deploy`, and maintain or migrate legacy `runpod-flash` projects (`from runpod_flash import Endpoint`). Use runpod-build-template for explicit Dockerfile\u002Ftemplate project authoring, and runpodctl\u002Frunpod-mcp for infrastructure management.","runpod\u002Frunpod-plugins-official","runpod","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F95939477?v=4","01M6CFSV7PCCKKMKEV6AM8XC7H","Runpod","01M6CFSVC1QMHFR2P1HF14EZ08",49,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[32,33,9,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"runpod flash","flash","python sdk","infrastructure management","remote","app","worker","project","volume","maintain","MCP","model","template project","template","projects","migrate","api","code","dockerfile","2026-11-10 10:12:30",false,"---\nname: runpod-flash\ndescription: >-\n  Code-first serverless with the Runpod Python SDK (`runpod` 2.0): define a\n  `runpod.App` with `@app.queue` \u002F `@app.api` \u002F `@app.task`, iterate on remote\n  GPUs\u002FCPUs with `rp flash dev`, ship with `rp flash deploy`, and maintain or\n  migrate legacy `runpod-flash` projects (`from runpod_flash import Endpoint`).\n  Use runpod-build-template for explicit Dockerfile\u002Ftemplate project authoring,\n  and runpodctl\u002Frunpod-mcp for infrastructure management.\nmetadata:\n  author: runpod\n  version: \"2.0.0\" # x-release-please-version\n  concepts: [flash, serverless-endpoint, serverless-handler, worker, volume-cache, model-store]\nlicense: Apache-2.0\n---\n\n# Runpod SDK apps (Flash)\n\nFor an explicit Dockerfile\u002Ftemplate project request, use\n[runpod-build-template](..\u002Frunpod-build-template\u002FSKILL.md). Do not replace that\ndeliverable with Flash unless the user chooses its code-first workflow.\n\nWrite Python locally, run it on remote Runpod GPUs\u002FCPUs with `rp flash dev`, then\n`rp flash deploy` to ship. Flash is part of the `runpod` package (2.0): one SDK, one\n`rp` CLI, one login. The standalone `runpod-flash` package is deprecated and gets no fixes\nafter **October 29, 2026**.\n\n**`rp --help` and `rp flash \u003Ccommand> --help` are authoritative for the command surface.**\nThis skill is the mental model, the decision rules, and the gotchas that help output does not\ncarry. Confirm the installed version with `pip show runpod` before concluding a command or\nparameter is unavailable.\n\n## Which SDK is this project on?\n\nCheck before writing code. The two APIs do not mix.\n\n| You see | Project is on | Do |\n|---|---|---|\n| `import runpod`, `runpod.App(...)`, `@app.queue`, `rp flash ...` | **Runpod SDK 2.0** | This file + `reference\u002F` |\n| `from runpod_flash import Endpoint`, `@Endpoint(...)`, `flash dev`, `runpod-flash` in deps | **Legacy runpod-flash** | [reference\u002Frunpod-flash-legacy.md](reference\u002Frunpod-flash-legacy.md) to maintain it, [reference\u002Fmigrate-from-runpod-flash.md](reference\u002Fmigrate-from-runpod-flash.md) to move it |\n| A new project | Runpod SDK 2.0 | Start below |\n\nWrite new code on the SDK. For an existing `runpod-flash` project, propose migrating and\ncheck its *Known differences* first; don't migrate silently.\n\n**If the SDK path fails on an SDK bug, `runpod-flash` is the fallback**: a traceback inside\n`runpod\u002Fapps\u002F`, a worker that crashes before your function runs, or the same code working on\n`runpod-flash`. Upgrade `runpod` first; the steps to check for a fix and fall back are in\n[reference\u002Frunpod-flash-legacy.md](reference\u002Frunpod-flash-legacy.md#fallback-from-the-sdk).\n\n**Worked examples first for anything multi-step.** Flash appears in end-to-end paths:\n[03 variant B (whisper endpoint)](..\u002Frunpod\u002Fgolden-paths\u002F03-whisper-endpoint\u002Fvariant-b-flash.md),\n[07 (network-volume handoff)](..\u002Frunpod\u002Fgolden-paths\u002F07-network-volume-handoff.md) and\n[08 (fine-tune → serve)](..\u002Frunpod\u002Fgolden-paths\u002F08-finetune-to-serverless.md); the full index is\n[runpod\u002Fgolden-paths\u002FREADME.md](..\u002Frunpod\u002Fgolden-paths\u002FREADME.md). Runnable single-file apps\nlive in [`examples\u002F`](examples\u002F).\n\n**Load on demand:**\n\n| Need | Read |\n|------|------|\n| Install, `rp login`, `rp flash init`, every `rp` command | [reference\u002Fsetup-and-cli.md](reference\u002Fsetup-and-cli.md) |\n| Decorator parameters, call styles, `Queue`\u002F`Api`\u002F`Endpoint` clients, volumes, `Model`, `Secret`, GPU & CPU names | [reference\u002Fapi.md](reference\u002Fapi.md) |\n| Worked patterns: choosing a model, warm model loading, CPU→GPU pipeline, fan-out, tasks, raw HTTP | [reference\u002Fpatterns.md](reference\u002Fpatterns.md) |\n| Moving a `runpod-flash` project to the SDK | [reference\u002Fmigrate-from-runpod-flash.md](reference\u002Fmigrate-from-runpod-flash.md) |\n| Maintaining a `runpod-flash` project as it is | [reference\u002Frunpod-flash-legacy.md](reference\u002Frunpod-flash-legacy.md) |\n\nQuick start: `uv add \"runpod>=2.0.0\"` (or `pip install \"runpod>=2.0.0\"`) → `rp login` (or `export RUNPOD_API_KEY=...`)\n→ `rp flash init my-app` → `cd my-app && rp flash dev main.py`.\n\n## The app model\n\n```python\nimport runpod\n\napp = runpod.App(\"my-app\")                     # names the group of resources\n\n@app.queue(gpu=\"4090\", dependencies=[\"torch\"]) # queue-based serverless endpoint\ndef infer(x: list[float]):\n    import torch\n    return {\"sum\": torch.tensor(x, device=\"cuda\").sum().item()}\n\n@runpod.local_entrypoint                       # runs on YOUR machine\ndef main():\n    print(infer.remote([1.0, 2.0, 3.0]))       # runs on a Runpod worker\n```\n\n| Decorator | Creates | Use for |\n|---|---|---|\n| `@app.queue(...)` on a function | Autoscaling queue-based endpoint | Request\u002Fresponse inference, batch jobs |\n| `@app.api(...)` on a class | Load-balanced endpoint serving routes (`@runpod.get`\u002F`@runpod.post`, setup in `@runpod.init`) | HTTP services, multi-route APIs, load-once model state |\n| `@app.task(...)` on a function | One ephemeral **Pod per call**, terminated when it returns | Training, fine-tuning, long jobs |\n\nCall styles on a queue or task handle: `fn.remote(...)` (blocks), `await fn.remote.aio(...)`,\n`fn.spawn(...)` (returns a `Job`, or a `TaskJob` for a task), `fn.stream(...)` (queue generator\nfunctions only), `fn.local(...)` (runs on your machine). API classes are called by route: `MyApi.post(\"\u002Fpath\", body)`.\n\n## Dev vs deploy\n\n- `rp flash dev main.py` — **iterate.** Creates temporary endpoints (`dev-\u003Capp>-\u003Cresource>-\u003Chash>`),\n  runs the `@runpod.local_entrypoint` on your machine, streams the workers' `print` output to\n  your terminal, and re-runs after every file save. Ctrl-C deletes the endpoints. There is **no\n  local HTTP server**; the entrypoint is how you exercise the code.\n- `rp flash dev main.py --once` — run the entrypoint once, tear down, exit non-zero on failure.\n  The smoke test for CI and for \"does the migrated code work\".\n- `rp flash deploy` — **ship.** Builds an artifact (≤1,500 MB, torch excluded on built-in GPU\n  images) and creates persistent endpoints in the `default` environment (`--env NAME` for\n  others). Re-run to update. `--build-only` packages without deploying, a cheap offline check\n  that discovery and dependency resolution work.\n\nDev and deploy run the **same module source**, so module-level imports, constants and helpers\nbehave identically in both. Deploy packages the project directory, but a dev session ships\nonly the module's source, so keep the app in **one file** when you use `rp flash dev`.\n\n## Autonomous dev loop\n\nA dev session is long-running. Three rules:\n- **Run it in the background with stdin closed** (`\u003C \u002Fdev\u002Fnull`). With no stdin it re-runs\n  the entrypoint on every file save, so you never need to press Enter.\n- **Capture its output** to a log file and read it. Worker `print`s, tracebacks, `✗ remote execution failed: ...` and the per-run\n  `✓ done in ...` \u002F `✗ failed in ...` lines land there.\n- **Stop it with `kill` (SIGTERM) or SIGINT**, so it deletes its endpoints, and confirm the\n  log ends with `cleaning up N deleted`. A second signal stops waiting for a running\n  entrypoint and goes straight to cleanup. `kill -9` skips cleanup. When one run is enough,\n  prefer `--once`; it cleans up on its own.\n\n```bash\nrp flash dev main.py \u003C \u002Fdev\u002Fnull > \u002Ftmp\u002Frp-dev.log 2>&1 &\nDEV=$!\n# poll the log (bounded) for the run result: \"✓ done in ...\" or \"✗ failed in ...\"\nfor i in $(seq 1 120); do grep -qE \"✓ done in|✗ failed in\" \u002Ftmp\u002Frp-dev.log && break; sleep 3; done\ntail -40 \u002Ftmp\u002Frp-dev.log\n# edit main.py and save -> the session re-scans, refreshes endpoints, re-runs main()\n# (each run appends a new result line; read the last one)\nkill $DEV; wait $DEV; tail -3 \u002Ftmp\u002Frp-dev.log   # expect \"cleaning up N deleted\"\n```\n\nFor a single check, `rp flash dev main.py --once` is simpler and cleans up on its own. If a\nsession died without cleanup, list leftovers with `runpodctl serverless list` and delete the\n`dev-\u003Capp>-...` endpoints **this session created**, by ID.\n\n## Choosing the resource shape\n\nDefault to plain Python on the Runpod runtime image: `dependencies=[...]` and\n`system_dependencies=[...]` install on the worker, so no Dockerfile is needed, and even large\nHuggingFace models stay in code (see [reference\u002Fpatterns.md](reference\u002Fpatterns.md#loading-ml-models)).\n\n- **`image=\"org\u002Fimage:tag\"`** on any decorator runs your function on that image; it needs\n  Python 3, not a Serverless handler. Use it for system libraries or a specific CUDA stack.\n  `registry_auth=` names saved credentials for a private image (`rp registry add`).\n- **A prebuilt inference server image** (vLLM, worker-comfyui) that already implements a\n  Serverless handler is not an SDK app. Deploy it with runpodctl or runpod-mcp and call it\n  with `runpod.Endpoint(\"ENDPOINT_ID\")`.\n- **An existing endpoint** by ID: `runpod.Endpoint(\"ENDPOINT_ID\").run_sync({...})`.\n- **A resource in another deployed app**: `runpod.Queue(app=\"media\", name=\"transcribe\")` \u002F\n  `runpod.Api(app=\"media\", name=\"inference\")`.\n\n## Gotchas\n\n1. **Queue arguments and results must be JSON-serializable.** Queue jobs are plain JSON in dev\n   and deploy alike. A non-JSON argument fails in dev with `arguments must be json-serializable`\n   and against a deployed endpoint with Python's own JSON `TypeError`. Pass\n   URLs or base64, not objects. Whole-number floats can arrive as integers (`1.0` → `1`), so\n   cast numeric inputs explicitly (`torch.tensor(x, dtype=torch.float32)`).\n2. **One file per app in dev.** A dev session ships only the module's source, so a sibling\n   local module imports in deploy but fails in dev. For dev sessions, keep helpers in the same\n   file or in an installable package.\n3. **Keep blocking work out of module scope.** The SDK imports your module to discover\n   resources, locally and on every worker. Put heavy imports (`torch`) and work inside\n   functions; guard local-only code with `runpod.is_local()`.\n4. **`gpu=` and `cpu=` are exclusive** (`gpu and cpu are mutually exclusive`). GPU strings can\n   be short (`\"4090\"`, `\"H100\"`) or a list of acceptable GPUs.\n5. **Default `workers=(0, 3)`** (runpod-flash was `(0, 1)`). Set it explicitly when cost or\n   concurrency matters. `idle_timeout` is seconds (default 60).\n6. **Auto GPU switching needs `workers` max ≥ 5** when you pass a list of GPUs.\n7. **10 MB payload limit** on requests. Return large outputs via a volume or object storage URL.\n8. **Volumes outlive everything.** Dev sessions and `rp flash undeploy` delete endpoints, not\n   the `NetworkVolume`s they created, and those keep billing. Queue and API resources mount one\n   volume at `\u002Frunpod-volume`; read `vol.path` inside the remote function, never at import time.\n   Load model weights through `VolumeCache`, not straight off the mount\n   ([reference\u002Fpatterns.md](reference\u002Fpatterns.md#loading-ml-models)).\n9. **Tasks bill until they return.** A `.spawn()`ed task that you never `wait()` or `cancel()`\n   keeps its Pod running after your script exits.\n10. **Native CUDA libraries go in `dependencies` too**, e.g. faster-whisper needs\n    `nvidia-cublas-cu12` + `nvidia-cudnn-cu12` or it silently falls back to CPU.\n11. **Dev sessions and tasks need local Python 3.10–3.14.** They ship code pickled by your\n    interpreter, so the worker matches your local version. Deploy falls back to 3.12 with a\n    warning on other versions; `rp flash deploy --python-version` sets it explicitly.\n12. **A set `RUNPOD_API_KEY` wins over `rp login`.** A stale exported key causes 401s while the\n    saved login is fine. Check with `runpodctl user`, then `unset RUNPOD_API_KEY` or export a\n    good key.\n13. **The torch family comes from the GPU image; never pin it.** Builds leave `torch`,\n    `torchvision`, `torchaudio` and `triton` out of the artifact whether you list them or a\n    dependency pulls them in (`peft`, `accelerate`, `sentence-transformers`), plus the wheels\n    only torch needs. GPU workers use the image's build (`torch 2.9.1+cu128`), so a version\n    pin on these packages is ignored. In an app that mixes CPU and GPU resources, a CPU\n    resource whose dependencies need torch installs it at cold start; give it\n    `container_disk_gb` room for that (the build warns when this applies).\n14. **Dev sessions run the runtime image's own `runpod`.** Deploys vendor your local package,\n    but `rp flash dev` workers import the `runpod` baked into the built-in image. An\n    `AttributeError` on a `runpod.` name in a dev worker traceback means the image is behind\n    your SDK; `rp flash deploy` runs your installed version.\n15. **Teardown by app and environment:** `rp flash undeploy --app APP --env default -y`\n    removes one environment's endpoints; `rp flash app delete APP --yes` removes every\n    environment (without `--yes` it prompts, and aborts with no terminal). Then delete volumes\n    you no longer need.\n16. **Queue and API names need 3+ characters to deploy.** The name defaults to the function or\n    class name, and dev sessions don't check it, so `class SD` passes `rp flash dev` and fails\n    `rp flash deploy`. Rename it or pass `name=`.\n17. **Every endpoint gets your account API key.** Deploy and dev put `RUNPOD_API_KEY` in each\n    endpoint's template env, whether or not its code calls another resource, so anyone who can\n    read the template can read the key.\n18. **Re-running the same app soon after a dev session can fail.** Dev sessions leave their\n    templates behind, and the platform holds them for up to about 90 minutes, so a new\n    `rp flash dev` of the same app fails with \"endpoint template names must be unique\".\n    Wait, or rename the `runpod.App`.\n\n## Resources\n\n- Setup & CLI: [reference\u002Fsetup-and-cli.md](reference\u002Fsetup-and-cli.md) · API: [reference\u002Fapi.md](reference\u002Fapi.md) · Patterns: [reference\u002Fpatterns.md](reference\u002Fpatterns.md) · Examples: [examples\u002F](examples\u002F)\n- SDK source and upstream examples: https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-python (`examples\u002Fapps\u002F`)\n- Docs: https:\u002F\u002Fdocs.runpod.io\u002Fsdk\u002Foverview · CLI: https:\u002F\u002Fdocs.runpod.io\u002Fsdk\u002Fcli · Migration: https:\u002F\u002Fdocs.runpod.io\u002Fsdk\u002Fmigrate-from-flash\n","# Runpod SDK apps (Flash)\n\nFor an explicit Dockerfile\u002Ftemplate project request, use\n[runpod-build-template](..\u002Frunpod-build-template\u002FSKILL.md). Do not replace that\ndeliverable with Flash unless the user chooses its code-first workflow.\n\nWrite Python locally, run it on remote Runpod GPUs\u002FCPUs with `rp flash dev`, then\n`rp flash deploy` to ship. Flash is part of the `runpod` package (2.0): one SDK, one\n`rp` CLI, one login. The standalone `runpod-flash` package is deprecated and gets no fixes\nafter **October 29, 2026**.\n\n**`rp --help` and `rp flash \u003Ccommand> --help` are authoritative for the command surface.**\nThis skill is the mental model, the decision rules, and the gotchas that help output does not\ncarry. Confirm the installed version with `pip show runpod` before concluding a command or\nparameter is unavailable.\n\n## Which SDK is this project on?\n\nCheck before writing code. The two APIs do not mix.\n\n| You see | Project is on | Do |\n|---|---|---|\n| `import runpod`, `runpod.App(...)`, `@app.queue`, `rp flash ...` | **Runpod SDK 2.0** | This file + `reference\u002F` |\n| `from runpod_flash import Endpoint`, `@Endpoint(...)`, `flash dev`, `runpod-flash` in deps | **Legacy runpod-flash** | [reference\u002Frunpod-flash-legacy.md](reference\u002Frunpod-flash-legacy.md) to maintain it, [reference\u002Fmigrate-from-runpod-flash.md](reference\u002Fmigrate-from-runpod-flash.md) to move it |\n| A new project | Runpod SDK 2.0 | Start below |\n\nWrite new code on the SDK. For an existing `runpod-flash` project, propose migrating and\ncheck its *Known differences* first; don't migrate silently.\n\n**If the SDK path fails on an SDK bug, `runpod-flash` is the fallback**: a traceback inside\n`runpod\u002Fapps\u002F`, a worker that crashes before your function runs, or the same code working on\n`runpod-flash`. Upgrade `runpod` first; the steps to check for a fix and fall back are in\n[reference\u002Frunpod-flash-legacy.md](reference\u002Frunpod-flash-legacy.md#fallback-from-the-sdk).\n\n**Worked examples first for anything multi-step.** Flash appears in end-to-end paths:\n[03 variant B (whisper endpoint)](..\u002Frunpod\u002Fgolden-paths\u002F03-whisper-endpoint\u002Fvariant-b-flash.md),\n[07 (network-volume handoff)](..\u002Frunpod\u002Fgolden-paths\u002F07-network-volume-handoff.md) and\n[08 (fine-tune → serve)](..\u002Frunpod\u002Fgolden-paths\u002F08-finetune-to-serverless.md); the full index is\n[runpod\u002Fgolden-paths\u002FREADME.md](..\u002Frunpod\u002Fgolden-paths\u002FREADME.md). Runnable single-file apps\nlive in [`examples\u002F`](examples\u002F).\n\n**Load on demand:**\n\n| Need | Read |\n|------|------|\n| Install, `rp login`, `rp flash init`, every `rp` command | [reference\u002Fsetup-and-cli.md](reference\u002Fsetup-and-cli.md) |\n| Decorator parameters, call styles, `Queue`\u002F`Api`\u002F`Endpoint` clients, volumes, `Model`, `Secret`, GPU & CPU names | [reference\u002Fapi.md](reference\u002Fapi.md) |\n| Worked patterns: choosing a model, warm model loading, CPU→GPU pipeline, fan-out, tasks, raw HTTP | [reference\u002Fpatterns.md](reference\u002Fpatterns.md) |\n| Moving a `runpod-flash` project to the SDK | [reference\u002Fmigrate-from-runpod-flash.md](reference\u002Fmigrate-from-runpod-flash.md) |\n| Maintaining a `runpod-flash` project as it is | [reference\u002Frunpod-flash-legacy.md](reference\u002Frunpod-flash-legacy.md) |\n\nQuick start: `uv add \"runpod>=2.0.0\"` (or `pip install \"runpod>=2.0.0\"`) → `rp login` (or `export RUNPOD_API_KEY=...`)\n→ `rp flash init my-app` → `cd my-app && rp flash dev main.py`.\n\n## The app model\n\n```python\nimport runpod\n\napp = runpod.App(\"my-app\")                     # names the group of resources\n\n@app.queue(gpu=\"4090\", dependencies=[\"torch\"]) # queue-based serverless endpoint\ndef infer(x: list[float]):\n    import torch\n    return {\"sum\": torch.tensor(x, device=\"cuda\").sum().item()}\n\n@runpod.local_entrypoint                       # runs on YOUR machine\ndef main():\n    print(infer.remote([1.0, 2.0, 3.0]))       # runs on a Runpod worker\n```\n\n| Decorator | Creates | Use for |\n|---|---|---|\n| `@app.queue(...)` on a function | Autoscaling queue-based endpoint | Request\u002Fresponse inference, batch jobs |\n| `@app.api(...)` on a class | Load-balanced endpoint serving routes (`@runpod.get`\u002F`@runpod.post`, setup in `@runpod.init`) | HTTP services, multi-route APIs, load-once model state |\n| `@app.task(...)` on a function | One ephemeral **Pod per call**, terminated when it returns | Training, fine-tuning, long jobs |\n\nCall styles on a queue or task handle: `fn.remote(...)` (blocks), `await fn.remote.aio(...)`,\n`fn.spawn(...)` (returns a `Job`, or a `TaskJob` for a task), `fn.stream(...)` (queue generator\nfunctions only), `fn.local(...)` (runs on your machine). API classes are called by route: `MyApi.post(\"\u002Fpath\", body)`.\n\n## Dev vs deploy\n\n- `rp flash dev main.py` — **iterate.** Creates temporary endpoints (`dev-\u003Capp>-\u003Cresource>-\u003Chash>`),\n  runs the `@runpod.local_entrypoint` on your machine, streams the workers' `print` output to\n  your terminal, and re-runs after every file save. Ctrl-C deletes the endpoints. There is **no\n  local HTTP server**; the entrypoint is how you exercise the code.\n- `rp flash dev main.py --once` — run the entrypoint once, tear down, exit non-zero on failure.\n  The smoke test for CI and for \"does the migrated code work\".\n- `rp flash deploy` — **ship.** Builds an artifact (≤1,500 MB, torch excluded on built-in GPU\n  images) and creates persistent endpoints in the `default` environment (`--env NAME` for\n  others). Re-run to update. `--build-only` packages without deploying, a cheap offline check\n  that discovery and dependency resolution work.\n\nDev and deploy run the **same module source**, so module-level imports, constants and helpers\nbehave identically in both. Deploy packages the project directory, but a dev session ships\nonly the module's source, so keep the app in **one file** when you use `rp flash dev`.\n\n## Autonomous dev loop\n\nA dev session is long-running. Three rules:\n- **Run it in the background with stdin closed** (`\u003C \u002Fdev\u002Fnull`). With no stdin it re-runs\n  the entrypoint on every file save, so you never need to press Enter.\n- **Capture its output** to a log file and read it. Worker `print`s, tracebacks, `✗ remote execution failed: ...` and the per-run\n  `✓ done in ...` \u002F `✗ failed in ...` lines land there.\n- **Stop it with `kill` (SIGTERM) or SIGINT**, so it deletes its endpoints, and confirm the\n  log ends with `cleaning up N deleted`. A second signal stops waiting for a running\n  entrypoint and goes straight to cleanup. `kill -9` skips cleanup. When one run is enough,\n  prefer `--once`; it cleans up on its own.\n\n```bash\nrp flash dev main.py \u003C \u002Fdev\u002Fnull > \u002Ftmp\u002Frp-dev.log 2>&1 &\nDEV=$!\n# poll the log (bounded) for the run result: \"✓ done in ...\" or \"✗ failed in ...\"\nfor i in $(seq 1 120); do grep -qE \"✓ done in|✗ failed in\" \u002Ftmp\u002Frp-dev.log && break; sleep 3; done\ntail -40 \u002Ftmp\u002Frp-dev.log\n# edit main.py and save -> the session re-scans, refreshes endpoints, re-runs main()\n# (each run appends a new result line; read the last one)\nkill $DEV; wait $DEV; tail -3 \u002Ftmp\u002Frp-dev.log   # expect \"cleaning up N deleted\"\n```\n\nFor a single check, `rp flash dev main.py --once` is simpler and cleans up on its own. If a\nsession died without cleanup, list leftovers with `runpodctl serverless list` and delete the\n`dev-\u003Capp>-...` endpoints **this session created**, by ID.\n\n## Choosing the resource shape\n\nDefault to plain Python on the Runpod runtime image: `dependencies=[...]` and\n`system_dependencies=[...]` install on the worker, so no Dockerfile is needed, and even large\nHuggingFace models stay in code (see [reference\u002Fpatterns.md](reference\u002Fpatterns.md#loading-ml-models)).\n\n- **`image=\"org\u002Fimage:tag\"`** on any decorator runs your function on that image; it needs\n  Python 3, not a Serverless handler. Use it for system libraries or a specific CUDA stack.\n  `registry_auth=` names saved credentials for a private image (`rp registry add`).\n- **A prebuilt inference server image** (vLLM, worker-comfyui) that already implements a\n  Serverless handler is not an SDK app. Deploy it with runpodctl or runpod-mcp and call it\n  with `runpod.Endpoint(\"ENDPOINT_ID\")`.\n- **An existing endpoint** by ID: `runpod.Endpoint(\"ENDPOINT_ID\").run_sync({...})`.\n- **A resource in another deployed app**: `runpod.Queue(app=\"media\", name=\"transcribe\")` \u002F\n  `runpod.Api(app=\"media\", name=\"inference\")`.\n\n## Gotchas\n\n1. **Queue arguments and results must be JSON-serializable.** Queue jobs are plain JSON in dev\n   and deploy alike. A non-JSON argument fails in dev with `arguments must be json-serializable`\n   and against a deployed endpoint with Python's own JSON `TypeError`. Pass\n   URLs or base64, not objects. Whole-number floats can arrive as integers (`1.0` → `1`), so\n   cast numeric inputs explicitly (`torch.tensor(x, dtype=torch.float32)`).\n2. **One file per app in dev.** A dev session ships only the module's source, so a sibling\n   local module imports in deploy but fails in dev. For dev sessions, keep helpers in the same\n   file or in an installable package.\n3. **Keep blocking work out of module scope.** The SDK imports your module to discover\n   resources, locally and on every worker. Put heavy imports (`torch`) and work inside\n   functions; guard local-only code with `runpod.is_local()`.\n4. **`gpu=` and `cpu=` are exclusive** (`gpu and cpu are mutually exclusive`). GPU strings can\n   be short (`\"4090\"`, `\"H100\"`) or a list of acceptable GPUs.\n5. **Default `workers=(0, 3)`** (runpod-flash was `(0, 1)`). Set it explicitly when cost or\n   concurrency matters. `idle_timeout` is seconds (default 60).\n6. **Auto GPU switching needs `workers` max ≥ 5** when you pass a list of GPUs.\n7. **10 MB payload limit** on requests. Return large outputs via a volume or object storage URL.\n8. **Volumes outlive everything.** Dev sessions and `rp flash undeploy` delete endpoints, not\n   the `NetworkVolume`s they created, and those keep billing. Queue and API resources mount one\n   volume at `\u002Frunpod-volume`; read `vol.path` inside the remote function, never at import time.\n   Load model weights through `VolumeCache`, not straight off the mount\n   ([reference\u002Fpatterns.md](reference\u002Fpatterns.md#loading-ml-models)).\n9. **Tasks bill until they return.** A `.spawn()`ed task that you never `wait()` or `cancel()`\n   keeps its Pod running after your script exits.\n10. **Native CUDA libraries go in `dependencies` too**, e.g. faster-whisper needs\n    `nvidia-cublas-cu12` + `nvidia-cudnn-cu12` or it silently falls back to CPU.\n11. **Dev sessions and tasks need local Python 3.10–3.14.** They ship code pickled by your\n    interpreter, so the worker matches your local version. Deploy falls back to 3.12 with a\n    warning on other versions; `rp flash deploy --python-version` sets it explicitly.\n12. **A set `RUNPOD_API_KEY` wins over `rp login`.** A stale exported key causes 401s while the\n    saved login is fine. Check with `runpodctl user`, then `unset RUNPOD_API_KEY` or export a\n    good key.\n13. **The torch family comes from the GPU image; never pin it.** Builds leave `torch`,\n    `torchvision`, `torchaudio` and `triton` out of the artifact whether you list them or a\n    dependency pulls them in (`peft`, `accelerate`, `sentence-transformers`), plus the wheels\n    only torch needs. GPU workers use the image's build (`torch 2.9.1+cu128`), so a version\n    pin on these packages is ignored. In an app that mixes CPU and GPU resources, a CPU\n    resource whose dependencies need torch installs it at cold start; give it\n    `container_disk_gb` room for that (the build warns when this applies).\n14. **Dev sessions run the runtime image's own `runpod`.** Deploys vendor your local package,\n    but `rp flash dev` workers import the `runpod` baked into the built-in image. An\n    `AttributeError` on a `runpod.` name in a dev worker traceback means the image is behind\n    your SDK; `rp flash deploy` runs your installed version.\n15. **Teardown by app and environment:** `rp flash undeploy --app APP --env default -y`\n    removes one environment's endpoints; `rp flash app delete APP --yes` removes every\n    environment (without `--yes` it prompts, and aborts with no terminal). Then delete volumes\n    you no longer need.\n16. **Queue and API names need 3+ characters to deploy.** The name defaults to the function or\n    class name, and dev sessions don't check it, so `class SD` passes `rp flash dev` and fails\n    `rp flash deploy`. Rename it or pass `name=`.\n17. **Every endpoint gets your account API key.** Deploy and dev put `RUNPOD_API_KEY` in each\n    endpoint's template env, whether or not its code calls another resource, so anyone who can\n    read the template can read the key.\n18. **Re-running the same app soon after a dev session can fail.** Dev sessions leave their\n    templates behind, and the platform holds them for up to about 90 minutes, so a new\n    `rp flash dev` of the same app fails with \"endpoint template names must be unique\".\n    Wait, or rename the `runpod.App`.\n\n## Resources\n\n- Setup & CLI: [reference\u002Fsetup-and-cli.md](reference\u002Fsetup-and-cli.md) · API: [reference\u002Fapi.md](reference\u002Fapi.md) · Patterns: [reference\u002Fpatterns.md](reference\u002Fpatterns.md) · Examples: [examples\u002F](examples\u002F)\n- SDK source and upstream examples: https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-python (`examples\u002Fapps\u002F`)\n- Docs: https:\u002F\u002Fdocs.runpod.io\u002Fsdk\u002Foverview · CLI: https:\u002F\u002Fdocs.runpod.io\u002Fsdk\u002Fcli · Migration: https:\u002F\u002Fdocs.runpod.io\u002Fsdk\u002Fmigrate-from-flash\n",{"name":5,"license":15,"metadata":56,"description":7},{"author":9,"version":57,"concepts":58},"2.0.0",[33,59,60,38,61,62],"serverless-endpoint","serverless-handler","volume-cache","model-store","main","91b9f9671af0f15186420ec466fe6e80c1b13f25","plugins\u002Frunpod\u002Fskills\u002Frunpod-flash",10,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official","https:\u002F\u002Fdocs.runpod.io\u002Fagent-setup.md","https:\u002F\u002Fgithub.com\u002Frunpod","https:\u002F\u002Fwww.runpod.io","2026-11-10 06:32:38",{"source":8,"skillName":5,"commands":73,"prompt":83,"zipAvailable":84},[74,77,80],{"tool":75,"command":76},"npx","npx skills add runpod\u002Frunpod-plugins-official --skill runpod-flash",{"tool":78,"command":79},"bunx","bunx skills add runpod\u002Frunpod-plugins-official --skill runpod-flash",{"tool":81,"command":82},"pnpm","pnpm dlx skills add runpod\u002Frunpod-plugins-official --skill runpod-flash","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002FSKILL.md",true,[86,92,96,100,104,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170],{"path":87,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":90,"sourceHtmlUrl":91},"evals\u002Fclient-external-image.eval.md","REFERENCE","参考文档",1144,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Fclient-external-image.eval.md",{"path":93,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":94,"sourceHtmlUrl":95},"evals\u002Fconnect-existing-endpoint.eval.md",942,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Fconnect-existing-endpoint.eval.md",{"path":97,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":98,"sourceHtmlUrl":99},"evals\u002Fcpu-gpu-pipeline.eval.md",1207,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Fcpu-gpu-pipeline.eval.md",{"path":101,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":102,"sourceHtmlUrl":103},"evals\u002Fdev-loop-iteration.eval.md",2815,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Fdev-loop-iteration.eval.md",{"path":105,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":108,"sourceHtmlUrl":109},"evals\u002Ffixtures\u002Fdev-loop\u002Fmain.py","SCRIPT","脚本",613,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Ffixtures\u002Fdev-loop\u002Fmain.py",{"path":111,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":112,"sourceHtmlUrl":113},"evals\u002Flb-multi-route-api.eval.md",1142,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Flb-multi-route-api.eval.md",{"path":115,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":116,"sourceHtmlUrl":117},"evals\u002Fmigrate-runpod-flash-project.eval.md",1975,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Fmigrate-runpod-flash-project.eval.md",{"path":119,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":120,"sourceHtmlUrl":121},"evals\u002Fqb-gpu-function.eval.md",1058,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Fqb-gpu-function.eval.md",{"path":123,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":124,"sourceHtmlUrl":125},"evals\u002Fsdk-failure-fallback.eval.md",1529,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Fsdk-failure-fallback.eval.md",{"path":127,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":128,"sourceHtmlUrl":129},"evals\u002Fvolume-cache-model-load.eval.md",2170,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fevals\u002Fvolume-cache-model-load.eval.md",{"path":131,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":132,"sourceHtmlUrl":133},"examples\u002Fapi_model_service.py",1254,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fexamples\u002Fapi_model_service.py",{"path":135,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":136,"sourceHtmlUrl":137},"examples\u002Fcall_deployed.py",912,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fexamples\u002Fcall_deployed.py",{"path":139,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":140,"sourceHtmlUrl":141},"examples\u002Fcpu_gpu_pipeline.py",1127,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fexamples\u002Fcpu_gpu_pipeline.py",{"path":143,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":144,"sourceHtmlUrl":145},"examples\u002Fqueue_gpu.py",881,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fexamples\u002Fqueue_gpu.py",{"path":147,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":148,"sourceHtmlUrl":149},"examples\u002FREADME.md",1787,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fexamples\u002FREADME.md",{"path":151,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":152,"sourceHtmlUrl":153},"examples\u002Ftrain_then_serve.py",1357,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Fexamples\u002Ftrain_then_serve.py",{"path":155,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":156,"sourceHtmlUrl":157},"reference\u002Fapi.md",9571,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Freference\u002Fapi.md",{"path":159,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":160,"sourceHtmlUrl":161},"reference\u002Fmigrate-from-runpod-flash.md",8028,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Freference\u002Fmigrate-from-runpod-flash.md",{"path":163,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":164,"sourceHtmlUrl":165},"reference\u002Fpatterns.md",8845,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Freference\u002Fpatterns.md",{"path":167,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":168,"sourceHtmlUrl":169},"reference\u002Frunpod-flash-legacy.md",6148,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Freference\u002Frunpod-flash-legacy.md",{"path":171,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":172,"sourceHtmlUrl":173},"reference\u002Fsetup-and-cli.md",4935,"https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-flash\u002Freference\u002Fsetup-and-cli.md",[175,202,222,237,256,274],{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":185,"publishedAt":51},"01M717A4HFW93XQC7PTXV1QFFH","runpod-vllm","Serve a Hugging Face model with vLLM on Runpod (Hub worker-vllm queue endpoint, load-balancing endpoint on a vllm\u002Fvllm-openai image, or a Pod), sized, CUDA-pinned and verified with a real OpenAI client. Use for any \"deploy\u002Fserve\u002Ftest this LLM with vLLM\" request or a vLLM deployment that will not boot; defer to runpod-serverless-deploy for non-vLLM engines and runpod-endpoint-ops for an endpoint that already works.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-vllm\u002FSKILL.md",[181,182],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":183,"categoryName":184,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[186,9,187,40,43,38,188,189,190,191,192,193,194,195,196,197,198,199,200,201],"runpod vllm","vLLM","image","log","port","request","release","network","verified","hugging face","openai","face","endpoint","availability","load-balancing","for",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":209,"publishedAt":51},"01M6CFW2PPRQZ006AVQXGMWPH1","runpodctl","Runpod CLI for managing GPU\u002FCPU workloads from the terminal — pods, serverless endpoints, templates, network volumes, Hub deploys, models, SSH, and file transfer (send\u002Freceive, network-volume upload\u002Fdownload). Use for terminal\u002FCI\u002Fscripting, SSH setup, `doctor`, or when the Runpod MCP tools are not connected; prefer runpod-mcp for structured tool calls in an MCP-enabled session.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpodctl\u002FSKILL.md",[208],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[204,210,43,211,42,212,213,45,40,214,215,193,9,216,217,218,198,219,220,221],"doctor","ci","Bash","cli","CPU","terminal","ssh setup","Tools","macos","send","windows","when",{"skillNo":223,"name":9,"nameZh":6,"description":224,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":225,"categories":226,"keywords":228,"publishedAt":51},"01M6CFVTW32TE82Y5NA85H83CK","Start here when the Runpod lane is unclear: picks the skill for a task (runpod-mcp and the journey playbooks it routes to, such as runpod-serverless-deploy, runpod-pod-deploy, runpod-pod-doctor and runpod-cost-audit; runpodctl, runpod-flash, runpod-companion-clis, runpod-usage, runpod-templates, runpod-build-template, runpod-migrate) and indexes two dozen end-to-end worked examples (golden paths). Use it before any multi-step or provisioning task, even when the lane is clear, to check for a matching golden path; for the Runpod MCP tools, runpod-mcp owns the answer contract, connection and tool rules.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod\u002FSKILL.md",[227],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[9,42,47,45,193,229,40,230,231,232,33,233,198,234,235,217,236,204,210,221],"start","end","companion","paths","golden","journey","audit","path",{"skillNo":238,"name":239,"nameZh":6,"description":240,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":241,"categories":242,"keywords":244,"publishedAt":51},"01M6CFVK41CSZ4HM1N7TKM3WWY","runpod-usage","Explain Runpod architecture and design choices: Pods versus Serverless, GPU\u002FVRAM, image construction, storage, networking, and workload development. For creating or improving a complete template project use runpod-build-template; execute infrastructure with runpodctl\u002Frunpod-mcp and code-first work with runpod-flash.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-usage\u002FSKILL.md",[243],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[245,9,246,204,247,248,249,42,250,188,49,251,252,253,40,201,39,254,38,255],"runpod usage","usage","development","container","design","use","explain","architecture","disk","complete","vram",{"skillNo":257,"name":258,"nameZh":6,"description":259,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":260,"categories":261,"keywords":263,"publishedAt":51},"01M6CFVEPPADDF61NC3MC4KCE5","runpod-templates","Find, use, and troubleshoot official Runpod Pod templates, including ComfyUI workflow model metadata repair. For creating or optimizing Dockerfiles and application template projects use runpod-build-template; deploy through runpod-mcp or runpodctl.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-templates\u002FSKILL.md",[262],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[264,265,9,204,46,266,267,43,268,42,269,188,212,45,190,270,271,272,273,201],"runpod templates","templates","python3","official","inventory","workflow","scripts","troubleshoot","png","repair",{"skillNo":275,"name":276,"nameZh":6,"description":277,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":278,"categories":279,"keywords":283,"publishedAt":51},"01M6PP9W1XMN6PT4J4H0XEMTKW","runpod-serverless-deploy","Bring any source (a HuggingFace repo, a ComfyUI workflow, a Hub release, a custom container image, a GGUF repo, a Civitai asset, or a community template) to a proven Runpod Serverless endpoint: pick the engine for the modality and model format, size the GPU from the model's real metadata, provision, warm, prove it with one real job, and hand back the URL with what it bills. Deploys an existing source through the Runpod MCP tools; code-first Python deploys (the Flash dev loop) are out of scope. Use when the user wants a model or worker served on Runpod Serverless, whatever the modality: text generation, speech-to-text or text-to-speech, image or video generation, embeddings, document processing, or their own handler image. For an LLM served with vLLM (Hub worker-vllm, a vllm\u002Fvllm-openai image, or a vLLM Pod), defer to runpod-vllm.","https:\u002F\u002Fgithub.com\u002Frunpod\u002Frunpod-plugins-official\u002Fblob\u002Fmain\u002Fplugins\u002Frunpod\u002Fskills\u002Frunpod-serverless-deploy\u002FSKILL.md",[280,281,282],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":183,"categoryName":184,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[284,9,285,286,287,288,289,290,40,291,292,43,293,38,42,294,295,269,188,221],"runpod serverless deploy","serverless deploy","deploy","serverless","back","Video","community","processing","scope","pick","loop","URL"]