vLLM with Open WebUI

Learn how to give staff a self-hosted chat interface by pointing Open WebUI at vLLM's OpenAI-compatible endpoint, with identity, network controls and capacity planning covered before go-live.

On this page

How to run vLLM with Open WebUI for staff chat

Open WebUI connects to vLLM's OpenAI-compatible chat endpoint, and the work is the connection, the identity layer and the capacity plan. Staff often start with a public chat service because sign-up takes minutes. If your policy says prompts and documents stay inside your own boundary, the self-hosted route needs the same planning as any internal application. This integration runs in your own cloud accounts, data center or air-gapped network. DeployOpen plans, builds and hardens it there, and your team keeps control of the models, the accounts and the data.

Start with the model server. The vLLM server started with vllm serve exposes /v1/chat/completions, and Open WebUI can treat that endpoint as an OpenAI-compatible provider. You enter the base URL and the key the server expects. Confirm that each model you plan to offer has a chat template. If it does not, the chat completions API will not serve it until you supply one with --chat-template. Decide which model names staff will select and confirm they match what the server reports. Then send one test chat request from the Open WebUI host before any user signs in. Failures at this stage usually come from network routing, the template or an authentication mismatch, and they are cheaper to fix now than after launch.

The identity layer covers two sign-in paths: staff entering Open WebUI, and any program that reaches vLLM directly. Open WebUI documents single sign-on through OIDC and LDAP, SCIM 2.0 provisioning, groups with role-based access control, API keys and authenticator-app MFA. Decide which directory is authoritative and how groups map to the models each team may use. On the vLLM side, the --api-key option protects the /v1 routes, but the security documentation advises against relying on it alone. It does not cover /metrics, /health, /pause, /resume, /abort_requests or /invocations. Place a reverse proxy in front of the server that allowlists only the paths users need, and keep the server on a network segment that staff cannot reach directly. Also decide who may create Open WebUI API keys, because a key that bypasses the interface also bypasses your group rules.

Interactive chat has different capacity needs from batch jobs, since people wait on each reply. Size for concurrent conversations, context length and the number of accelerators, including tensor parallelism within a node. vLLM exposes Prometheus metrics at /metrics covering request counts, token throughput, latency and KV cache use, so set alert thresholds from those signals before launch. If you run several Open WebUI replicas, the scaling guide requires PostgreSQL instead of SQLite, Redis for shared sessions and websocket state, and shared file storage. Cost has four parts: accelerator capacity, surrounding infrastructure, implementation and operations. vLLM itself has no paid edition. Open WebUI's branding clause applies to deployments above 50 users in any rolling 30-day period unless you hold an enterprise license or written permission. Enterprise pricing is quoted after you contact sales with an expected seat count, so ask for that figure in your scope.

What you need before connecting Open WebUI to vLLM

Connecting Open WebUI to vLLM depends on four things lining up: a vLLM server serving a chat model correctly, an Open WebUI install method your team can operate, a network path between the two, and an authentication approach for both. Settle these choices before the first connection test, because each one changes the configuration you will later have to maintain and upgrade.

A running vLLM server with a chat model

Start the server with vllm serve and confirm it answers on its OpenAI-compatible endpoints. The chat completions API only works when the served model ships a chat template or when you supply one with the chat template option. Without it, Open WebUI will connect but chat requests will fail, so test one request with a chat template before you configure the interface.

An Open WebUI install method

Open WebUI documents Docker, Docker Compose, Kubernetes with Helm, and pip install open-webui followed by open-webui serve. Pick the method your team already operates, since it determines how environment variables, upgrades and backups are handled. Confirm which Open WebUI version you will pin, and test that version against your vLLM version before production use.

The network path between the two services

Open WebUI must reach the vLLM endpoint over a network path you control, and vLLM should not be exposed directly to staff. Decide which host and port Open WebUI uses to call vLLM, and whether that traffic stays on a private segment. Confirm that vLLM's management endpoints such as metrics and health are not reachable from user networks.

The API key approach

The vLLM --api-key option protects the /v1 endpoints, but its documentation warns against relying on it alone and recommends a reverse proxy that allowlists only the endpoints meant for users. Decide where the key is stored, how it is rotated, and whether Open WebUI or a proxy holds it. Plan the key so that rotating it does not require editing every user's session.

PostgreSQL and Redis for multiple replicas

