Skip to main content
vLLM does not run natively on Windows. The supported path is WSL2 with Docker and the NVIDIA Container Toolkit, which gives you full GPU passthrough and access to the entire Linux inference stack without dual-booting. This guide walks through the complete setup on Windows 11 with NVIDIA GPUs.
Last tested: July 2026. A community PR for native Windows support was submitted but has not been merged into a stable release. Until then, WSL2 + Docker remains the recommended path.

Prerequisites

  • Windows 11 (22H2 or later) with WSL2 enabled
  • 1 or more NVIDIA GPUs with driver version ≥535
  • Docker Desktop for Windows with the WSL2 backend enabled
  • At least 16 GB of system RAM (32 GB recommended for models ≥13B)

Step 1: install WSL2 with GPU support

Open PowerShell as Administrator and install WSL2:
This installs Ubuntu by default. After reboot, confirm the WSL kernel version:
You need kernel ≥5.15 for GPU passthrough. Update if necessary:
Verify that your GPU is visible inside WSL2:
You should see your GPU listed with the correct driver version. If nvidia-smi reports no devices, update your Windows NVIDIA driver to ≥535 and restart WSL:

Step 2: install Docker with NVIDIA Container Toolkit

  1. Install Docker Desktop on Windows.
  2. Open Docker Desktop settings and confirm Use the WSL 2 based engine is checked.
  3. Under Resources → WSL Integration, enable your Ubuntu distribution.
Inside WSL2, install the NVIDIA Container Toolkit:
Restart Docker after installation:

Step 3: launch vLLM with Docker Compose

Create a docker-compose.yml file:
docker-compose.yml
Start the container:
Watch the logs while the model downloads and loads:
When you see Uvicorn running on http://0.0.0.0:8000, the server is ready.

Step 4: verify it works

Send a test request from inside WSL2:
Expected response: a JSON object with a choices array containing the model’s reply.

Multi-GPU configuration (MCDM)

WSL2 supports multi-GPU tensor parallelism through the Microsoft Compute Driver Model (MCDM). This replaces the older TCC mode and requires NVIDIA driver ≥535.

Switch to MCDM mode

On the Windows host, open an Administrator command prompt:
Repeat for each GPU (replace 0 with the GPU index), then reboot. After reboot, confirm all GPUs appear in WSL2:

Launch with tensor parallelism

Update your docker-compose.yml command to use multiple GPUs:
Tensor parallelism splits layers across GPUs and is preferred over pipeline parallelism for single-node multi-GPU setups. It delivers better throughput for the decode phase.

Connect from the Windows host

WSL2 runs in a lightweight VM with its own network. Docker’s port mapping forwards localhost:8000 from the WSL2 VM to the Windows host automatically, so you can reach vLLM from Windows applications:
If localhost forwarding doesn’t work, find the WSL2 IP address and use it directly:
Then on Windows:
WSL2’s IP address changes on every restart. If you rely on the IP directly, you need to update your configuration after each reboot. Prefer localhost forwarding when possible.

Expose your endpoint with Tokios

Running vLLM on WSL2 gives you local inference, but it’s only reachable from the same machine. Install the Tokios connector inside WSL2 alongside your vLLM container to expose your model through a secure tunnel — accessible from any device, without port forwarding or firewall rules:
Once paired, register your vLLM deployment on the Models tab and generate an API key. Your model is now reachable at https://api.tokios.com/v1 from anywhere. See Connector install for the full walkthrough.

Troubleshooting

Your NVIDIA driver is too old or WSL2 kernel is outdated. Update the Windows NVIDIA driver to ≥535, then run wsl --update from PowerShell and restart WSL with wsl --shutdown.
Specific vLLM versions (v0.22/v0.23) ship CUDA kernels that don’t match every WSL2 CUDA toolkit version. Pin your Docker image to a known-good tag, for example vllm/vllm-openai:v0.21.0, instead of latest.
vLLM reserves more VRAM for CUDA graphs than Ollama. If a 32B model OOMs on 2x RTX 3090, lower --gpu-memory-utilization to 0.85 or reduce --max-model-len.
Check that Docker Desktop’s WSL2 integration is enabled for your distribution. Run docker compose logs vllm to see the exit reason — it’s usually a missing GPU driver or an incorrect model path.
If nvidia-smi inside WSL2 only shows 1 GPU on a multi-GPU system, MCDM may not be active. Run nvidia-smi -g <GPU_ID> -dm 0 on the Windows host for each GPU, then reboot.

Native Windows support status

A community fork by SystemPanic adds native Windows support to vLLM without WSL2 or Docker. The PR was submitted in early 2025 but has not been merged into a stable release. Track progress on the vLLM GitHub repository. Until native support ships in a stable release, WSL2 + Docker is the production path for Windows.

Next steps

vLLM remote access

Expose your vLLM server to any device with Tokios — no port forwarding required.

Model fit

Find which models fit your GPU’s VRAM and what throughput to expect.