Open WebUI with vLLM

Connect Open WebUI to models served by vLLM on your own GPU servers through the OpenAI-compatible API, with timeouts, security and LiteLLM decisions planned before users arrive.

On this page

How Open WebUI with vLLM works on your own GPU servers

A team that wants one chat interface over models it hosts ends up running two systems: Open WebUI for users and an inference server behind it. Open WebUI connects to vLLM as an OpenAI-compatible provider, so the work covers serving the model, connecting the two services, identity, security and testing. The integration is simple to describe but has several places where a misconfiguration can expose a model endpoint or leave users waiting with no clear error. The vLLM server, started with vllm serve, exposes OpenAI-style endpoints including /v1/completions, /v1/chat/completions, /v1/responses and /v1/embeddings. Open WebUI sends requests to those endpoints using the base URL and key you configure, the same way it would reach a hosted OpenAI-compatible service. Your team therefore decides which model names, endpoints and keys Open WebUI sees, and vLLM decides what it serves on the GPU hardware.

vLLM is licensed under Apache-2.0 and has no paid edition, so the software itself carries no license fee. Cost comes from three places: accelerator capacity, the surrounding infrastructure (servers, storage, networking, power or cloud charges) and the people who build and operate the stack. Accelerator capacity is usually the largest line and can be purchased as hardware (a one-time cost plus support and power that recur) or rented from a cloud provider (a recurring cost). Implementation is one-time work, while patching, upgrades and monitoring recur. When you request a quote, ask the partner to separate these components. A useful scope names the hardware or cloud instances, the model sizes to be served, the expected number of concurrent users, the hours of operator support included after go-live, and who pays for model downloads and storage. A quote that does not show these items cannot be compared with an internal estimate.

vLLM ships new minor releases about every two weeks. The releases listed for 2026 include v0.28.0 on August 26, v0.29.0 on September 9, v0.30.0 on September 22 and v0.31.0 on October 5. Pin the exact vLLM version in your deployment manifests and do not track the latest tag. Before you move to a newer minor release, read its release notes and confirm that your model, quantization and accelerator driver combination is still supported. Hardware support also shapes the design. vLLM runs on NVIDIA CUDA, AMD ROCm and Intel XPU GPUs, along with CPU platforms and some third-party accelerator plugins. Confirm that your chosen accelerator, driver and model combination is listed as supported for the exact vLLM version you pin. If one node cannot hold the model, vLLM uses tensor parallelism within a node and pipeline parallelism across nodes, and multi-node runs depend on Ray or vLLM's own multiprocessing backend. Multi-node traffic between nodes is not encrypted or authorized by default, so those nodes must sit on an isolated network.

Before any build starts, write down the inputs the integration depends on: the model name vLLM will serve, the base URL Open WebUI will call, the key used between them, the users who may reach each model and the network path between the two services. Confirm the accelerator and driver versions on the target servers, and test a model load on that exact hardware before promising users a date. Model loading can take long enough that the first requests time out, so plan the timeout values in Open WebUI and the reverse proxy in front of vLLM together. Keep the vLLM server off the user network. Its --api-key option protects only some paths, and the vLLM security documentation recommends a reverse proxy that allowlists only the endpoints meant for users. Confirm this design in your environment, and test that metrics and health endpoints are not reachable from places they should not be.

What you need before connecting Open WebUI to vLLM

Six inputs decide whether the connection works on the first attempt and stays stable once users arrive. Confirm the accelerator, model and release choices first, because they limit which vLLM version and which Open WebUI deployment shape you can use.

Accelerator and server platform

vLLM runs on NVIDIA CUDA, AMD ROCm and Intel XPU GPUs, and on CPU platforms including x86, ARM AArch64, Apple silicon and IBM Z. CPU hosts are usually suited to smaller models, so match the platform to the models you plan to serve. Ask your accelerator vendor to confirm driver, runtime and vLLM compatibility for your exact hardware. Check each model card for memory requirements, because this guide does not give sizing figures.

Model weights and licenses

Confirm that each model has weights you can download or have been provided, and that its license permits your intended internal use and any redistribution. Model licenses are separate from the vLLM license, which is Apache-2.0 according to its GitHub repository. Record the license, the exact revision and the access terms in your model register before the first download, so that a later upgrade or a new user group does not change what is allowed.

Open WebUI release and install method