Running one Open WebUI instance can use the default local database, but the scaling guide requires PostgreSQL instead of SQLite for multi-instance deployments. Multiple replicas also need Redis for shared sessions, websocket connections and application state, plus shared file storage for uploads and knowledge. Decide now whether you need more than one replica, because adding these components later changes the deployment.

Version pinning and upgrade testing

vLLM ships new minor releases about every two weeks, and Open WebUI publishes its own release cadence on GitHub. Pin the vLLM and Open WebUI versions you have tested, and record the pair in your change log. Test each upgrade in a staging environment with your chat model and your chat template before moving it to users, because a model or template change can alter responses that staff depend on.

How Open WebUI calls the vLLM chat completions endpoint

The request path starts when a staff member signs in to Open WebUI, which checks the session before any prompt reaches a model. When the user sends a message, Open WebUI builds a chat completion request and sends it to the vLLM server's /v1/chat/completions endpoint, using the base URL and API key stored in its connection settings. The vLLM server runs the model and returns output, which Open WebUI passes to the browser as it arrives. The browser does not call vLLM directly, so the vLLM address and key stay on the server side. Confirm in your own network that user machines cannot reach the vLLM port directly.

Open WebUI needs only the routes it uses. The vLLM server also exposes /v1/completions, /v1/responses, /v1/embeddings and audio routes, and the chat interface depends on /v1/chat/completions for conversations. Other routes matter only when something calls them. If you enable retrieval features that need embeddings, confirm whether vLLM serves the embedding model or another provider does, and allowlist /v1/embeddings only if vLLM is the source. Enforce the allowlist at a reverse proxy in front of vLLM, because the vLLM security documentation warns against relying on --api-key alone and says the key does not cover endpoints such as /metrics or /health. Recheck the allowlist whenever you change the Open WebUI or vLLM version.

vLLM does not know individual staff users. The API key in the Open WebUI connection is a shared credential for the whole deployment, so vLLM sees one client no matter who typed the prompt. It cannot enforce per-person access, attribute usage to a person, or revoke one user's access. User identity, roles, group permissions and any per-user API keys live in Open WebUI, which documents SSO through OIDC and LDAP, SCIM 2.0 provisioning and role-based access control with groups. Decide early where per-user usage records will come from, because vLLM's Prometheus metrics count requests and tokens without naming the person who made them.

Before go-live, run a short set of checks. Sign in with an account that has no model access and confirm Open WebUI refuses the request. Confirm the vLLM key comes from a managed secret store and is rotated on a schedule you have written down, not typed into a shared admin page. Send a direct request to the vLLM port from a user network and confirm it fails. Confirm the served model has a chat template, or that one is supplied with the --chat-template option, because the chat completions API requires it. Finally, record the Open WebUI and vLLM versions you tested together, since both projects publish releases on short cycles and each upgrade can change this path.

Configuration sequence for connecting Open WebUI to vLLM

