Startup script#

A startup script is optional free-text shell that runs once inside a fresh instance after it is created. Use it so a box launched from the queue, often while you are offline, arrives already warming the GPU or serving a model instead of sitting idle until you SSH in.

The field starts empty. Nothing runs unless you put something there. What runs is exactly the text in the editor: templates only pre-populate it, nothing stores which template you picked.

Where to set it#

In the create or queue panel, open + startup script (optional). Start from a template or write your own. Setup minutes are billed like any other minute on a live instance.

While an entry is queued it has not launched yet, so the script is still yours to change: use add / edit startup script on the queued card. Whatever is saved when capacity opens is what runs, and clearing the box means nothing runs.

Warning

No secrets in the script

Do not put API keys, tokens, or passwords in it. Prefer ungated models, or fetch credentials yourself after you SSH in.

Templates#

  • Warm up + benchmark, checks the GPU and leaves a benchmark figure for the login banner. Runs offline (the CUDA toolkit is already in the image), about 2 minutes.

  • Download a model, pulls the weights into the instance’s Hugging Face cache using vLLM’s image, then stops. Nothing is served, no port is opened and no GPU is requested, downloading is network and disk. Defaults to Qwen3-8B (~16 GB), which finishes well inside the runner’s one-hour cap even on a slow link. A later vllm serve then starts against a warm cache, and the script prints that command for you. Model and image are variables at the top.

Nested Docker needs the nvidia runtime and NVIDIA_VISIBLE_DEVICES, not --gpus all. The serve command the download template prints already uses the correct form.

When it runs#

  • Handed over only after SSH is answering and your key is written, then started in the background. Create, and the ready email, never wait for the script to finish. You can SSH in while it is still running, or because it failed.

  • Runs once as user (a login shell, so CUDA is on PATH). Capped at one hour, a hung script is stopped and marked timed out.

  • Does not re-run on a host reboot or when you restart the instance. A done marker blocks a second pass.

  • Hard limit: 16 KB of raw script text.

Status, log, and stop#

The runner reports what it observed, not that your workload is “ready”. A script that backgrounds a server can exit 0 while the server is still loading. The log is the authority.

  • Instance card, a startup line: script running, script finished, script timed out, or script stopped.

  • SSH login banner, the same state, plus the watch and stop commands when a script was supplied.

  • Ready email (queue path), notes that a script was started, never that it succeeded.

# watch
tail -f /var/log/enverge/startup.log

# stop the oneshot unit (frees its GPU work)
sudo systemctl stop enverge-startup

# if your script left a docker container running, use its stop hint instead
# (shown on the banner while the script is running), e.g.:
docker stop my-container