Use a supported Open WebUI release. The latest release in this guide is v0.12.3, published on GitHub on October 16, 2026, so confirm the current release on the project's releases page before you pin a version. Choose one official install method: Docker, Docker Compose, Helm on Kubernetes, or pip install open-webui followed by open-webui serve. Releases from v0.6.6 onward use the Open WebUI License, which restricts altering branding above 50 users in a rolling 30-day period, so review it before rollout.

Network path to the vLLM endpoint

Open WebUI must reach the vLLM OpenAI-compatible server on the port you publish, and every firewall, security group and proxy between them must allow that path. The vLLM --api-key option does not protect /metrics, /health or /invocations, and the project advises against relying on it alone. Plan a reverse proxy that exposes only the endpoints users need, such as /v1/chat/completions, and keep metrics on a private network. Test the path from the Open WebUI container, not only from an administrator workstation.

vLLM release and version pin

vLLM ships new minor releases about every two weeks, including v0.28.0 on August 26, v0.29.0 on September 9, v0.30.0 on September 22 and v0.31.0 on October 5, 2026. Pin one vLLM version per environment and record the flags used with vllm serve, because a model that loads on one minor release may behave differently on the next. After each planned upgrade, test the connection from Open WebUI, including model loading time, which is a common source of timeouts.

Shared state for multiple replicas

A single Open WebUI instance can use SQLite only when the database file sits on locally attached SSD or NVMe storage. Several replicas need PostgreSQL, Redis for sessions, websocket connections and application state, and shared file storage so uploads and knowledge stay reachable from every replica. Without Redis, signing out does not revoke tokens, which remain valid until they expire, by default after 4 weeks. Replace the default ChromaDB with an external vector database before running several workers or replicas.

When to put LiteLLM between Open WebUI and vLLM

Connect Open WebUI directly to vLLM when one vLLM server serves one team and nobody needs per-user budgets. In that setup, Open WebUI talks to the OpenAI-compatible endpoints that vLLM exposes, and there is one component to deploy, patch and monitor. Add LiteLLM only when a specific requirement appears, because it adds a database, a cache and a second service to operate. Before deciding, write down which of the triggers below apply today and which are likely within the next year.

LiteLLM earns its place in four situations. The first is several vLLM backends, or a mix of vLLM and hosted providers, that you want to expose behind one interface. The second is spending control: per-key, per-user or per-team budgets, TPM and RPM limits, temporary budget increases, and keys restricted to specific models. The third is routing, including retries, cooldowns after repeated failures and priority ordering for failover. The fourth is audit and observability across all model traffic. If none of these apply, the gateway is overhead. Confirm the exact control you need, such as whether a budget must be enforced per user or per team, because that decides the key design.

The gateway adds recurring infrastructure. LiteLLM's production guidance names PostgreSQL as the primary supported database, and virtual keys require it. Once more than one proxy instance runs, Redis 7.0 or newer is required for shared rate limits, router state and cache. On Kubernetes, run one Uvicorn worker per pod and scale horizontally by adding pods. LiteLLM suggests 1 vCPU and 4 GiB of memory per worker as a starting point, so size each pod from your expected concurrency and then measure. Your cloud or data center bills for these resources, while setup and operations are paid either to your own team or to a partner under a written scope. In a quote, ask for each database, cache and pod to be listed separately, with backup and upgrade work named.

Licensing and SSO also affect the decision. LiteLLM is MIT-licensed outside its enterprise/ directory, which is covered by a separate license file, so confirm which files your build and support terms touch. For the admin UI, SSO is free for up to 5 users from v1.76.0, and an Enterprise license is needed beyond that. Check that threshold against your user count and your identity provider before you commit. The current release listed on LiteLLM's GitHub releases page is v1.105.1, published October 14, 2026, so confirm which version your deployment will pin and how it will be upgraded.

Whichever path you choose, keep vLLM off the user network. The vLLM --api-key option does not protect every endpoint, including /metrics and /health, and the vLLM security documentation recommends a reverse proxy that allowlists only the endpoints users need. With LiteLLM in place, the gateway becomes the single route users reach, so vLLM should accept traffic only from the gateway. Test this by calling vLLM directly from a user network segment and confirming that the request fails. Record the result in your change log so an auditor or security engineer can see the control.

How to configure the vLLM connection step by step

