vllm/vllm-openai image. vLLM already serves an OpenAI-compatible API, so you don’t need a Sprocket worker or a Docker build. Jig deploys the image as-is, using two settings in [tool.jig.deploy]:
image: Deploy an existing image instead of building one. Jig skipsdocker buildanddocker push.command: Override the image’s startup command. Here it runsvllm servewith the model and serving flags.
curl, not jig submit.
The full example is in the Sprocket repo at examples/qwen_vllm.
Requirements
- Together API key: Get one from together.ai.
- Dedicated container inference access: Contact your account representative or the sales team to enable it for your organization.
- Together CLI: Install with
uv tool install "together[cli]". - OpenAI Python SDK: The Python request sample uses it. Add it to your Python project with
uv add openai.
TOGETHER_API_KEY:
Configure the deployment
Create a directory with a singlepyproject.toml:
pyproject.toml
- Pin the image tag: This guide is tested with
v0.17.1. Pin a specific tag, notlatest, so a replica that restarts doesn’t pick up a new vLLM release. - Match GPUs to tensor parallelism: Set
--tensor-parallel-sizetogpu_countso vLLM uses every GPU in the replica. Here, vLLM splits the 32B model in BF16 across two H100s. - Match
portto--port: Together routes traffic to the port inport, so it must match the port vLLM listens on. - Keep the default health check: The default
health_check_pathis/health, which vLLM serves. The deployment reports ready once vLLM has loaded the model. - Autoscale on vLLM’s own metric: vLLM exports Prometheus metrics on
/metrics, so theCustomMetricautoscaler scales onvllm:num_requests_runningwith no extra code. - Use a unique project name: The
nameunder[project]is the deployment name and the last segment of the endpoint URL. Deployment names must be unique, so ifqwen25-vlis taken, changenameand use the new name in the endpoint URL.
Serve a different model
Change the model ID incommand and in your requests, then size gpu_count, --tensor-parallel-size, and memory to fit the new model. Any vllm serve flag can go in command.
Qwen2.5-VL-32B-Instruct isn’t gated, so this guide needs no Hugging Face token. For a gated model, store your token as a secret before you deploy. vLLM reads HF_TOKEN from the environment when it downloads the weights. Run the command from the directory that contains pyproject.toml, so the secret attaches to this deployment:
Deploy
If you’re logged in with
tg login, pass your API key explicitly on the first deploy: tg beta jig deploy --detach --api-key "$TOGETHER_API_KEY". The first deploy stores an API key in the deployment, and it can’t use a tg login session for that. While you’re logged in, the CLI ignores TOGETHER_API_KEY.pyproject.toml:
--detach returns as soon as the deployment is created. Without it, jig deploy waits for the replica but gives up two minutes after the container starts, while vLLM is still loading the model, and exits with Running but not ready after 120s. The deployment keeps starting either way.
The first deploy takes 5 to 15 minutes while Together schedules two H100s, pulls the vLLM image, and vLLM downloads and loads about 65 GB of weights. The deployment is ready when jig status shows Ready for Status and 1/1 ready for Replicas.
When the deployment is ready, get the endpoint URL:
https://api.together.ai/v1/deployment-request/<DEPLOYMENT_NAME>. Requests to any path under it are forwarded to the container, authenticated with your Together API key.
Call the endpoint
Point any OpenAI client at the endpoint URL plus/v1, using your Together API key. The model field must match the model ID you pass to vllm serve in command:
content. A shortened response looks like this:
/v1/completions and /v1/models, are available under the same endpoint URL.
Delete the deployment
The deployment keeps at leastmin_replicas replicas running, two H100s each, until you delete it:
jig destroy doesn’t delete the TOGETHER_API_KEY secret that the first deploy stored. To delete it too, run this from the same directory:
Next steps
OpenAI-compatible endpoint with Sprocket
Write your own worker when you need custom pre- or post-processing.
Autoscaling
Choose scaling metrics and targets, and see how replicas scale.
Jig CLI reference
Look up every
[tool.jig.deploy] setting and deploy command.Sprocket examples
Browse more deployable examples, from hello-world to speech-to-speech.