Skip to main content
Model Repo is currently in beta and is available on Mac and Linux only. Windows support is coming soon.

Why use Model Repo

Model Repo lets you upload your own models to private storage on Runpod and attach them directly to Serverless endpoints. Key benefits:
  • Faster cold starts: Models are pre-cached on worker hosts when available, so cold starts are typically faster. In some cases a model may still need to be fetched from storage.
  • No HuggingFace dependency: Your models are stored in Runpod’s infrastructure, so endpoints don’t require an outbound download on every cold start.
  • Private storage: Models are stored in your account and are not accessible to other users.

Prerequisites

  • Your email is feature-flagged for Model Repo access.
  • jq is installed for parsing JSON output.

Step 1: Set environment variables

Export the following before running any commands. Make sure to set your actual API key — missing this is the most common source of auth errors later.
Each upload under the same MODEL_NAME creates a new version of that model, not a new model. Use a different name if you want a separate model entry.

Step 2: Install runpodctl

Already have runpodctl installed? Update it first:
Option A: Install via Homebrew (recommended)
Option B: Build from source
If you build from source, the binary is at ./bin/runpodctl. Either run it with that path, or add ./bin to your PATH. The steps below use runpodctl — adjust accordingly.

Step 3: Upload the model

This outputs a JSON string listing all uploaded files.

Step 4: Get your user ID and model hash


Step 5: Deploy a Serverless endpoint with the model attached

--model-reference is only supported with --hub-id and GPU endpoints. It is repeatable if you need to attach multiple models to the same endpoint. The --env MODEL_NAME flag passes the full local path to the worker so your handler knows where to find the model files.
You can target up to 3 GPU pools by passing a comma-separated list to --gpu-ids. Runpod schedules workers on whichever pool has availability.
What “pre-cached” means: When a worker starts, Runpod copies your model files from storage onto the worker host’s local disk before the container boots. This eliminates the external download on cold start. Files stay on disk for as long as the worker is running; if the worker is replaced, the next worker pre-caches the files again on startup.

Step 6: Verify the model is working

Send a test request to confirm the endpoint is live and the model is accessible. Replace ENDPOINT_ID with the ID returned in the previous step:
A successful response confirms the endpoint is running and the model is attached. If the request fails with an auth error, verify that RUNPOD_API_KEY is set correctly. You can also send requests from the web UI if you prefer a graphical interface.

Step 7: Clean up

Delete the endpoint after testing to stop accruing spend. Use the web UI or:

Removing a model

To remove a model and all its versions from your repo:
This removes the entire model and all its versions. There is currently no way to remove a single version. Make sure no active endpoints reference this model before removing it.