This sequence connects a vLLM server on your GPU host to Open WebUI through the OpenAI-compatible API, and it checks each link before the next one is built. The result is a tested path from the browser to the model that your team can reproduce, troubleshoot and repeat after upgrades. Confirm exact setting names in the Open WebUI features documentation for your release before copying them from older guides.

  1. Start vLLM with vllm serve on the GPU host

    A platform or ML engineer on the GPU host launches the model with vllm serve, passing the model identifier and an API key so the /v1 endpoints require authorization from the start. Model weights are read from local storage or downloaded at this point, and the first start can take a while as the model loads into GPU memory. Watch the console until the log shows the API server is listening and the model has finished loading. This step is done when the process keeps running without out-of-memory errors and the log reports the server is ready. If loading fails, check that the model fits in available GPU memory and that the model name matches the one you intend to serve. Confirm the exact flags for your vLLM release in the vLLM online serving documentation.

  2. Confirm the model loads and reports ready

    Run a health request and read the startup log on the GPU host itself before testing from anywhere else. Large models can take long enough to load that a client connecting too early will time out, so wait until the log confirms the model is fully loaded. Check GPU memory use with your accelerator vendor's monitoring tool to confirm the weights are resident on the device. The check passes when the health endpoint returns a success response from the GPU host and GPU memory shows the model in use. Record the measured load time, because you will need it when you set client timeouts in Open WebUI. Note that the API key does not protect the health or metrics endpoints, so network controls must cover them.

  3. Check the models endpoint from Open WebUI

    From the machine that runs Open WebUI, not from the GPU host, send a request to the /v1/models endpoint using the same key you set on the server. The response should list the model identifier you started in the first step. This check proves that the network path, port and key work from the place where the application will call the server. An authorization error points to a key mismatch, a connection failure points to firewall rules or the address the server binds to, and an empty or unexpected list points to the wrong model name or the wrong server. Do not continue until the identifier in the response matches exactly the name you will enter in Open WebUI.

  4. Check chat completions from the same host

    Send a small request to /v1/chat/completions from the Open WebUI host, using the model identifier, one user message and a low maximum output length. Open WebUI sends chat traffic to this endpoint, so a valid response with generated text confirms the path that matters most. If your team also uses the completions endpoint, test it the same way. Expect the first request to be slower than later ones while the server warms up. The check passes when the response contains a choices array with generated content and no error field. Save the request and the response in your runbook so you can rerun the same check after upgrading vLLM or Open WebUI.

  5. Add the connection in Open WebUI

    An administrator opens the admin settings in Open WebUI and adds an OpenAI-compatible connection. Enter the base URL for vLLM, or for LiteLLM if you place it between the two, and the key you set on the server. Base URLs for OpenAI-compatible servers typically include the /v1 path, so confirm the expected form against the features documentation for your release. Use the field names shown in that documentation, because older guides use different labels. Save the connection, then open the model selector. The check passes when the model you started appears in the list and the connection shows as reachable. If you route through LiteLLM, the LiteLLM key takes the place of the vLLM key in this field.

  6. Restrict model visibility to matching groups

    An administrator uses Open WebUI's role-based access control to limit which groups can see and use each model served through vLLM. A common starting point is one group for pilot users and a separate group for administrators who test new models before wider release. Open WebUI supports groups and per-resource permissions, but the exact location of the model access settings varies by release, so confirm it in the features documentation first. The check passes when a user outside the pilot group cannot see the model and a pilot user can. Repeat the check with a test account in each group you created, and record the group names and their permissions in your access documentation.

  7. Send a test prompt and read logs

    Sign in as a pilot user, select the model and send a short prompt with a known answer. Then find the matching request entry in the vLLM console or service log and check the status code and generation timing. A matching entry confirms that the request reached vLLM through the connection you configured. Compare the answer in the browser with what the log records, and look for repeated retries or errors that the interface may hide. For ongoing visibility, the /metrics endpoint exposes request counts, token throughput and latency histograms in Prometheus format, which your monitoring team can scrape. Record the test result, the timestamp and the log excerpt in your runbook.

  8. Optionally place a reverse proxy in front

    If vLLM is reachable beyond the Open WebUI host, a network or security engineer can add a reverse proxy that allowlists only the endpoints users need, such as /v1/models and /v1/chat/completions. The vLLM security documentation recommends this approach because the API key option does not protect endpoints such as /metrics, /health, /pause, /resume and /abort_requests. Configure the proxy to deny all other paths, then test from a host outside the allowed network that blocked paths return a denial and allowed paths still respond. In a multi-node deployment, also confirm that traffic between nodes sits on an isolated network. Document the allowlist so future upgrades do not reopen paths without review.

