Why teams put a vLLM LiteLLM gateway in front of their models
A LiteLLM gateway in front of vLLM gives the platform team one controlled entry point for model traffic, with per-team keys, spend limits and failover that vLLM does not provide on its own. Picture a platform team that has vLLM serving several models on GPU nodes, but where every consumer team shares one API key, nobody can see which team drove a spike in token use, and a single replica failure stops requests for that model. The fix is not to bolt more controls onto each model server. It is to move identity, budgets and routing into a layer built for them and keep the model servers private.
In the vLLM LiteLLM pattern, the LiteLLM proxy is the only user-facing entry point. vLLM servers started with vllm serve listen only on an internal network that the proxy can reach, and applications send OpenAI-format requests to the proxy. Each model is registered in the LiteLLM configuration with the hosted_vllm prefix, which tells LiteLLM to call the vLLM OpenAI-compatible endpoint. Confirm the exact model entry, API base and key handling against the vLLM LiteLLM guide for your vLLM release before you copy any configuration. Placement matters because vLLM's --api-key option does not cover endpoints such as /metrics and /health, so the network boundary and a reverse proxy allowlist must do that job.
The integration does not make vLLM enforce budgets. vLLM has no concept of a team, a virtual key or a dollar or token allowance. Those controls live in LiteLLM: virtual keys, per-key, per-user and per-team budgets, TPM and RPM limits, and restrictions to named models. These limits only apply to traffic that passes through the proxy, so any client that can reach a vLLM port directly bypasses them. Failover is similarly bounded. The LiteLLM router can retry, cool down failing deployments and order fallbacks by priority, but only across deployments you define. If every entry points at one vLLM server, the gateway adds keys and limits but no redundancy. Model compatibility is also unchanged: a model still needs a chat template, or one supplied with --chat-template, before the chat completions API works.
Before building this, decide who owns virtual keys and budget changes, and confirm the supporting services. LiteLLM virtual keys need a PostgreSQL database, and Redis 7.0 or newer becomes necessary once more than one proxy instance runs, because rate limits and router state must be shared. Ask your team to confirm the current LiteLLM release line it will support, since LiteLLM maintains only its four most recent stable minor versions. Licensing differs by directory: code outside enterprise/ is MIT licensed, while enterprise/ uses its own license. SSO is free for up to 5 users from v1.76.0, and features such as SCIM, audit logs and team RBAC require an Enterprise license. When requesting a quote, ask for the scope of gateway deployment, database and Redis setup, vLLM network isolation, key and budget design and failover testing as separate line items.
What you need before connecting LiteLLM to vLLM
Six decisions and components need to be settled before the LiteLLM proxy can route requests to vLLM. They cover the inference server, the databases, the software release, the network paths and the secrets. Confirm each one against your environment and the release notes for the versions you pin.
vLLM server and chat templates
Pin a vLLM release from the GitHub releases page and start each model with vllm serve, which exposes the OpenAI-compatible endpoints the gateway calls. The vLLM releases page listed v0.31.0 as the latest minor release at the time of writing (October 5, 2026), so confirm what is current before you pin. Every model that serves chat completions needs a chat template, either included with the model or supplied with --chat-template. Send each model a test chat request before you add it to the gateway.
PostgreSQL for virtual keys
LiteLLM virtual keys, along with their per-key, per-user and per-team budgets and rate limits, require a PostgreSQL database. Plan its high availability, backups and connection limits before the proxy goes live, because key and spend state lives there. Ask your database team to confirm that the database sits in the same network zone as the proxy and accepts connections only from it. Keep the connection string in your secret store, not in the container image.
Redis 7.0 or newer for multiple proxies
Redis 7.0 or newer is required once more than one LiteLLM proxy instance runs, because rate limits, router state and cache must be shared across instances. A single-instance pilot can defer it, but design for it early if you expect horizontal scaling. Confirm the Redis version your platform provides, its persistence settings and whether it sits inside the same network boundary as the proxies. Per-team rate limits drift across replicas when they do not share this state.
Pinned LiteLLM release
Pin the LiteLLM release in your deployment manifests and track the GitHub releases page for updates. LiteLLM maintains support for the four most recent stable minor versions, so the version you pin should fall within that window on the day you go live and throughout your upgrade planning. The releases page listed v1.105.1, published October 14, 2026, at the time of writing. Confirm the current release and its support status before you start.
Network paths to each endpoint
Document every allowed flow before deployment: clients to the proxy, the proxy to PostgreSQL and Redis, and the proxy to each vLLM endpoint. The vLLM security documentation warns that communication between nodes in a multi-node deployment has no authorization or encryption by default, so place those nodes on an isolated network. Confirm that only the proxy can reach the vLLM API port, because the --api-key option does not protect /metrics or /health.
LITELLM_MASTER_KEY storage
LITELLM_MASTER_KEY is the administrative key that creates virtual keys and manages the proxy, and it must start with sk-. Store it in a secret manager that the proxy reads at runtime, and keep it out of configuration files and container images. Decide who can read the secret, how it rotates and which audit records show its use. Confirm the supported secret manager integrations for your chosen release in the LiteLLM documentation.
Which vLLM endpoints users should reach through the gateway
The vLLM --api-key option protects only part of the server's surface. According to the vLLM security docs, it covers endpoints under /v1, /v2, /inference and /cohere, but not /invocations, /pause, /resume, /abort_requests, /metrics or /health. Some of the uncovered paths are operational controls. Pause and resume change how the engine serves traffic, and abort_requests cancels work in flight. If any client can reach vLLM directly, it can call these paths without the key, so the key cannot be the only control on the server.
The design rule that follows is that only LiteLLM should open connections to vLLM. Place vLLM on a private network segment or pod network with no ingress from user or application subnets, so the LiteLLM proxy is the only caller. LiteLLM then exposes only the paths applications need, such as /v1/chat/completions, /v1/completions, /v1/embeddings and /v1/responses, where the deployed vLLM version supports them. Paths such as /metrics can be reached from a monitoring network that the team defines separately, not from the user-facing side of the gateway.
The vLLM docs recommend a reverse proxy that allowlists only the endpoints meant for users. Decide where that allowlist lives. Placing it at the LiteLLM layer controls what users can call, but it does not stop a direct call that bypasses LiteLLM. Placing a path allowlist in front of vLLM, combined with network policy, makes blocked paths fail even when a request arrives from an unexpected source. Assign an owner for this configuration and keep it in version control alongside the LiteLLM settings.
Confirm the exact path list for the vLLM version you run before writing the allowlist. Releases ship about every two weeks, and the set of routes can change between versions, so treat the allowlist as a versioned artifact. Build a test that sends a request to each blocked path from an application network and expects a denial, and a request to each allowed path with a LiteLLM-issued key that expects success. Repeat that test in every upgrade so a new route added upstream does not become reachable by accident.
How to set up the vLLM LiteLLM gateway step by step
This sequence places a LiteLLM proxy in front of self-hosted vLLM servers so that every application call passes through one controlled entry point. Each step ends with a check, so you confirm one layer works before adding the next control.
Start vLLM on an internal address
Run vllm serve bound to a private interface and set the --api-key option so the /v1 endpoints reject unauthenticated calls. If the model has no chat template, supply one with --chat-template, because the chat completions API requires it. The platform engineer who runs the model host does this work. The check is a chat completion sent with the key, which should succeed, and the same request without the key, which should be refused. Treat the key as one layer only, since the vLLM security documentation warns against relying on it alone.
Deploy the LiteLLM proxy with PostgreSQL
Deploy the LiteLLM proxy on infrastructure you control and connect it to PostgreSQL, which holds the virtual keys, budgets and spend records. Once more than one proxy instance runs, add Redis 7.0 or newer, because rate limits, router state and cache must be shared between instances. Store the master key, which must start with sk-, in a secret manager. The platform engineer deploying the proxy completes this step. The check is a successful health request to the proxy and a successful administrator sign-in to the admin UI.
Register each vLLM endpoint as a model
In the proxy configuration, add one model entry for each vLLM server. Use the hosted_vllm prefix on the model name and set the base URL to that server's internal address. Give replicas of the same model one shared public model name so the router can spread requests across them. The engineer maintaining the gateway configuration makes these entries. The check is a chat completion sent to the gateway's model name, followed by a look at the proxy logs to confirm the request reached the intended vLLM address.
Configure retries, cooldowns and fallback order
Set the retry count for failed calls, the cooldown rule that takes a deployment out of rotation after repeated failures, and a priority order so a secondary deployment takes traffic when the primary is unavailable. The LiteLLM Router offers several routing strategies, and simple-shuffle is the one the project recommends as a starting point. The gateway engineer sets these values and documents them. The check is to stop one vLLM server and send test requests: they should succeed through the fallback, and the proxy log should show the failed deployment entering cooldown.
Create teams, users and virtual keys
Create one team for each application or department, add its users, and issue a virtual key to each consumer. Set budgets at key, user or team level, add TPM and RPM limits, and restrict each key to the models it needs. Grant temporary budget increases only through a documented approval step. The gateway administrator completes this work and agrees the budget values with the budget owners. The check is a key limited to one model that is refused when it calls a different model, and a burst of requests above the RPM limit that is throttled.
Restrict vLLM access to the gateway subnet
Place the vLLM hosts on a network segment that accepts inbound traffic only from the LiteLLM proxy on the serving port. The vLLM security documentation states that --api-key does not protect /invocations, /pause, /resume, /abort_requests, /metrics or /health, and it recommends a reverse proxy that allowlists only user-facing endpoints. Network rules are how you close that gap. The network engineer applies the rules. The check is a call to /pause and to /metrics from a host outside the gateway subnet, which should be refused or dropped.
Point one test application at the gateway
Choose one application that already uses an OpenAI-compatible client and change its base URL and key to the gateway address and a virtual key. vLLM exposes OpenAI-compatible endpoints, so the change is usually limited to these two settings. The application owner runs the test with a non-production workload and a limited key. The check is that the application completes a chat request, that the usage appears against the key's budget in the proxy, and that the same key is refused on a model it is not permitted to use.
How LiteLLM teams, keys and models map to vLLM deployments
This table maps each LiteLLM object to the vLLM resource it governs and names the owner who should approve changes to it. Read it from top to bottom to follow a request from a person or application to a specific vLLM server. The main takeaway is that budgets, rate limits and model access are set on the LiteLLM side, so vLLM only receives traffic that has passed the gateway.
| LiteLLM object | Where it is configured | What it limits or routes | Who approves changes |
|---|---|---|---|
| Team or user | LiteLLM proxy database, created in the admin UI or through the API | Groups virtual keys and sets per-team or per-user budgets | Team lead or budget owner, with platform team sign-off |
| Virtual key | LiteLLM proxy database, issued to one application or service | Sets budget, TPM and RPM limits and the models the key may call | Application owner requests; platform team issues and rotates |
| Temporary budget increase | Budget settings on the key or team object | Raises a budget for a set period, with the reason recorded on the object | Budget owner and platform team, jointly |
| Model alias | Proxy config model_list entry, with the hosted_vllm prefix on the model name | The name clients call, mapped to a vLLM model | Platform team, after a model compatibility review |
| vLLM deployment | api_base field in the model_list entry, pointing to a vllm serve endpoint | One vLLM server running one model, receiving gateway-approved traffic | Platform or ML operations team |
| Router group | Several model_list entries that share one model alias | Spreads requests across replicas of the same model using the router strategy | Platform team, with the model owner consulted on load changes |
| Model restriction | Allowed models list on the virtual key | Limits which aliases a key may call | Application owner and platform team |
| Retry and fallback | LiteLLM Router settings for retries, cooldowns and priority order | Moves traffic to another deployment in the group after repeated failures | Platform team, tested in a non-production proxy first |
How routing, retries and fallback work across vLLM replicas
The LiteLLM Router decides which vLLM deployment serves each request, and it is the component that makes retries, cooldowns and failover possible. It offers five routing strategies: simple-shuffle, usage-based, latency-based, least-busy and cost-based. Simple-shuffle is the recommended default, and it is the right starting point for most self-hosted pools of identical vLLM replicas. Usage-based, latency-based and least-busy strategies try to send traffic toward the replica with the most headroom, so they are worth testing once you have load data. Cost-based routing assumes each deployment carries a price per token, which a self-hosted replica does not have in the same way, so confirm what it optimizes in your LiteLLM version before choosing it. Make the choice with a load test against your own models and prompt lengths, not from the strategy name alone.
Retries and cooldowns determine how quickly a failing replica stops receiving traffic. When a call to one deployment fails, the Router can retry the request on another deployment in the same model group. After repeated failures, the Router places the deployment in cooldown and sends it no traffic until the cooldown ends. The supplied documentation confirms the mechanism but not the exact thresholds or cooldown length, so ask the LiteLLM project or read the settings reference for your release, then record the values you use. Test the behavior directly: stop one vLLM container under steady load and check whether clients see errors, how many retries occur and how long the replica stays out of rotation. Retries also add load to the surviving replicas, so confirm they have capacity for the retried traffic.
Priority ordering defines the failover sequence. You group deployments and assign priorities so the primary vLLM replicas serve traffic first and secondary deployments serve only when the primary group cannot. Fallback to a different model changes answer quality and behavior, so write the fallback map explicitly, get sign-off from application owners and log which deployment answered each request. Session affinity pins a conversation to one deployment. It can help multi-turn workloads on the same replica, but it works against even distribution and it can send a whole conversation to a degraded replica. Test it with recorded multi-turn transcripts at realistic concurrency, measuring latency, error rates and per-replica load with affinity on and off before deciding.
The gateway cannot fix a vLLM replica that is overloaded but still healthy. Such a replica still answers health checks and accepts requests, so the Router keeps sending it traffic and latency rises for every user routed there. Latency-based and least-busy strategies reduce the problem but do not remove it. Watch the metrics that vLLM exposes at its metrics endpoint, including request counts, latency histograms and KV cache use, and alert on them directly. Capacity planning for each replica is a separate task. Memory, KV cache size, concurrency limits and maximum sequence length are sized inside each vLLM deployment, and adding a gateway does not change them. If several proxy instances share router state, LiteLLM's production guide calls for Redis 7.0 or newer, so include that dependency in the design and in the failure tests.
Closing the gaps in vLLM API key protection
A LiteLLM gateway issues the keys your users see, but vLLM still enforces its own access model underneath it. The controls below close the gaps between those two layers so that a leaked or misplaced key, or a reachable monitoring endpoint, does not give a caller a path around the gateway.
Remove direct user access to vLLM
Users and applications should reach vLLM only through the LiteLLM proxy, never through the vLLM port itself. vLLM's --api-key option covers /v1, /v2, /inference and /cohere, but the vLLM security docs warn against relying on it alone. Check the network path: vLLM should listen on a private interface or sit in a subnet that only the gateway can reach, and confirm that no load balancer or ingress exposes it directly.
Restrict /metrics and /health to monitoring
vLLM serves Prometheus metrics at /metrics, and these endpoints are not covered by --api-key. Metrics expose request counts, token throughput, latency histograms and KV cache use, which is useful to operators and sensitive to anyone else. Allow scraping and health checks only from the monitoring network or the Prometheus service account, and verify that a request from an application subnet is refused.
Allowlist endpoints at a reverse proxy
The vLLM security docs recommend a reverse proxy that forwards only the endpoints meant for users. Endpoints such as /invocations, /pause, /resume and /abort_requests are not protected by --api-key, so they must be blocked at the proxy or the network layer. Write the allowlist from the endpoints the gateway actually calls, then test each blocked path with a request from outside the gateway.
Protect LITELLM_MASTER_KEY in a secret manager
LITELLM_MASTER_KEY grants administrative control over the proxy, including issuing virtual keys and setting budgets. LiteLLM recommends keeping it in a secret manager and requires it to start with sk-. Confirm who can read it, how it is rotated and whether it appears in deployment manifests, shell history or logs. Secret manager integrations beyond the default options are part of the Enterprise license, so confirm whether your policy requires them.
Keep the vLLM key out of application configs
The vLLM --api-key value is a shared secret between the gateway and vLLM, not something application teams need. Store it only in the gateway's provider configuration, injected from a secret store at runtime. Applications should receive LiteLLM virtual keys instead. Search repositories, container images and CI variables for the vLLM key during the review, and plan a rotation that updates only the gateway.
Isolate nodes in multi-node deployments
The vLLM security docs state that communication between nodes in a multi-node deployment is insecure by default, with no authorization or encryption. Pipeline and tensor parallel traffic between nodes must therefore run on an isolated network that only cluster members can reach. Check that the Ray or multiprocessing ports are not routable from application subnets or from the gateway, and that the gateway talks only to the head endpoint.
Review who holds virtual keys
Virtual keys issued by LiteLLM carry per-key, per-user and per-team budgets, rate limits and model restrictions, so each key is effectively an access grant. Review the list periodically: remove keys for departed staff or retired projects, confirm that model restrictions match current use, and check whether any key has no budget or expiry. Virtual keys require a PostgreSQL database, so include that store in the same review.
How to test that the gateway blocks the endpoints vLLM leaves open
The test plan should prove one thing: users and applications can reach vLLM only through the LiteLLM gateway, and every request that gets through carries a valid, budgeted key. Write each case as a script with an expected result, run it from the network positions that users, applications and the monitoring system actually occupy, and keep the output with the change record. A single failed case means the gateway has failed the review, even if every other case passes. The cases below cover the controls the gateway adds and the endpoints that vLLM's own --api-key option leaves unprotected. Before writing the scripts, have your team confirm the exact paths your installed vLLM version serves, because the vLLM security documentation is the baseline for that list.
Start with the key lifecycle. A request with a valid virtual key should succeed through the proxy, using the model route that the gateway maps to your vLLM deployment. Then present a key whose expiry date has passed and confirm the proxy refuses it. Repeat the check with a key whose budget is exhausted, using a small test budget so the refusal happens in a controlled run. For rate limits, set low RPM and TPM values on a dedicated test key and send a burst above each limit. Confirm that the proxy returns a rate-limit error and that the counters recover as the documentation describes. Also confirm that a key restricted to one model cannot call another model. Record the exact error codes, because client retry logic and cost reports depend on them.
Next, test failover and direct access. Run a steady request loop through the gateway, stop one vLLM replica, and watch what the client receives. The expected result is that LiteLLM retries or falls back to another deployment, the client sees no error, and the proxy logs show the stopped deployment entering cooldown. Confirm the priority order you configured, since failover only behaves as planned when the router knows which deployment is the backup. Then, from a host outside the gateway subnet, call the vLLM port directly on the inference paths and on the paths that the --api-key option does not cover, including /invocations, /pause, /resume, /abort_requests, /health and /metrics. Each call should fail at the network layer. Verify the block with a port check from that host, not only with an HTTP client.
Finish with metrics and upgrades. vLLM serves Prometheus-format metrics at /metrics, covering request counts, token throughput, latency histograms and KV cache use. Only the monitoring system should scrape them. Confirm that the scraper's source address returns the metrics, and that application subnets, developer workstations and gateway clients receive a refusal. Also confirm that the metric names your dashboards and alerts depend on are still present, because a silent rename breaks alerting without producing any error. Keep the whole suite in version control and rerun it after every vLLM upgrade, including each new minor release, and after every LiteLLM upgrade, since router defaults, key handling and proxy behavior can change between versions. Store each run's results with the change ticket.
Common failures in a vLLM LiteLLM gateway and how to fix them
This table pairs each common symptom in a LiteLLM gateway over self-hosted vLLM with its likely cause and a fix. Read it when a request, budget, rate limit, failover or endpoint check behaves differently from what you configured. Start with the symptom you see, then confirm the cause in your own configuration before changing anything.
| Symptom | Likely cause | Fix |
|---|---|---|
| Model call returns not found | The model name lacks the hosted_vllm prefix, or the api_base points at the wrong host, port or path for the vLLM server | Set the model to hosted_vllm/<served model name>, and confirm the api_base reaches the vLLM OpenAI-compatible server from the proxy container or pod |
| Chat requests fail while completions work | The served model has no chat template, and the chat completions API needs one | Confirm the model's tokenizer provides a chat template, or start vLLM with --chat-template pointing to a template that matches the model |
| Budgets or spend limits are not enforced | The proxy has no PostgreSQL database connection, so virtual keys and budgets cannot be stored or checked | Connect the proxy to PostgreSQL, confirm virtual keys are created through the proxy, and test a key against a small budget before users receive it |
| Recent spend is missing from budget checks | Spend updates are batched to the database and have not yet been written, which is expected at scale | Check the batching interval in your configuration, allow for that delay in testing, and set budget thresholds with headroom for in-flight requests |
| Rate limits differ between proxy instances | Several proxy instances run without a shared Redis, so each keeps its own counters | Deploy Redis 7.0 or newer, point every proxy instance at it, and verify that limits fire at the same threshold regardless of which instance receives the request |
| Redis is present but limits still drift | The Redis version is below 7.0 or instances connect to different Redis endpoints | Check the Redis server version against the 7.0 minimum, and confirm all proxy instances share one configuration for the Redis host and credentials |
| Failover does not happen when vLLM deployment fails | Deployments lack priority ordering, or cooldown and retry settings were never configured in the router | Set explicit priorities for each deployment, define retry and cooldown values for the router, and test failover by stopping one vLLM backend |
| Users reach /metrics, /pause or /resume on vLLM | vLLM's --api-key option does not cover these endpoints, and the network path to the vLLM server is open | Place a reverse proxy in front of vLLM that allowlists only the user-facing endpoints, restrict the vLLM port to the gateway network, and test each blocked path from outside |
Questions buyers ask before building a vLLM LiteLLM gateway
How much does it cost to run vLLM behind a LiteLLM gateway?
The core software has no license fee. vLLM is licensed under Apache-2.0, and LiteLLM is MIT licensed outside its enterprise/ directory. The cost comes from four places:
- Accelerator capacity: GPUs or other accelerators for the model replicas, usually the largest recurring cost.
- Supporting services: PostgreSQL, which virtual keys require, and Redis 7.0 or newer once more than one proxy instance runs.
- People: the staff who operate, patch and monitor the stack.
- Enterprise license, if needed: SSO is free for up to 5 users from v1.76.0. Beyond that, an Enterprise license is required.
Identify one-time costs (design, build, integration) separately from recurring ones (capacity, services, operations, upgrades). Ask for a quote that lists each component and who pays for it. A fixed-scope quote follows from the written scope.
Can our own team build a LiteLLM gateway in front of vLLM?
Yes, if your team already runs containers or Kubernetes, PostgreSQL and identity integration. The vLLM and LiteLLM documentation cover the basic setup, including the hosted_vllm model prefix and virtual keys. The harder parts are the key approval workflow, team budgets, SSO group mapping, network isolation between users and model nodes, monitoring and upgrades. Check whether your team has these skills, and whether it can keep the work moving alongside its existing duties. LiteLLM's production guidance recommends one Uvicorn worker per pod, horizontal scaling and storing LITELLM_MASTER_KEY in a secret manager. A partner can implement the gateway in your infrastructure, hand over documentation, and offer ongoing support as a retainer if you prefer not to carry it alone.
How long does a vLLM LiteLLM gateway project take?
The duration depends on scope, not on the gateway software itself. The main drivers are the number of models and replicas, identity integration, network segmentation between user traffic and vLLM nodes, and the approval workflow for keys. Each additional team, budget policy or routing rule adds design and testing work. Ask for a timeline tied to written milestones: scope agreement, environment access, build, identity integration, testing and handover. Your own change windows and the time your identity and network teams need to respond will also affect the schedule. DeployOpen does not publish durations. Timelines are agreed in the written scope before work starts.
What does our team need to provide for a gateway engagement?
Access, decisions and a few running services. Expect to provide:
- Access to the cloud accounts, data centers or air-gapped network where the gateway will run
- GPU nodes running vLLM, or a clear plan for them
- PostgreSQL and Redis services, or permission to deploy them
- Admin access to your identity provider (Google, Microsoft Entra ID, Okta or generic OIDC)
- Network diagrams, firewall rules and the list of endpoints users may call
- The model list, chat templates and the teams that will receive keys
- Named owners for budgets, key approvals and revocations
- A secret manager for LITELLM_MASTER_KEY and provider credentials
Missing items usually delay the work more than the build itself, so confirm them in the scope before the first sprint.
What increases the effort of an LLM gateway implementation?
Scope size and control requirements are the main drivers. More models and replicas mean more routing rules, health checks and capacity tests. Identity integration adds work when SSO groups must map to teams and budgets, and JWT authentication requires an Enterprise license. Network segmentation matters because vLLM's security documentation states that node-to-node communication in multi-node deployments is insecure by default and must sit on an isolated network. The key approval workflow adds design work for who may request keys, how budgets are assigned, how keys are rotated and how access is removed. Fallback and routing policy across deployments and providers adds test cases. Monitoring through vLLM's /metrics endpoint and LiteLLM logs adds dashboard and alert work.
Does vLLM's own API key protection cover all endpoints?
No. The --api-key option protects only some endpoints. It covers /v1, /v2, /inference and /cohere. It does not cover /invocations, /pause, /resume, /abort_requests, /metrics or /health. The vLLM security documentation warns against relying on the key alone and recommends a reverse proxy that allowlists only the endpoints meant for users. A LiteLLM gateway can serve as that control point, but only if the network path to vLLM is closed to users and the allowlist is tested. Ask your team to confirm which endpoints are reachable from each user network before go-live, and to check the behavior after every vLLM upgrade.
How do we verify the gateway blocks unapproved access?
Test from the network position your users and attackers would have. Use keys from each team and confirm that model restrictions hold. Confirm that the budget, RPM and TPM limits trigger as designed. Call the vLLM endpoints that are not meant for users, including /metrics, /pause and /abort_requests, and confirm they are unreachable. Check that unauthorized requests are logged and that the logs reach your monitoring. Repeat these checks after upgrades to vLLM or LiteLLM, and after changes to the identity provider or network rules. DeployOpen runs application and API security testing, and the results and retest plan can be included in a fixed-scope engagement if they are agreed in advance.
How DeployOpen works on this
DeployOpen plans, builds and supports LiteLLM as the gateway in front of self-hosted vLLM, inside cloud accounts, data centers or air-gapped networks you control. Work starts from a written scope that names the vLLM endpoints users may reach, the keys, budgets and routes to configure, and the operations you keep.
How we scope
- The written scope lists which vLLM endpoints users reach through LiteLLM and which stay private.
- Teams, virtual keys, per-key and per-team budgets, TPM and RPM limits are defined before any configuration starts.
- Model routes, fallback order and the PostgreSQL and Redis dependencies are written into the scope before the quote is issued.
How we build
- Deploy LiteLLM with PostgreSQL for virtual keys and Redis once more than one proxy instance runs.
- Configure the hosted_vllm prefix, retries, cooldowns and priority failover across the vLLM deployments you run.
- Close the gap in vLLM's --api-key option with a reverse proxy that allowlists only user-facing endpoints.
How we hand over
- Test each route with the models you serve, confirming key limits, budget blocks and fallback behavior before go-live.
- Document the endpoint allowlist, key issuance steps, secret locations and the LITELLM_MASTER_KEY handling.
- Walk your operators through the admin UI, spend reports and the /metrics checks they will run.
How we support
- Available retainers can cover upgrades when LiteLLM and vLLM release new versions, tested in a staging copy first.
- Ongoing work can include reviewing LiteLLM releases, vLLM release notes and changes to key and budget policy.
- Confirm support response terms in the written retainer before you sign it.

