Skip to main content

Create a template

Open Templates → New template. The form is eight sections; only Name and Image are required, and every other field has a working default — Mode starts on Args. This page walks them in order.

Basics

FieldAcceptsNotes
Namerequired, up to 80 charactersUnique within your organization, compared case-insensitively. A clash returns TEMPLATE_NAME_TAKEN. Two different organizations may both use the same name.
Descriptionup to 4,000 charactersThe one-liner shown on the card.
VisibilityPrivate or PublicPrivate is visible to your organization only. Public makes the recipe world-readable but still editable only by you.

Image

FieldAcceptsNotes
Imagerequired, up to 500 charactersThe repository reference without a tag, for example superheat/base or pytorch/pytorch. A first segment containing a dot or a colon is treated as the registry host.
Tagup to 200 characters, defaults to [Automatic][Automatic] is resolved at launch to the newest Superheat base tag the chosen machine's CUDA supports. Any other value is used verbatim.
Repoup to 500 charactersOptional. A bare owner/name links to Docker Hub; a full URL is used as-is.
Linkup to 1,000 charactersOptional URL — a model card or a repository — surfaced on the card.

[Automatic] only makes sense for the Superheat base image and images derived from it, because it resolves to a cuda-<minor> tag. Pin a real tag for anything else. See Base image.

Launch

FieldAcceptsNotes
ModeArgs, SSH, Jupyter or VMDecides what starts inside the container and which ports are published. See Launch modes.
Argumentsup to 8,000 characters, args mode onlySplit with shell word rules into the container command.
Jupyter working dirup to 1,000 characters, jupyter mode onlyDefaults to /workspace.
JupyterLabswitch, jupyter mode onlyOn serves JupyterLab, off serves the classic notebook.
On-start scriptup to 65,536 charactersBash, run once at first start. See On-start scripts.

Choosing SSH or Jupyter shows a reminder that both modes need an image derived from the Superheat base image. A plain upstream image has no sshd and no Jupyter, so it belongs in args mode.

Environment

Each row is a key, a value and a secret switch.

FieldAcceptsNotes
Keyup to 256 charactersRows with an empty key are dropped on save.
Valueany string, or emptyAn empty value is stored as unset and is not injected at launch, which makes it a useful placeholder for a value the renter must supply.
SecretswitchMasks the value for everyone outside the owning organization.

Read Environment variables before you add anything named JUPYTER_TOKEN or GPU_COUNT — the platform overlay always wins over template and renter values.

Ports

Each row is a container port, a protocol, a label and a public switch.

FieldAcceptsNotes
Container port1 to 65535The port inside the container, not the host port. The host port is assigned at launch.
Protocoltcp, udp, http or httpshttp and https travel over TCP; the choice records what the port serves.
Labelup to 64 charactersShown on the template detail. A label of open makes this port the console Open button target.
Publicswitch, on by defaultRecorded on the port entry.

Details and the reserved labels are in Ports.

Machine constraints

Constraints filter which offers a template can launch on. Leave a field blank for no requirement. The deploy page checks them before you submit and explains any mismatch.

FieldAcceptsMeaning
Minimum CUDAversion string, for example 12.4The machine's CUDA must be at least this.
Minimum VRAM (MB)integer, 0 or moreCompared against the offer's VRAM per GPU.
Architecturestring, for example amd64Superheat hosts are x86_64; anything else makes the template unlaunchable today.
Recommended disk (GB)integer, 0 or moreAdvisory — it does not block a deploy.
Requires a VM-capable hostswitchRestricts the template to offers whose host can run full KVM virtual machines.

Private registry

Fill these in only if your image lives in a private registry. Username accepts up to 256 characters, password or token up to 1,000. The password is stored encrypted and never returned by the API. See Private registries.

Readme

Free-form notes, up to 100,000 characters, shown on the template detail below the recipe. This is where usage instructions belong — not in the description, which is a single line on the card.

Save

Create template posts the form and returns the new template with its id and its freshly minted hash_id. It lands at the top of My Templates.

The same call over the API, with SUPERHEAT_API and SUPERHEAT_KEY set as in the API overview:

curl -X POST "$SUPERHEAT_API/v1/templates" \
-H "Authorization: Bearer $SUPERHEAT_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "PyTorch 2.4 notebook",
"description": "JupyterLab on the CUDA 12.4 base",
"image": "superheat/base",
"tag": "[Automatic]",
"launch_mode": "jupyter",
"jupyter_dir": "/workspace",
"use_jupyter_lab": true,
"onstart": "pip install torch torchvision",
"env": [{"key": "HF_TOKEN", "value": "hf_...", "secret": true}],
"ports": [{"container_port": 7860, "protocol": "http", "label": "open", "public": true}],
"constraints": {"cuda_min": "12.4", "min_vram_mb": 16384},
"visibility": "private"
}'

Edit and delete

Edit on a template you own opens the same form; the API equivalent is PATCH /v1/templates/{id} and it accepts a partial body. Editing any launch field re-mints the hash_id, so links you shared as a pinned hash stop resolving — see Share and duplicate.

Delete removes the template from the gallery. Instances already deployed from it are unaffected and keep running.

System templates are read-only. To change one, duplicate it first.