This sequence connects a self-hosted vLLM server to Open WebUI in an order that proves each layer before the next one is added. It starts with the inference engine and its model list, moves to the chat interface and access groups, and ends with a reverse proxy, an identity layer and refusal tests that protect both services. Each step closes with a check the team can record.

  1. Start vLLM and confirm the served model

    Start the vLLM server with vllm serve on a host that Open WebUI can reach over a private network path, and set the --api-key option so the /v1 endpoints require a key. The engineer who owns the accelerator host runs this step. Then request the models list from the OpenAI-compatible API with the key and confirm that the model you intend to serve appears under its served name. The --api-key option does not cover /metrics, /health or the other control routes, so those paths must be blocked at the proxy in a later step. The check is a models list response that returns the served model. If the list is empty or shows a different name, correct the model path or served name before continuing.

  2. Set a chat template when the model lacks one

    Check whether the model ships a chat template. vLLM needs a template to serve the chat completions API, so a model without one must be given a template with the --chat-template option at startup. The engineer running the server makes this decision. The template should match the instruction format the model was trained on, so confirm it against the model card or the vendor documentation before you restart. After restarting vLLM with the template, send one request to /v1/chat/completions. The check is an assistant message in the response instead of a template error. Repeat the models list request to confirm the server still starts cleanly.

  3. Add the vLLM endpoint as an OpenAI-compatible connection

    In the Open WebUI admin settings, add an OpenAI-compatible connection. Set the base URL to the vLLM API root that ends in /v1, enter the key from the first step and save. Open WebUI connects to any OpenAI-compatible provider from the same interface, so no vLLM-specific connector is needed. Confirm that the base URL resolves only to the internal vLLM host. The administrator who owns the Open WebUI instance performs this step. The check is that the served model appears in the Open WebUI model selector after the connection test passes. If the model does not appear, check the base URL path and the key before you change anything else.

  4. Restrict which models users can see

    Open WebUI provides role-based access control with groups and per-resource permissions. Create a group for the staff who should use the chat service and grant that group access to the approved models only. Review the default permissions for the general user role so that unapproved models are not visible to everyone. Also review which features each group can use, such as file uploads and API keys, because those settings widen what an approved user can reach. The Open WebUI administrator and the owner of the access policy agree on the group list. The check is a test login as a user outside the approved group, where the model does not appear in the selector.

  5. Run a streamed test chat in the browser

    Sign in as an approved test user, select the served model and send a prompt that needs a multi-sentence answer. Watch the tokens appear progressively as the answer is generated. Then check the vLLM logs on the internal network to confirm that the request was received, completed and returned without key or template errors. Record the model name and the vLLM version in your runbook. Run this test on the internal path only, before the proxy is added, so that any fault can be isolated to one layer. The check is a streamed answer in the browser with a matching request entry in the vLLM logs.

  6. Place a reverse proxy and identity layer in front

    Put a reverse proxy in front of Open WebUI and the vLLM API, and make it the only route that users can reach. Allow only the paths that people need, and deny /metrics, /health, /pause, /resume, /abort_requests and /invocations to users, as the vLLM security documentation recommends for an allowlist. Connect Open WebUI to your identity provider through OIDC or LDAP, and enable authenticator-app MFA for administrators. If your identity provider supports SCIM 2.0, use it to provision users and groups. The identity and network teams own this step. The check is a successful sign-in from an approved group and a failed direct request to the vLLM API from outside the internal network.

  7. Test refusals for unapproved users and blocked paths

    Before opening access, test the negative cases. Sign in as a user who is outside the approved group and confirm that the model is not offered. Send requests to the blocked vLLM control paths through the proxy and confirm that each one is refused. Send a request to the API without the vLLM key and confirm that it is rejected. Save the results with the configuration as evidence for your access review. The check is that every unapproved attempt is refused and the results are stored with the setup records. Ask an engineer who did not build the setup to repeat these tests, because the builder is more likely to overlook a gap.

Which vLLM settings map to Open WebUI connection fields

This table pairs each vLLM setting with the Open WebUI connection field that depends on it, so you can build the connection from the server side outward. Read it alongside the docs for your pinned versions, because field and flag names change between releases. The main takeaway is that the proxy should expose only the chat routes users need, while metrics and health stay with operators.

ElementvLLM sideOpen WebUI connection
Server base URL and /v1 pathThe server listens on a host and port, and OpenAI-compatible routes sit under /v1Base URL for the OpenAI-compatible connection, confirm whether it should end in /v1 for your version
API key value and storageSet with the --api-key option, which protects /v1 routes but not every endpointAPI key entered in the connection settings or supplied through an environment variable (confirm the name)
Served model nameThe model name clients send in each request, set when the server startsModel ID shown in the Open WebUI model list, which must match the vLLM name exactly
Chat template requirementThe model needs a chat template, or one given with --chat-template, for chat completionsNo dedicated field; a missing template appears as errors when a chat is sent
Endpoints users reach through the proxyChat and completion routes such as /v1/chat/completions and /v1/completionsOnly these routes should be allowlisted at the proxy; confirm which routes your Open WebUI version calls
Metrics and health endpoints/metrics (Prometheus format) and /health, which the API key option does not protectNo Open WebUI field; block them from user traffic and scrape them from the operator network

Putting SSO, roles and API keys in front of both services

Access to each model is decided in Open WebUI, not in vLLM. Open WebUI documents single sign-on through OIDC and LDAP, user and group provisioning through SCIM 2.0, and role-based access control built on groups with per-resource permissions. Those settings determine which users can open which models. Before go-live, map your identity provider groups to Open WebUI groups and confirm, in the Open WebUI release you deploy, whether group membership arrives through SCIM, LDAP group lookup or OIDC claims. Test with one account from each group and confirm that a user outside every model group sees no models.

Open WebUI API keys and authenticator-app MFA are separate controls. An Open WebUI API key acts as the user who created it and inherits that user's model permissions, so it is a user credential. Decide who may create API keys, and whether most staff should have that ability at all. Authenticator-app MFA protects interactive sign-in to Open WebUI only. It does not apply to API calls made with a key, and it does not protect the vLLM endpoint. Confirm the exact setting names and the default state of each control in your installed version before you write the access policy.