How Open WebUI users, models and keys map to vLLM and LiteLLM

This table maps the main concepts across Open WebUI, vLLM and LiteLLM so you can see where each identity, model name and credential is defined. Read each row across, then confirm the vLLM and LiteLLM details against the versions you deploy. The main takeaway is that vLLM has no user model, so access control sits at the proxy or in Open WebUI.

ConceptOpen WebUIvLLMLiteLLM (when used)
Users and groupsAccounts, groups, roles and per-resource permissions; SSO and SCIM apply hereNo user or group model; access is decided by endpoint and keyUsers map to virtual keys; teams carry budgets and model restrictions
Identity provisioningOIDC or LDAP sign-in and SCIM 2.0 provisioning manage these accounts onlyNot applicable; SSO and SCIM do not reach vLLMAdmin UI SSO is free for up to 5 users from v1.76.0; more users need Enterprise
Model namesModel list shows the names each connection returnsModel name exposed through the OpenAI-compatible API; confirm it in your versionModel group name the proxy maps to one or more backends
CredentialsConnection key entered for each OpenAI-compatible connectionThe --api-key value is checked on /v1 endpoints onlyVirtual key issued per user or team, restricted to listed models
Exposed endpointsChat and model list; enable embeddings or audio only if your team uses themChat, completions and responses; embeddings and audio routes also existExpose only the routes users need through a proxy allowlist
Budgets and rate limitsNot enforced by vLLM; plan limits at the proxy or in Open WebUINo per-user metering; request and token metrics are exposed at /metricsPer-key, per-user and per-team budgets and TPM or RPM limits; needs PostgreSQL

Why requests time out while a model is loading

Requests fail during model loading because a vLLM server takes time to move model weights onto its accelerators after it starts or restarts, and it does not accept inference traffic until that work finishes. Open WebUI does not know the difference. It sees a configured OpenAI-compatible connection, tries to send a chat request, and waits. If the server is still loading, the request stalls or is refused, and the user sees a timeout or an error in the chat. The failure is a timing problem, not a fault in the model, so the first step is to confirm which state the server is in before changing anything else.

From the Open WebUI side, a loading server usually looks like one of three things: a connection error when the port is not yet listening, a read timeout when the request is accepted but no tokens arrive in time, or a model that appears in the model list while chats to it hang. The model list can be misleading because Open WebUI populates it from the connection's model endpoint, so a model can show as available before it can generate. Check the vLLM startup log for lines reporting weight loading and the point where the API server begins serving, then query the /health endpoint on the same host and port that Open WebUI uses. If /health does not return success, the server is still starting, and no amount of retrying from Open WebUI will fix that. If /health succeeds and chats still time out, look at the request path, GPU memory pressure and queueing instead.

Fix the problem in this order. First, wait for readiness before adding a model to users' lists. Your startup script or orchestrator should poll /health and only then register the model connection or enable the model for groups in Open WebUI. This removes most of the errors because users never see a model that cannot answer. Second, raise client timeouts where the connection layer allows it. Check whether the Open WebUI connection settings for your version expose a request timeout, and confirm the same for any reverse proxy in front of both services, since a proxy with a shorter read timeout will cut requests before vLLM responds. Treat the longer timeout as a safety margin for cold starts, not a substitute for readiness checks.

Third, keep models warm on long-lived servers. If your deployment allows it, avoid restarting vLLM for routine updates to Open WebUI, and plan maintenance windows so that a freshly restarted model is loaded and checked before users return. Measure load time on your own hardware and with your own model, including the weight size, quantization, tensor parallel layout and the time needed for the first real request, because no load-time figures apply to your setup. Record those measurements so the timeout and warm-up decisions rest on your data. Fourth, when a second backend exists, put LiteLLM between Open WebUI and the model servers. Its router supports retries and cooldowns after repeated failures, and priority ordering can send traffic to a healthy backend while one restarts. Confirm the retry and cooldown behavior for your chosen LiteLLM release and routing strategy in a test before relying on it for users.

Securing the vLLM endpoint behind Open WebUI

