Tutorial

Serve your first model

Pull Qwen3-0.6B from the public catalog, restore it and send it a chat completion. About ten minutes, most of it the download.

You need a host prepared as in Install, with at least one free H100, H200, B200 or L40S. Qwen3-0.6B is the catalog's smallest model, 9 to 10 GiB per platform, so the download is short and the restore takes a few seconds.

Check the host

bash
$ warmctl doctor

Every line should start with ok. If one says FAIL, fix it as Install describes and run doctor again.

Find the model

bash
$ warmctl catalog
MODEL               PLATFORM          SIZE     STATUS  LICENSE
glm53-flash         8xh100-80gb-sxm   404 GiB  ready   MIT
…
qwen3-0.6b          1xh100-80gb-sxm   9 GiB    ready   Apache-2.0

catalog lists the models whose snapshots this host can restore: one row per platform that matches your GPUs and driver. ready means it is in the registry, pulled that it is already on this host. Add --all to see the other platforms and why they do not fit.

Restore it

bash
$ warmctl up qwen3-0.6b

up picks the snapshot for this host's GPUs and driver, downloads it into /var/lib/warmctl, checks the host, restores the engine and runs its canary: one prompt that must answer as it did when the snapshot was built. Then it opens the API and prints serving started with the time it took.

up stays in the foreground while the engine serves. Leave this terminal open and use a second one for the next steps.

Send a request

bash
$ curl -s localhost:8000/v1/models
$ curl -s localhost:8000/v1/chat/completions -H 'content-type: application/json' -d '{
    "model": "qwen3-0.6b",
    "messages": [{"role": "user", "content": "Name three warm colors."}],
    "max_tokens": 64
  }'

The gateway speaks the OpenAI API: /v1/models, /v1/completions, /v1/chat/completions, plus /metrics and /health. vLLM's management routes stay closed. It listens on 127.0.0.1:8000; --listen 0.0.0.0:8000 opens it to the network.

See it and stop it

bash
$ warmctl ps
ID          STATUS   LISTEN          UP     SNAPSHOT
qwen3-0.6b  running  127.0.0.1:8000  2m14s  /var/lib/warmctl/pulled/…
$ warmctl down qwen3-0.6b

down gives the engine 30 seconds to finish and stops it. Ctrl-C in the first terminal does the same.

Restore it again

bash
$ warmctl up qwen3-0.6b

The snapshot is on disk now, so this time there is no download: up goes straight to the restore, and serving started comes in seconds. This is what every new replica costs once its snapshot is local, instead of a cold start that loads, compiles and captures again.

What you did

Next: build and publish a snapshot of your own, or read how a restore works.