The vLLM key is a service credential. Open WebUI holds it in its connection settings and sends it with every request to the OpenAI-compatible endpoint, so it identifies the Open WebUI service and no person. Store it in your secrets system, keep it out of browser-visible configuration, and plan rotation as a change with a maintenance window in Open WebUI and vLLM. The vLLM --api-key option covers only the /v1, /v2, /inference and /cohere paths. The vLLM security documentation warns against relying on it alone and recommends a reverse proxy that allowlists only the endpoints meant for users. Confirm that /metrics, /health, /pause and /abort_requests are unreachable from user networks.

A single shared vLLM key means the model server cannot attribute a request to a person, team or budget. Usage records at vLLM show the key holder, which is Open WebUI. Ask Open WebUI which per-user usage data it records and how long it keeps it, and decide whether that is enough for your audit and cost reviews. If you need per-team keys, spending limits or rate limits enforced before requests reach vLLM, you need a gateway layer between Open WebUI and vLLM. The sibling page on placing a LiteLLM gateway in front of vLLM covers that design. Settle this question before launch, because moving to a gateway later changes the endpoint and key that Open WebUI uses.

Hardening the vLLM endpoint behind a reverse proxy

The vLLM server ships with an API key option, but the key does not cover every route the server exposes. The cards below cover what the key protects, how a reverse proxy closes the gaps, and what to check in the multi-node and air-gapped cases before Open WebUI users reach the endpoint.

What the --api-key option protects

The vLLM --api-key option requires a bearer token on the endpoints under /v1, /v2, /inference and /cohere. Open WebUI sends that token on each request, so the key must match in both services. Confirm which routes your vLLM version serves, since the docs list the protected prefixes but routes can change between releases.

Endpoints the key leaves open

The security docs state that /invocations, /pause, /resume, /abort_requests, /metrics and /health are not protected by --api-key. Pause and resume control the engine, abort cancels in-flight requests, and metrics expose request and latency data. Before go-live, list every route the server answers and record which ones a client on the user network can reach.

Why the key alone is not enough

The vLLM docs warn against relying on the API key by itself and recommend a reverse proxy that allowlists only the endpoints meant for users. A single shared key is also hard to rotate across Open WebUI and other clients, and it does not separate staff roles. Treat the key as one layer in front of the proxy rules, not as the access control.

Proxy allowlist for user endpoints

Configure the reverse proxy to forward only the user-facing paths Open WebUI calls, such as the OpenAI-compatible chat and completions routes, and to return a denial for everything else. Deny by default, then add routes one at a time. Test each rule with your own requests: an allowed chat call should succeed, while a request to /pause, /abort_requests or /metrics from the user network should fail.

Operator endpoints on an internal network

Keep operator functions such as pause, resume, abort and metrics reachable only from an internal management network or monitoring host, never through the public proxy listener. Prometheus scrapes can stay on that network. Decide which staff accounts or jump hosts may call these routes, and document the path so that on-call engineers know where to run them during an incident.

TLS termination and the upstream hop

Terminate TLS at the reverse proxy so that bearer tokens and prompts are not sent in clear text across the user network. Decide whether the hop from the proxy to vLLM stays on a private network without TLS or also uses it, and record that decision. Confirm certificate renewal, cipher settings and how Open WebUI trusts the internal certificate authority.

Multi-node traffic on an isolated network

The vLLM security docs state that communication between nodes in a multi-node deployment is insecure by default, with no authorization or encryption. If you run pipeline parallelism across nodes, place those nodes on a dedicated isolated network that carries no user or Open WebUI traffic. The proxy should never route to inter-node ports, so verify that with a scan from the user segment.

Offline docs for air-gapped hosts

The --enable-offline-docs option serves the API documentation pages without loading external assets, which suits hosts with no outbound internet access. It does not change which routes are protected, so the proxy allowlist still applies. Check whether the documentation pages are reachable from the user network at all, and remove or block them if your policy does not allow them.

Sizing vLLM for interactive staff users

Interactive chat is judged on two things: time to first token, which is how long a user waits before text starts to appear, and sustained token throughput, which is how quickly the rest of the answer streams once it begins. Both are shaped by the accelerator capacity behind vLLM. Four inputs drive that need. Concurrency sets how many requests compete for the same GPUs at once. Prompt length increases the prefill work done before the first token. Response length extends decode time and keeps KV cache memory allocated for longer. Model size sets the memory needed for weights and the compute spent on every generated token. Open WebUI adds to prompt length because chat clients commonly resend earlier turns of a conversation, so long threads grow the input on every request. Confirm how your Open WebUI version builds requests before you assume prompt sizes.