The vLLM server that Open WebUI calls was built for trusted networks, so its built-in API key covers only part of its surface. The controls below work together: a proxy that exposes only user routes, isolated node traffic, a locked-down metrics path, encrypted hops, a managed secret for any LiteLLM layer, and a plan for token lifetime. Confirm each control with your security team before go-live.

Allowlist endpoints at a reverse proxy

The --api-key option protects the /v1, /v2, /inference and /cohere routes, but not /invocations, /pause, /resume, /abort_requests, /metrics or /health. The vLLM security documentation advises against relying on the key alone and recommends a reverse proxy that forwards only the endpoints users need, such as the chat and model routes Open WebUI calls. Deny every other path by default. Test the allowlist from outside the trusted network, where every path outside the list should return a refusal.

Isolate multi-node vLLM traffic

When vLLM spans several nodes using pipeline parallelism, communication between nodes has no authorization or encryption by default, according to the vLLM security documentation. Place all nodes on a dedicated network segment that users, Open WebUI and the general office LAN cannot reach directly. Open WebUI should reach only the single endpoint exposed through the proxy. Ask your network team which ports the Ray or multiprocessing backend uses, then verify the segment with a scan from a host outside it.

Restrict the metrics endpoint

vLLM serves Prometheus-format metrics at /metrics, including request counts, token throughput, latency histograms and KV cache use. These figures reveal capacity and usage patterns, so they should reach only the monitoring system that scrapes them. Allow the Prometheus server's address at the proxy and block /metrics for every user-facing client. Confirm the scrape source with your monitoring team, and confirm which address your load balancer uses for /health.

Keep the LiteLLM master key in a secret manager

If LiteLLM sits between Open WebUI and vLLM, LITELLM_MASTER_KEY is the administrative credential for the proxy. LiteLLM's production guidance says it must begin with sk- and be stored in a secret manager, so keep it out of compose files, Helm values and shell history. Issue Open WebUI its own virtual key, limited to the models it needs. Check with your team whether the secret manager integrations you plan are included in your LiteLLM license.

Encrypt every hop that carries prompts and keys

Prompts, responses and API keys travel from the browser to Open WebUI, from Open WebUI to the proxy, from the proxy to vLLM, and from LiteLLM to model providers if it is used. Terminate TLS on each of these hops, including internal calls, and not only at the public edge. Certificates from your internal certificate authority are common here, so confirm that the Open WebUI container trusts that authority. Verify each hop with a test connection that fails when the certificate is invalid.

Plan token lifetime without Redis

The Open WebUI scaling documentation states that without Redis, signing out does not revoke tokens. They remain valid until they expire, by default after 4 weeks. Multi-replica deployments already need Redis for shared session state, but single-instance installs can inherit this gap without notice. Confirm with your security team which Open WebUI setting controls token lifetime in your version, and decide how quickly a departing user's access must end, then disable that user at the identity provider.

Common failures when Open WebUI cannot reach vLLM

This table lists the failures most often seen when Open WebUI cannot reach a vLLM server, with the likely cause and first fix for each. Start from the symptom you see in the chat interface and work across the row. Most failures come down to timeouts, key or route mismatches, exposed endpoints, or missing shared state when several Open WebUI replicas run.

FailureLikely causeFix
Model listed but requests time outThe model is still loading into GPU memory, or the client timeout is shorter than the first responseWait for the vLLM log to show the server ready, send a test request with curl, then raise the timeout in the connection or proxy settings.
401 or 403 responsesThe key in Open WebUI does not match the vLLM --api-key value, or the proxy blocks a required /v1 routeCompare the key on both sides, then test /v1/models and /v1/chat/completions with curl through the same path Open WebUI uses.
Model missing from Open WebUIThe served model name differs from the configured name, or the connection was never savedCopy the model ID that /v1/models reports, enter it exactly, save the connection and refresh the model list.
/metrics or /health reachable from usersThe reverse proxy has no allowlist, and --api-key does not protect these endpointsAllowlist only the endpoints users need, block /metrics and /health at the proxy and scrape metrics from inside the network.
Slow responses under concurrencyOne vLLM server is saturated by parallel requestsCheck request queue and KV cache metrics, add serving capacity, or place LiteLLM in front to route across servers with retries and cooldowns.
Replicas show different chats or lost sessionsRedis and shared storage are missing, and SQLite is used across replicasMove to PostgreSQL, add Redis for sessions and websockets, share file storage and use an external vector database.
Cold restarts after a vLLM upgradeThe new version changed startup behavior, defaults or model loading timePin the vLLM version, read the release notes for the target version and test the upgrade in a staging environment first.

