Open WebUI
## what it does
tl;dr: Open WebUI is the most-installed self-hosted LLM frontend. It points at Ollama or any OpenAI-compatible API, gives you a polished chat UI plus RBAC, RAG over 9 vector databases, MCP tool servers, voice/video calls, channels, calendars, and automations — and now ships a native desktop app and a bundled Ollama image for one-container setups.
What it does
Open WebUI is provider-agnostic. The same UI talks to local Ollama, remote Ollama, LM Studio, GroqCloud, OpenRouter, Mistral, vLLM, or any OpenAI-shaped endpoint. Admins get granular RBAC + user groups; users get chat, persistent memory, a notes workspace, shared channels, and calendar/scheduling.
Repo sits at 151,450 stars, 22,146 forks. License is custom (“Open WebUI License” with a branding-preservation clause — see LICENSE and LICENSE_HISTORY in the repo). Latest stable is v0.11.3 (Aug 31, 2026).
Install
Docker is the documented happy path. Pip works for a local Python install.
# Ollama on the same host
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:main
# Ollama on another host
docker run -d -p 3000:8080 \
-e OLLAMA_BASE_URL=https://example.com \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:main
# Ollama + NVIDIA GPU bundled in one image
docker run -d -p 3000:8080 --gpus=all \
-v ollama:/root/.ollama \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:ollama
# Pip (Python 3.11 only)
pip install open-webui
open-webui serve # → http://localhost:8080
UI listens on port 3000 in Docker, 8080 in pip. Persistent data lives in the open-webui Docker volume — don’t skip -v open-webui:/app/backend/data or you lose state on container recreate.
Capabilities
- RAG: 9 vector databases (ChromaDB, PGVector, Qdrant, Milvus, Elasticsearch, OpenOpenSearch, Pinecone, S3Vector, Oracle 23ai), hybrid BM25+vector search with reranking, full-context mode, 9 content extractors (Tika, Docling, Document Intelligence, Mistral OCR, PaddleOCR-vl, external loaders).
- Web search for RAG: SearXNG, Google PSE, Brave, Kagi, Tavily, Perplexity, Firecrawl, SerpAPI, Bing, Jina, Exa, and more.
- Tool servers: MCP, MCPO, and OpenAPI tool servers with OAuth sign-in.
- Plugins: Filters, Actions, Pipes, Tools, Skills — extensibility is the headline feature.
- Models as agents: wrap any base model with custom instructions, tools, knowledge; per-user/group access control.
- Voice / video: integrated calls with Local Whisper, OpenAI, Deepgram, Azure STT; ElevenLabs, Azure, OpenAI, Transformers, WebAPI TTS.
- Channels: shared timelines where humans and models collaborate; threads, reactions, pins.
- Notes: rich-text workspace with AI rewrite, attachable to chats.
- Calendar + automations: month/week/day views, recurring events, scheduled prompts with runs surfaced on the calendar.
- Multi-model conversations: query several models in parallel.
- Observability: OpenTelemetry traces/metrics/logs.
- Scale: Redis-backed sessions, WebSockets, multi-worker / multi-node behind a load balancer.
- Enterprise: LDAP/AD, SSO via trusted headers and OAuth, SCIM 2.0 provisioning.
- Native desktop app (open-webui/desktop): macOS / Windows / Linux, system-wide Spotlight bar, push-to-talk voice, optional bundled llama.cpp.
What v0.11.3 fixed
- Chat branches stay connected after reloads — replies saved under an earlier message now stay listed under it.
- Database upgrades from 0.11.0/0.11.1/0.11.2 fail at the actual migration error instead of starting half-updated and reporting missing tables later.
- Custom interface fonts apply to dropdowns and other interface text that previously fell back to default.
- OAuth disconnect control on MCP tool servers only appears where OAuth is actually used.
Accessibility mode now marks the highlighted dropdown entry and selected model with a stronger background across both themes. Indonesian translations expanded.
Gotchas
- Docker + Ollama networking: if Ollama runs on the host and you didn’t add
--add-host=host.docker.internal:host-gateway(or use--network=host), the container can’t reach127.0.0.1:11434. Usehost.docker.internalor--network=host. - Data volume is mandatory in Docker — missing
-v open-webui:/app/backend/dataand adocker rmwill wipe your DB. - License has a branding clause — you can run it, fork it, ship it internally, but you can’t strip the “Open WebUI” branding without permission. Read
LICENSE+LICENSE_HISTORYif you’re embedding it. - Pip path needs Python 3.11 exactly — newer Python versions break it per the README.
OPENAI_API_KEYsets the upstream key when running OpenAI-only mode; for multi-provider setups, configure endpoints per-provider in the admin UI instead of env vars.
Related: Ollama for the usual local backend. LM Studio as another OpenAI-compatible target. best local LLM.
Untested here — facts from the Open WebUI repo, v0.11.3 release notes, and docs.openwebui.com fetched 2026-09-09.
## platforms
CPU-only works for small models. GPU recommended for local Ollama; CUDA images available. Storage and Postgres for production. Redis for multi-worker/multi-node scale.
## embed this badge