Measure before you buy capacity. vLLM exposes Prometheus-format metrics at /metrics on its API server. Scrape that endpoint with your Prometheus instance and watch request counts, token throughput, latency histograms and KV cache use during a pilot with a representative group of staff from several departments, using the prompts and hours they actually work. Pay attention to peaks rather than averages, and note when KV cache use approaches its limit, because queuing and slow first tokens usually appear at that point. vLLM lets you configure histogram buckets, so set them around the latency targets your users care about. The output of this pilot is the traffic profile you will hand to any capacity estimate.

Tensor and pipeline parallelism change the hardware layout. Tensor parallelism splits a model across GPUs inside one node, which keeps the work on one machine. Pipeline parallelism spreads model layers across nodes, which adds dependence on the network between them. The vLLM security documentation states that communication between nodes in a multi-node deployment is insecure by default and must sit on an isolated network, so a multi-node layout also needs network design and access controls before it is run for staff. Ask your team whether one node with several accelerators can meet the measured concurrency. If it cannot, decide whether the added network and operational work of a second node is justified. Confirm the interconnect and GPU requirements for your chosen layout with the vLLM parallelism documentation and your accelerator vendor.

Open WebUI adds components to size once more than one replica is required. The scaling guide requires PostgreSQL instead of SQLite for multi-instance deployments, because SQLite does not handle concurrent writes from several processes well. Multiple replicas also need Redis as a shared store for sessions, websocket connections and application state, and shared file storage so uploads and knowledge stay reachable from every replica. Each of these has its own capacity needs for database connections, Redis memory and storage throughput, and each must be sized alongside the vLLM accelerators. When you request a capacity estimate, give the provider your measured profile: peak concurrent users, the spread of prompt and response lengths, peak hours, the models you plan to serve, and your latency targets. Ask for the estimate to show accelerator, database, cache and storage components separately, with the assumptions behind each.

Why Open WebUI cannot reach or use the vLLM model

This table lists five failures that often appear when Open WebUI is pointed at a self-hosted vLLM endpoint. Each row gives the likely cause, a check to run and the fix, so you can move from symptom to root cause. Start with the model list and the API key, since most connection problems show up there before any chat request is sent.

FailureLikely causeCheckFix
Open WebUI shows no modelsBase URL missing the /v1 path, or a proxy blocks the models routeConfirm the base URL in Open WebUI and test the models route from the Open WebUI hostSet the base URL to the vLLM endpoint including /v1 and allow that route through the proxy
Chat requests fail with an authorization errorThe key in Open WebUI does not match the key set on vLLMCompare the value passed to the vLLM API key option with the key saved in Open WebUIUse one key in both services, load it from a secret store and keep it out of logs
Chat fails for a model with no templateThe model has no chat template, so the chat completions API cannot format promptsCheck the vLLM server log for a template error and inspect the model files for a templateSupply a template with the chat template option, or choose a model that includes one
Responses stall or drop mid-streamProxy read timeouts or output buffering on streamed responsesCompare a streamed request sent directly to vLLM with the same request through the proxyRaise proxy read timeouts for long generations and turn off buffering on the streaming route
Replicas show different chats or uploadsSQLite in use, no Redis for shared state, or no shared file storageLog in to two replicas and compare chat history, uploads and sessionsMove to PostgreSQL, add Redis for shared state and mount shared file storage on every replica

Questions teams ask before connecting vLLM to Open WebUI

How much does it cost to connect vLLM to Open WebUI?

vLLM has no paid edition, so the cost comes from four places: accelerator capacity, the infrastructure around it, implementation and the people who operate it. Accelerator capacity is often the largest line, whether you buy GPUs or rent them, and it depends on model size and how many people chat at the same time. Open WebUI's enterprise license is not priced publicly. Open WebUI's sales team quotes it after you share an expected seat count. DeployOpen's fee follows from a written scope, so ask for a quote that separates one-time work (design, build, integration, handover) from recurring work (hosting, upgrades, support, testing).

How long does a vLLM and Open WebUI setup take?

