ico
Install on rented GPUs

Send traffic through the gateway

Point your router or clients at the gateway, and tell it who each request is for.

This is the one change in your request path. The gateway speaks the same OpenAI-compatible API as vLLM, so moving traffic to it is a change of address.

Point traffic at the gateway

Change each upstream of your router from vLLM's port to the gateway's port on the same machine, for example from 10.0.0.11:8000 to 10.0.0.11:8080. With nginx:

nginx.conf
upstream llm {
  server 10.0.0.11:8080;   # was 10.0.0.11:8000
  server 10.0.0.12:8080;   # was 10.0.0.12:8000
}

The gateway proxies these endpoints and answers everything else with 404:

EndpointRecorded
POST /v1/chat/completionsYes
POST /v1/completionsYes
POST /v1/embeddingsYes
GET /v1/modelsNo, answered from the next replica

Health checks of your load balancer can use the gateway's own GET /healthz, which answers ok without touching an engine.

Streams pass through event by event. The gateway asks vLLM for token counts at the end of each stream and keeps that extra chunk from clients that did not ask for it, so nothing changes for them.

Say who each request is for

Two request headers tell the gateway who a request was for and what for:

HeaderMeaningExample
X-Tenant-IdYour customer: whom the cost belongs toacme-corp
X-FeatureThe part of your product that sent itchat, search, agent

The report splits each replica's cost across tenants. The feature is recorded for your own queries.

Set them where you know the answer. Usually that is the service that authenticates your customers:

client = OpenAI(
    base_url="http://10.0.0.11:8080/v1",
    api_key="unused",
    default_headers={"X-Tenant-Id": customer.id, "X-Feature": "chat"},
)

If your stack already carries the customer in a header of another name, tell the gateway its name instead of adding one:

gateway.yaml
headers:
  tenant: X-Customer
  feature: X-Product-Area

Requests without the header are still recorded and still cost money; the report lists them as (no tenant header).

The gateway never stores request or response text. It hashes the text of each request in memory, in blocks of 256 characters with a per-install salt, and keeps only the hashes, which show which requests share a prefix. See Privacy and security.

Next

Check the install.

Copyright © 2026