AI agents · OpenClaw · self-hosting · automation

Quick Answer

Self-Host an OpenAI-Compatible LLM With GPU Autoscaling

Published:

The short answer

Self-hosting an OpenAI-compatible LLM with GPU autoscaling takes two layers: an inference engine that speaks the OpenAI API, and a control plane that adds and removes GPU replicas. As of November 9, 2026:

  • Engine: vLLM (v0.32.0, October 18, 2026) or SGLang (v0.5.23, November 2, 2026). Both serve /v1/chat/completions and /v1/completions, so existing OpenAI SDK code only changes its base_url.
  • Control plane on Kubernetes: llm-d for large models and heavy traffic, KServe if you already run ML on Kubernetes, vLLM production-stack for the fastest start.
  • No Kubernetes: a serverless GPU platform — Modal, RunPod Serverless or Baseten — runs your vLLM container and autoscales it.
  • Several clouds or regions: SkyPilot, with the caveat that its SkyServe serving library is still beta.

The comparison

Versions from GitHub and prices from vendor pages on November 9, 2026.

OptionWhat it isAutoscalingLicence / priceBest for
llm-d (v1.0.0, Oct 20, 2026)Distributed serving stack on Kubernetes above vLLM/SGLang; CNCF sandbox, founded by Red Hat, Google Cloud, IBM Research, CoreWeave and NVIDIASLO-aware autoscaling, prefix-cache and load-aware routingApache-2.0Big MoE models, high traffic, agent workloads
KServe (v0.21.0, Sep 25, 2026)CNCF incubating model-serving platform with vLLM and llm-d backendsRequest-based autoscalingApache-2.0One platform for LLMs and classic ML
vLLM production-stack (Nov 7, 2026 chart)Reference Helm chart: vLLM engines, router, LMCache, Prometheus + GrafanaScale engines with Kubernetes autoscalingApache-2.0Fastest path from one vLLM to a cluster
NVIDIA Dynamo (v1.6.2, Nov 5, 2026)Datacenter-scale orchestration above vLLM, SGLang and TensorRT-LLMAutomatic scaling, disaggregated servingApache-2.0 (per README)Multi-node NVIDIA fleets
ModalServerless containers with GPUsScales per request; per-second billingStarter $0 + $30/mo credits; Team $250/mo + $100 creditsPython teams, spiky traffic
RunPodGPU pods plus Serverless workersServerless workers scale on demandH100 SXM pod $3.99/hr; Serverless billed by usageCheapest raw GPU-hours
BasetenManaged custom-model deployments (Truss)Autoscaling replicasH100 $0.10833/minManaged, production SLAs
SkyPilot (v0.14.2)Launches replicas across clouds and regionsSkyServe load-balancing and autoscaling (beta)Apache-2.0Multi-cloud cost and capacity hunting

Step 1 — Get one replica right

Start with a single GPU node and vllm serve <model> (or SGLang’s server). Measure tokens per second and time to first token at the concurrency you expect. Fix tensor-parallel size, quantisation and context length here: autoscaling multiplies whatever one replica does, including its mistakes. Engine choice is covered in best LLM inference engines.

Step 2 — Pick the control plane your team can run

  • You have a platform team and Kubernetes: llm-d or KServe. llm-d’s well-lit-path guides ship benchmarked Helm recipes; its README cites up to 3x higher output throughput with prefix-cache-aware routing versus round-robin in a Red Hat deployment.
  • You want Kubernetes but a small surface: vLLM production-stack — engines, a router that sends a session back to the replica holding its KV cache, and dashboards in one chart.
  • You do not want Kubernetes: deploy the same container to Modal, RunPod Serverless or Baseten. You trade some per-hour cost for zero cluster operations. Vendor-by-vendor detail is in inference vendors with autoscaling and fast cold starts.

Step 3 — Scale on LLM signals

CPU utilisation is useless for LLM servers. Scale on queue length, in-flight requests per replica or KV-cache utilisation, and set the threshold below the point where your p95 latency breaks. On serverless platforms the equivalent knob is a target concurrency per container.

Step 4 — Decide what idle costs you

A replica of a large model can take minutes to start because the weights must be pulled and loaded. For user-facing traffic keep a minimum of one warm replica; cache weights on a fast volume close to the GPUs; scale to zero only for internal or batch endpoints. Modal’s pricing page frames the trade-off directly: you pay a higher per-hour rate but nothing for idle GPUs.

Step 5 — Put a gateway in front

Add API keys, per-team rate limits, request logging and a fallback route to a hosted API when your cluster is saturated. The OpenAI-compatible surface means one gateway can front both your self-hosted model and commercial providers — see best LLM gateways.

Step 6 — Check the economics

Self-hosting beats an API only at sustained utilisation. Run the numbers with the self-host vs API breakeven guide before committing to reserved GPUs; a per-token open-model host is often cheaper below a few hundred million tokens a day.

Last verified: November 9, 2026.

Sources