No duration can be fixed before scoping, and the timeline is confirmed once the scope is written. The schedule depends on three decisions the software does not make for you: how users sign in (identity provider, single sign-on, group mapping), how traffic reaches the model servers (network segmentation, a proxy that allowlists user-facing endpoints, TLS), and whether accelerator capacity is already available. GPU procurement or cloud quota can take longer than the configuration work. The model choice also matters, because chat completions need a chat template. Ask for a scope that lists each decision as a dependency, with a named owner and a target date for each.

What does our team need to provide for this engagement?

Your team needs four named owners before work starts. The identity owner manages the provider that Open WebUI and the model endpoint will trust, and approves group mappings. The network owner controls the segments, firewall rules and certificates between users, Open WebUI, the proxy and the GPU hosts. The GPU host owner provides and patches the accelerator machines, drivers and container runtime. The model decision owner chooses which models are approved, their licenses and their intended users. Each owner should be able to approve changes and schedule maintenance windows. Name them in the scope document so that delays are visible and assigned.

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

Yes, if your engineers already run Kubernetes or Docker and have working identity skills (OIDC, group claims, certificate handling). The official Open WebUI install methods include Docker, Docker Compose, Helm and pip, and vLLM's server starts with a single command, so the first working connection is rarely the hard part. The risks are two gaps. The first is the proxy gap: vLLM's API key does not cover every endpoint, so a reverse proxy must be built and tested. The second is the capacity gap: interactive users, long prompts and concurrent sessions need measured sizing, not estimates. Teams that scale Open WebUI to several replicas also need PostgreSQL, Redis and shared file storage, which adds operational work.

Does the Open WebUI license require branding for our users?

It can, depending on how many people use the deployment. Open WebUI code from version 0.6.6 onward is distributed under the Open WebUI License, which forbids altering or removing Open WebUI branding in deployments that exceed 50 users in any rolling 30-day period. Code through v0.6.5 remains BSD-3-Clause. The exemptions are an enterprise license or written contributor permission. Count distinct users over any rolling 30 days, not peak concurrent sessions. Enterprise licenses allow white-labeling and custom branding, and they are quoted by Open WebUI's sales team. Confirm your reading of the clause with your legal counsel, because DeployOpen does not provide legal advice.

Why is the vLLM API key alone not enough protection?

The --api-key option protects only the endpoints under /v1, /v2, /inference and /cohere. It does not protect /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. In this setup, Open WebUI should reach the chat completions path through that proxy, while control endpoints such as /pause and /abort_requests stay unreachable from user networks. Metrics should be scraped from a monitoring network only. Multi-node vLLM deployments also send traffic between nodes without authorization or encryption by default, so those nodes need an isolated network.

Which vLLM endpoints must Open WebUI be allowed to reach?

Open WebUI needs the OpenAI-compatible chat completions endpoint, /v1/chat/completions, and whichever model listing call your chosen Open WebUI release makes against the provider. Confirm that list against the release you plan to deploy, because the calls can change between versions. Every other path should be blocked at the proxy for user traffic. Prometheus should reach /metrics from an internal monitoring network, not through the user-facing route. Before go-live, test each allowed path with a valid key and each blocked path without one, and record the results. Also confirm that the served model has a chat template, either built in or supplied with the --chat-template option, because the chat endpoint will not work without one.

How DeployOpen scopes and delivers this integration

DeployOpen treats vLLM and Open WebUI as two services with one trust boundary between them. We agree the scope in writing before work starts, then build the endpoint connection, the chat interface, the authentication layer in front of both and the capacity checks for interactive users, and hand over documented runbooks. Ongoing support, upgrades and testing are available as a retainer.

How we scope

  • Written scope naming the vLLM endpoint, Open WebUI instances, identity provider and user groups
  • Confirmation of the Open WebUI License terms that apply to your expected user count before build
  • Capacity assumptions for concurrent interactive users, agreed with your accelerator plan

How we build

  • Connect Open WebUI to the vLLM OpenAI-compatible endpoint, with chat templates checked per model
  • Place a reverse proxy in front of vLLM that allowlists only user-facing endpoints
  • Configure SSO, groups and role-based access in Open WebUI, with MFA where your policy requires

How we hand over

  • Test results showing model responses, authentication flows and blocked proxy paths
  • Documented configuration, secrets locations and runbooks for both services and the proxy
  • Monitoring notes covering vLLM /metrics scraping, which the --api-key option does not protect

How we support

  • Optional retainer for upgrades, model changes, Open WebUI releases and continuous testing
  • Review of vLLM and Open WebUI release notes before each upgrade in the agreed window
  • Confirm with Open WebUI which support options your license tier includes

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.