local llm tools

Open WebUI

Self-hosted AI platform with a chat UI on top of Ollama and any OpenAI-compatible API. Ships RBAC, RAG across 9 vector DBs, MCP/MCPO/OpenAPI tool servers, voice/video, channels, calendars, automations, and a native desktop client.
★ 151.4k by Open WebUI updated Sep 9, 2026 other

## 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 reach 127.0.0.1:11434. Use host.docker.internal or --network=host.
  • Data volume is mandatory in Docker — missing -v open-webui:/app/backend/data and a docker rm will 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_HISTORY if you’re embedding it.
  • Pip path needs Python 3.11 exactly — newer Python versions break it per the README.
  • OPENAI_API_KEY sets 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

macoslinuxwindowsdocker

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

cache ✓ in cache.directory
![cached](https://cache.directory/badge/open-webui.svg)