From runpod
Start here for any Runpod task — running GPU/CPU pods, deploying serverless endpoints, templates, network volumes, building images, or understanding how Runpod works. Routes the request to the right Runpod skill (runpod-mcp, runpodctl, flash, companion-clis, or runpod-usage). Use when it is unclear which Runpod skill applies.
How this skill is triggered — by the user, by Claude, or both
Slash command
/runpod:runpodThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The entrypoint for the Runpod skills. This skill does no work itself — it picks
evals/mcp-vs-runpodctl-tiebreak.eval.mdevals/prefer-prebuilt.eval.mdevals/route-service-vs-endpoint.eval.mdgolden-paths/01-ollama-pod.mdgolden-paths/02-comfyui-pod/README.mdgolden-paths/02-comfyui-pod/variant-a-from-scratch.mdgolden-paths/02-comfyui-pod/variant-b-prebuilt.mdgolden-paths/03-whisper-endpoint/README.mdgolden-paths/03-whisper-endpoint/variant-a-hub.mdgolden-paths/03-whisper-endpoint/variant-b-flash.mdgolden-paths/04-finetune-pod.mdgolden-paths/05-model-to-endpoint-pipeline.mdgolden-paths/06-dev-pod.mdgolden-paths/07-network-volume-handoff.mdgolden-paths/08-finetune-to-serverless.mdgolden-paths/09-custom-serverless-dev-loop/README.mdgolden-paths/09-custom-serverless-dev-loop/template/Dockerfilegolden-paths/09-custom-serverless-dev-loop/template/handler.pygolden-paths/09-custom-serverless-dev-loop/template/requirements.txtgolden-paths/09-custom-serverless-dev-loop/template/start.shThe entrypoint for the Runpod skills. This skill does no work itself — it picks
the right lane and hands off. Read the matching skill's SKILL.md next.
| Lane | Use it for |
|---|---|
| runpod-mcp | Manage infra (pods, endpoints, jobs, templates, volumes, registries, catalog, billing) via structured tool calls — when the Runpod MCP tools are connected in this session. |
| runpodctl | Manage the same infra from a terminal/CI/script, plus the things only the CLI does: Hub browse/deploy, send/receive file transfer, SSH keys, doctor setup, model cache. |
| flash | Write Python that runs on Runpod serverless — @remote/@Endpoint functions, flash dev hot-reload, flash deploy. Code-first, not infra management. |
| companion-clis | Prerequisite artifacts: download a model (hf), build/push an image (docker), repos/releases (gh), move data to a network volume over S3 (aws). |
| runpod-usage | Understand how Runpod works before acting — pods vs serverless, building a container, storage, GPU selection, gotchas. Knowledge only. |
Infra tasks (pods, endpoints, jobs, volumes) need a working control plane — the Runpod MCP or runpodctl. Don't start and discover mid-task that nothing's set up: check first, and if it isn't, help the user set up rather than limping on a partial fallback.
Check (credential resolution order: RUNPOD_API_KEY env → .env → ~/.runpod/config.toml):
runpodctl user # succeeds ⇒ a key is set and valid
Plus, in Claude Code, /mcp should show runpod Connected.
Rule: get a key first — do not default to MCP OAuth. The reason: one RUNPOD_API_KEY
unlocks every tool — it authenticates runpodctl + flash + the hosted MCP (as --header "Authorization: Bearer $RUNPOD_API_KEY"). The MCP's "Sign in with Runpod" OAuth auths the MCP alone — the CLIs
stay blocked, so you hit a wall on any CLI-only task (Hub, send/receive, SSH, doctor,
model cache/Model Repository, CPU endpoints). ⚠️ OAuth-only is a half-setup. If nothing's
set up, stop and get a key, in order:
flash login — browser OAuth that saves a real key to ~/.runpod/config.toml (runpodctl
export RUNPOD_API_KEY=… (https://console.runpod.io/user/settings) — same full unlock;
best for headless agents./mcp → Sign in) — last resort, MCP-only work; CLIs stay unauthed.Then: if a lane already works, use it — but if only the MCP is OAuth'd, still get a key
before any CLI-only step. Missing a CLI? curl -sSL https://cli.runpod.net | bash (runpodctl) ·
uv tool install runpod-flash (flash) · npx @runpod/mcp-server@latest add (MCP). Full setup:
runpod-usage/reference/getting-started.md.
send/receive, SSH keys, doctor,
model cache → runpodctl.create-pod, list-endpoints, … are available) → runpod-mcp.Both drive the same Runpod API, so they overlap on infra CRUD. Choose by capability first, environment second:
Capability matrix (pick the preferred lane per operation):
| Operation | Preferred lane | Why |
|---|---|---|
| List/get anything; start/stop/restart/delete a pod; simple CRUD on endpoints, templates, volumes, registries; catalog; billing | runpod-mcp if connected, else runpodctl | Simple structured ops — MCP is typed and convenient |
| Create a simple pod (one image + one GPU) | runpod-mcp if connected, else runpodctl | Both handle it |
| Create a pod from a template, a CPU pod, or with a multi-GPU priority list | runpodctl | MCP's v2 create-pod has no templateId, requires an image, and narrows to a single GPU type |
| Deploy from the Hub | runpodctl | MCP has no Hub tools |
File transfer (send/receive), SSH keys/info, doctor setup, model cache | runpodctl | MCP has no tool for these |
Invoke a serverless job (run/runsync/status/stream) | runpod-mcp if connected, else runpodctl | MCP has first-class job tools |
Rule of thumb: default to MCP for the easy stuff, hand off to runpodctl the moment an op needs a flag/feature MCP doesn't expose.
For any "get running on Runpod" task, follow the development loop in
runpod-usage/reference/development-loop.md: decide pod vs serverless → provision → set up
(only if from-scratch) → verify → deliver → cost-guard + teardown. Two rules bind within it:
It branches to two sub-loops:
runpod-usage/reference/pod-workflows.md
(ports + env + volume at creation, SSH-exec install, bind 0.0.0.0, poll the
proxy URL). Execute in the runpodctl lane.runpod-usage/reference/endpoint-workflows.md
(Hub worker vs flash vs custom image; invoke /run//runsync; poll job status).Two dozen end-to-end scenarios (nearly all live-verified) live in
./golden-paths/README.md — the yardstick for "can
an agent finish the job", with real commands + observed output to copy from. When a
task matches one, open its golden path first instead of re-deriving it:
| Want to… | Golden path |
|---|---|
| Run a server (Ollama/ComfyUI) on a pod at a URL | 01, 02 |
| Deploy a serverless model endpoint (Hub / flash / custom image) | 03, 05 |
| Serve a HuggingFace model without baking it in or a volume (host-cached) | 20 — model caching (--model-reference) |
| Call a ready hosted model (no deploy) | 11 — Public Endpoints |
| Fine-tune, then serve the result | 04, 08 |
| Interactive dev box (SSH / VS Code) | 06 |
| Move data pod → volume → serverless | 07 |
| Custom serverless when flash isn't enough (dual-mode image dev loop) | 09 |
| Build a minimal image for a target (pod vs serverless queue) | 22 (pod), 23 (queue); concepts in building-images |
| Decide what to bake into the image vs mount on a network volume | 25 — bake vs mount |
| High availability / multi-region serverless (multi-volume + data sync) | 10, 19 (3-region) |
Stream output incrementally (/stream) | 12 |
| Tune autoscaling / raise per-worker throughput | 13 (autoscaling), 18 (concurrency) |
| Load-balancing / HTTP-server or WebSocket worker | 14 (LB), 17 (WebSocket) |
| Get notified on job completion (push, not poll) | 16 — webhooks |
| Check health / debug a failing endpoint | 15 — monitor & debug |
Sequence is always understand → produce artifacts → manage infra → verify, because infra can only reference artifacts that already exist. Keep each step in one lane, and switch lanes at credential boundaries.
Example — "deploy openai/gpt-oss-20b to a serverless endpoint":
hf download …, docker build --platform=linux/amd64 …, docker push.Everything is one key: RUNPOD_API_KEY (https://console.runpod.io/user/settings).
Each lane just makes that key resolvable — runpodctl doctor, flash login, MCP
stdio env var, or MCP hosted "Sign in with Runpod" (OAuth, no key on disk).
Companion CLIs use their own credentials (HuggingFace token, GitHub auth,
Docker Hub PAT, Runpod S3 keys for aws) — do not reuse RUNPOD_API_KEY for
those.
npx claudepluginhub runpod/runpod-plugins-official --plugin runpodRunpod CLI for managing GPU/CPU workloads from the terminal — pods, serverless endpoints, templates, network volumes, Hub deploys, models, SSH, and file transfer (send/receive). Use for terminal/CI/scripting, Hub browse/deploy, SSH setup, `doctor`, or when the Runpod MCP tools are not connected. For structured tool calls in an MCP-enabled session, prefer runpod-mcp.
Guides running Python code on Modal serverless platform for AI inference, batch jobs, web endpoints, scheduled tasks, and sandboxed execution. Activates on modal imports, decorators like @app.function, or CLI commands.
Launches and manages GPU/TPU/CPU workloads across 25+ clouds, Kubernetes, and Slurm. Handles training, fine-tuning, inference serving with autoscaling, and cost optimization.