Different layers of the stack. vLLM serves open-weight models on your GPUs. GoModel sits in front of vLLM and hosted providers and adds keys, budgets, failover, and audit logs.
Not rivals: vLLM makes tokens, GoModel decides who may ask for them and where the request goes.
| GoModel | vLLM | |
|---|---|---|
| Layer | Gateway in front of model servers | Inference engine on your GPUs |
| What it runs | Routing, auth, metering, logs | The model weights themselves |
| API | OpenAI and Anthropic compatible | OpenAI and Anthropic compatible |
| Access control | API keys per user, budgets | Static shared API keys |
| Models per endpoint | 34 providers, hosted and self-hosted | One base model per process, plus LoRAs |
| Caching | Exact and semantic response cache | Automatic prefix (KV) cache |
| Footprint | Any CPU box, ~21 MB image | GPU server, ~9 GB image |
Most teams that self-host run both.
One env var registers vLLM as a provider. GoModel adds a couple of milliseconds and gives every caller its own key, budget, and audit trail.
# On the GPU box
vllm serve meta-llama/Llama-3.1-8B-Instruct
# In GoModel's environment
VLLM_BASE_URL=http://your-vllm:8000/v1
# VLLM_API_KEY=... only if vllm serve used --api-keyCall it as vllm/meta-llama/Llama-3.1-8B-Instruct. A second instance gets its own provider via VLLM_GPU2_BASE_URL. vLLM facts are from its docs and repository as of October 2026 (latest release v0.30.0).
Benchmarks are an argument; your traffic is the proof. GoModel speaks the OpenAI and Anthropic APIs natively, so pointing an existing app at it is a base-URL change.
docker run --rm -p 8080:8080 \
-e LOG_FORMAT=text \
-e OPENAI_API_KEY="your-openai-key" \
enterpilot/gomodelfrom openai import OpenAI
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="your-gomodel-key",
)Full setup, providers, and configuration live in the documentation. Questions? Ask on Discord or book a 30-minute call.