How to test the connection before users rely on it

Run this verification plan before any user receives access. Its purpose is to show that the model server answers the way Open WebUI expects, that each group reaches only the models it should, and that nothing outside your trusted network can reach the server's internal endpoints. Point every test at the same base URL that Open WebUI uses, whether that is vLLM directly or the LiteLLM proxy in front of it, and use the same API key scope. Results from a path users never take prove little. Record each run with its date, the vLLM version, the model name, the serving flags and the Open WebUI version, so that a later failure can be traced to a specific change.

Start with functional tests. Send a non-streaming chat completion to /v1/chat/completions with a short prompt and confirm a well-formed response that includes token usage. Repeat the request with streaming enabled and confirm that tokens arrive incrementally, because a reverse proxy that buffers the stream makes Open WebUI appear to hang. If you enable embeddings for retrieval, call /v1/embeddings with the embedding model and check the vector length against what your vector database expects. Then send a request to every model that each user group is allowed to use, since group permissions fail per model. Sign in with a restricted test account and confirm that the model list shows only the models its group was granted.

Next, run a load-up test that begins with a cold server. Stop the vLLM process, start it again, and send traffic immediately so you observe what users experience while weights load. Record the time to first successful response and whether any Open WebUI or proxy timeout fires before it. Then raise concurrency in steps, holding each step long enough to reach a stable reading, and watch for queueing, rising time to first token and failed requests. Use the Prometheus metrics that vLLM exposes at /metrics to confirm what the clients report. Request counts, token throughput, latency histograms and KV cache usage show whether a slowdown comes from a saturated cache or from requests waiting for a free slot. Set the ramp steps, test duration and pass thresholds in the scope document.

If LiteLLM routes requests across two vLLM backends, test failover deliberately. With traffic running, stop one backend and confirm that requests continue to succeed through the second and that the failed deployment is taken out of rotation. The LiteLLM routing documentation describes retries, cooldowns after repeated failures and priority ordering for failover, so confirm which of these your configuration uses and check what you observe against that configuration. Count the user requests that fail during the switch and note whether Open WebUI shows an error or retries on its own. Restore the backend and confirm that it returns to rotation and that its metrics resume. Also test a long conversation that spans the failover, because session affinity, if configured, can keep a user pinned to a backend that is down.

Finish with a security test from outside the trusted network. From a host with no route into the internal network, try to reach the vLLM port directly and the user-facing address through any proxy. The vLLM security documentation states that --api-key protects the /v1, /v2, /inference and /cohere paths but not /invocations, /pause, /resume, /abort_requests, /metrics or /health. It recommends a reverse proxy that allowlists only the endpoints meant for users. Confirm that the internal endpoints return no response from outside, and that the allowed /v1 paths reject requests without the key. Repeat this check after every upgrade or proxy change, because a new route or an edited rule can reopen an endpoint. Write the acceptance criteria and test volumes into the scope document before testing begins, so that the result is a recorded decision.

Questions buyers ask before connecting Open WebUI to vLLM

What drives the cost of connecting Open WebUI to vLLM?

vLLM has no paid edition, so the cost comes from four places: GPU or other accelerator capacity, the infrastructure around it, implementation work, and the people who operate the stack afterward. Accelerator capacity is usually the largest recurring line, whether you buy hardware or rent it, and it grows with model size and the number of concurrent users. Implementation is mostly one-time work: sizing, model validation, identity wiring, network controls and acceptance testing. Operations recur, because vLLM ships new minor releases about every two weeks and each upgrade needs regression testing. Ask any quote to split hardware, one-time hours by role, and recurring support so you can compare it with your own estimate.

Can our own team connect Open WebUI to vLLM without a partner?

Yes, if your team already operates GPU servers, has identity skills and the scope is written down. The GPU skills include driver and container runtime management, model serving and capacity planning. The identity skills include OIDC or LDAP configuration, group mapping and access reviews. Writing the scope means naming the models, user groups, endpoints that users may reach, SSO requirements, logging needs and acceptance tests. Teams most often miss two things: vLLM's --api-key option does not protect every endpoint, so a reverse proxy with an allowlist is needed, and multi-replica Open WebUI needs shared state services that a single-server install does not.

