Open WebUI is a browser-based chat interface that you host yourself. It computes nothing itself; it talks to a model server: Ollama, or any service that offers the OpenAI-compatible API, local or in the cloud. It adds user accounts with roles, a knowledge base for your documents (RAG) and an admin area. Before company use, note: from version 0.6.6 (released May 2025) a license with a branding clause applies. You may only remove the name and logo with 50 users or fewer, with permission, or with an enterprise license.
In front of my own local model, Qwen3.8-27B under SGLang on a Nvidia DGX Spark, I run a terminal agent; the Spark is my test bed for the question of how far a local model gets you without the cloud. More on that in Qwen 3.8 Locally: DGX Spark Experience and on the AI page. Open WebUI answers another question: how do people without a terminal use such a model?
All output below comes from a local test on 31 October 2026 on an Apple silicon Mac with Docker 29.8.1: Open WebUI v0.12.5, Ollama 0.40.13 and the small model qwen3:0.6b. The test UI ran in German; English labels come from the project's translation file.
What Open WebUI is and isn't
Open WebUI is the interface, not the model: the model decides how good the answers are, the hardware how fast they arrive. Setting up Ollama itself, and when vLLM or SGLang pay off, is covered in Setting Up Local AI: Ollama to SGLang. It adds what a bare model server lacks: sign-in, per-person chat history, roles, documents as knowledge and model access control.
Install Open WebUI with Docker and Ollama
The official guide expects Ollama on the host at http://host.docker.internal:11434. In the test both ran in containers on their own network, reachable only on 127.0.0.1:
docker network create owui-test-net
docker run -d --name owui-test-ollama --network owui-test-net \
-p 127.0.0.1:11435:11434 -v owui-test-ollama-data:/root/.ollama ollama/ollama:0.40.13
docker exec owui-test-ollama ollama pull qwen3:0.6b
OWUI_KEY=$(openssl rand -hex 32); echo "$OWUI_KEY" # keep this value safe
docker run -d --name owui-test-webui --network owui-test-net \
-p 127.0.0.1:3100:8080 -v owui-test-webui-data:/app/backend/data \
-e OLLAMA_BASE_URL=http://owui-test-ollama:11434 \
-e WEBUI_SECRET_KEY="$OWUI_KEY" \
ghcr.io/open-webui/open-webui:v0.12.5
# first start: wait about two minutes (downloads the embedding model)
curl -s http://127.0.0.1:3100/api/version
{"version":"0.12.5","deployment_id":""}
Three points from the guide:
- Pin the version. The docs use
:main, which follows the newest release; :v0.12.5 tells you what runs.
- Set
WEBUI_SECRET_KEY. Without a fixed key, every recreated container logs everyone out. The docs suggest openssl rand -hex 32.
- Publish locally only. The docs'
-p 3000:8080 opens the port on every network interface. 127.0.0.1: in front keeps it local. For a team: reverse proxy with TLS in front, hardened server underneath, see Securing Your Own Server: Linux and Windows.
Locally the images took 4.11 GB (Open WebUI) and 4.29 GB (Ollama), the model 522 MB. The docs give compressed downloads for Linux/amd64 of 1.62 GB for :main and 197 MB for :slim. :slim needs an external embedding provider for the knowledge base.
On a Mac, Ollama is better kept out of the container. Ollama's log showed inference compute id=cpu library=cpu: inside Docker on the Mac it computes on the CPU only. Per the Ollama docs, a native install on the Mac uses the GPU via Metal. Per the guide, Open WebUI then reaches it with --add-host=host.docker.internal:host-gateway; use -p 127.0.0.1:3000:8080 instead of -p 3000:8080. This setup was not part of the test.
First start: admin account and a first question
On first start, the container only answered requests after about two minutes, according to its log. In that time it was downloading the embedding model sentence-transformers/all-MiniLM-L6-v2 from Hugging Face, although the docs say :main includes it.
Then the interface shows "Get started with Open WebUI" and a "Create Admin Account" button. Per the docs, the first account is the administrator; after that, sign-ups are off. Turn them back on, and new accounts start as "pending" until an admin approves them.
The test question was (in German): "Explain in two sentences what a Docker volume is." qwen3:0.6b showed "Thought for 15 seconds" and answered, translated:
"A Docker volume is a temporary storage area that can store Docker container files. […]"
That's wrong. A volume is precisely the storage that outlives the container. A 0.6-billion-parameter model is for trying the interface, not for answers you rely on.
The answer's info showed 37.6 seconds, 8.1 tokens per second and 2,050 input tokens for an eight-word question. The same question sent straight to Ollama needed 26 input tokens. Ollama's log showed four requests from Open WebUI for it. Besides the answer, background tasks are the likely source: three generated follow-up questions, and chat title generation is on by default. On weak hardware, set a small "Task Model" under Settings > Admin > Interface or switch off title generation.
Users, roles and groups
The admin area lists every account under Users; in the test, one admin and zero groups. The roles are "pending", "user" and "admin". Under Settings > Admin > Authentication you set the default user role, default group, new sign-ups, API keys and mandatory two-factor sign-in; API keys and two-factor were off in the test. The docs also list SSO via OIDC and LDAP, SCIM 2.0, and permissions per role, group and resource.
Connecting OpenAI-compatible APIs
Under Settings > Admin > Connections there are two lists: Ollama API and OpenAI API. In the test, the Ollama entry held the address from OLLAMA_BASE_URL. The OpenAI list came preset with https://api.openai.com/v1, switched on, without a key. If you don't need the cloud, turn it off.
Any OpenAI-compatible server can be added with URL and key. The docs list LM Studio (http://localhost:1234/v1), vLLM, Llama.cpp and LocalAI, among others. Saving doesn't test a connection; the verify button does, per the docs. The "Direct Connections" switch, off in the test, lets users add their own endpoints; in a company, leave it off.
Knowledge base (RAG) in the test
Collections live under Workspace > Knowledge. In the test, a made-up document with three house rules for a "Testlager Nord" warehouse went into a collection via the API, which then appeared there. Asked when the warehouse is open and what a return needs, qwen3:0.6b answered with the collection attached, translated:
"Testlager Nord was opened from 6:30 to 14:00, as soon as it is Monday to Friday [1]. For a return you need a case number that starts with RT- [2]."
Clumsy, but correct and with sources. Without the collection, the same model invented that the warehouse "opened in 2021" and listed forms not in the document. That's what RAG is for: the model gets the relevant passages instead of guessing.
The defaults under Settings > Admin > Documents: chunk size 1,000 characters, overlap 100, embeddings via SentenceTransformers with all-MiniLM-L6-v2. Its model card says English. For other languages, try a multilingual embedding model there.
Telemetry, updates and what leaves the machine
The v0.12.5 image presets SCARF_NO_ANALYTICS=true, DO_NOT_TRACK=true and ANONYMIZED_TELEMETRY=false. On the sign-up screen the interface states that Open WebUI "does not make any external connections, and your data stays securely on your locally hosted server." Still, the test didn't run offline: on first start the log showed 22 requests to huggingface.co to load the embedding model, about 923 MB in the cache. The container log showed no other outgoing requests; what the browser loads itself wasn't tested.
Two switches to check before going live:
- Update check:
ENABLE_VERSION_UPDATE_CHECK defaults to True per the docs. OFFLINE_MODE=true turns off the update check and model downloads from Hugging Face. Per the docs, download the embedding model first, or the knowledge base fails.
- "Community Sharing": under Settings > Admin > General this switch was on by default, with the text "Allow users to share chats with the Open WebUI community." For company data, turn it off.
More on privacy and operations: Local AI and Privacy: Cloud or Server?.
License: BSD-3 with a branding clause
This isn't legal advice, just a reading of the license text as of 31 October 2026.
From v0.6.6 on, the "Open WebUI License" applies (effective date per the project: 19 April 2025; the release came out on 5 May 2025): the three BSD clauses plus a fourth. It prohibits altering, removing, obscuring or replacing the "Open WebUI" branding: name, logo and other identifiers. There are three exceptions:
- no more than 50 end users, meaning natural persons with direct access, within any rolling 30-day period,
- prior written permission from the copyright holder,
- an enterprise license that expressly permits it.
Using, modifying and redistributing remain allowed, including commercially and with more than 50 users, as long as the branding stays visible. Code up to and including v0.6.5 keeps its earlier license without the branding clause: BSD-3 per LICENSE_HISTORY, and code from before 10 January 2025 MIT. The project itself states that the license from v0.6.6 on is not an OSI-approved open source license.
In practice: an internal instance with the standard look is unproblematic. Shipping it under your own name to more than 50 people, say as an agency, needs permission or an enterprise license. For model licenses, see Open Weight vs Open Source: Licenses.
Frequently asked questions
Is Open WebUI free?
Yes, the software itself costs nothing as long as you keep the branding. For your own branding with more than 50 users you need permission or an enterprise license. Under Settings > Admin > General the interface points to a "licensed plan". Hardware and connected cloud APIs cost extra.
Do I need Ollama for Open WebUI?
No. Any server with an OpenAI-compatible API works, including a cloud provider. You do need some model server, since Open WebUI computes nothing itself.
Does Open WebUI run without internet?
According to the docs, yes: with models downloaded beforehand, OFFLINE_MODE=true turns off the update check and model downloads. In the test, the first start fetched the embedding model from Hugging Face.
How do I update Open WebUI?
Per the docs: remove the container, pull the new image and start again with the same volume and the same WEBUI_SECRET_KEY. Data and accounts live in the volume under /app/backend/data. Back it up before every update.
How to move forward
Start with the model, not the interface: set up Ollama directly on your machine following Setting Up Local AI: Ollama to SGLang, test a model in the terminal, and only put Open WebUI in front once other people need to work with it. Whether local AI pays off: Local AI: What Actually Works in 2026; hardware: Your Own AI Server: Hardware and Cost. How Open WebUI fits into an internal company LLM is covered in Private LLM: Vendor, EU Cloud or Own Server?.