What do we need to provide before the vLLM and Open WebUI work starts?

You need to provide access to the GPU hosts, or to the cloud account or data center where they run, along with a staging environment for testing. Model approval comes next: confirm which models may be served, their licenses and what data they may process. Identity and network contacts are needed for IdP settings, firewall rules, DNS and certificates. You also need a decision on whether LiteLLM sits in front of vLLM, and named owners who can sign off on the scope, the acceptance tests and the handover. Missing any of these usually moves the schedule more than the technical work does.

How long does it take to connect Open WebUI to vLLM?

Duration depends on the scope. The main drivers are the number of models, whether the work runs on one GPU node or several, how many identity and network changes are needed, and how quickly your approvals return. A multi-node vLLM deployment adds parallelism and networking work that a single node does not. DeployOpen agrees timelines in writing before work starts, as part of a fixed-scope proposal that lists deliverables and milestones. Ask for milestones covering hardware readiness, model load testing, SSO testing and handover, so you can see where time is spent and which of your own dependencies could delay it.

Should we put LiteLLM between Open WebUI and vLLM?

Add LiteLLM when you need controls that a direct connection cannot give you. These include virtual keys with per-user, per-key or per-team budgets and rate limits, routing across several vLLM servers or other providers, failover with cooldowns, and central request logging. A single model on one server with a small group of users often does not need a gateway. LiteLLM virtual keys require a PostgreSQL database, and running more than one proxy instance requires Redis 7.0 or newer. SSO in the LiteLLM admin UI is free for up to 5 users from v1.76.0, and an Enterprise license is needed beyond that. Decide this before the build, because it changes the database, secrets and network design.

Does the Open WebUI license affect our company deployment?

It can. Open WebUI code from v0.6.6 onward is distributed under the Open WebUI License, which includes a branding protection clause. The clause forbids altering or removing Open WebUI branding in deployments that exceed 50 users in any rolling 30-day period, unless you hold an enterprise license or written contributor permission. Code through v0.6.5 remains BSD-3-Clause. Open WebUI's enterprise licenses allow white-labeling, and pricing is not published, so you quote it by contacting enterprise sales with your expected seat count. Confirm the position with your legal or licensing advisers before you plan any branding changes.

What goes wrong when vLLM serves Open WebUI in production?

The most common problem is a timeout during model loading. After a restart, the first request can wait while weights load into GPU memory, so the timeout in Open WebUI or in a proxy in front of it may expire before the model is ready. Check load time on your own hardware and set timeouts from that measurement. The second problem is exposed endpoints: vLLM's --api-key option does not cover endpoints such as /metrics or /health, so allowlist only the routes users need. Third, Open WebUI replicas that share sessions need Redis and PostgreSQL, and without Redis, signing out does not revoke tokens until they expire. Test each of these in staging.

How DeployOpen works on this

DeployOpen plans and builds the Open WebUI and vLLM connection inside infrastructure you control, from GPU servers to the user-facing interface. Engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts, and documentation is part of each deliverable. Ongoing support, upgrades and continuous testing are available as retainers.

How we scope

  • The written scope names the vLLM serving host, GPU capacity and the model list to be validated.
  • It defines which users reach Open WebUI and which model endpoints each group may call.
  • Decisions on direct connection or a LiteLLM layer are recorded before any build starts.

How we build

  • Deploy vLLM on GPU servers you control and confirm the OpenAI-compatible endpoints respond for each model.
  • Point Open WebUI at the vLLM endpoint, size timeouts for model loading, and test cold-start requests.
  • Protect the vLLM endpoints with a reverse proxy that allowlists only the routes users need.

How we hand over

  • Handover covers configuration records, environment variables, model inventory and the endpoint allowlist.
  • Runbooks explain vLLM upgrades, which release line you run, and how to test a model change before rollout.
  • Metrics exposure at /metrics is documented, with a Prometheus scrape plan for request and latency tracking.

How we support

  • Ongoing support covers vLLM and Open WebUI upgrades, tested against your model list before production.
  • Retainers can include continuous testing of the Open WebUI and vLLM connection and its exposed routes.
  • Multi-replica Open WebUI needs PostgreSQL, Redis and shared file storage, and support covers those services too.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.