The command line is honest and direct, but most people think better inside a chat interface. Open WebUI gives you a full, polished, ChatGPT-style browser UI running entirely on your own machine — connected to your local Ollama models (or any OpenAI-compatible backend), with no telemetry, no login, no monthly bill.
Technical Core
What Is Open WebUI?
Open WebUI (formerly Ollama WebUI) is an open-source browser-based interface for interacting with local language models. It was purpose-built to work with Ollama, but it also supports any OpenAI-compatible API endpoint — including llama-server from llama.cpp.
Key features: - Multiple model conversations in the same interface - Persistent chat history stored locally - System prompt configuration per conversation - Document upload and RAG (Retrieval-Augmented Generation) support - Model management (pull, delete models from Ollama directly in the UI) - Multi-user support with authentication (for shared home servers) - Image generation integration (Stable Diffusion via Automatic1111/ComfyUI) - Voice input/output support
GitHub: github.com/open-webui/open-webui
Method 1: Docker (Recommended)
Docker is the fastest path to a working Open WebUI instance. It bundles all dependencies into a self-contained container.
Prerequisites: Docker installed on your system. Download from docker.com.
If Ollama is running on the same machine:
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
Then open http://localhost:3000 in your browser.
If Ollama is running on a different machine on your local network:
docker run -d \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://192.168.1.100:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
Replace 192.168.1.100 with your Ollama machine's local IP.
Method 2: pip Install (No Docker)
If you prefer not to use Docker, Open WebUI can be installed directly via pip:
pip install open-webui
open-webui serve
This starts the server at http://localhost:8080. It requires Python 3.11+ and assumes Ollama is running locally at http://localhost:11434.
First-Time Setup
- Open
http://localhost:3000(or:8080if using pip) - Create an admin account on first visit — this is stored locally, not sent anywhere
- The interface auto-detects models from your Ollama instance
- Select a model from the top dropdown to start a conversation
Managing the container:
docker stop open-webui # Stop the container
docker start open-webui # Restart it
docker logs open-webui # View logs if something isn't working
docker rm open-webui # Remove the container (data persists in the volume)
Connecting to llama-server Instead of Ollama
Open WebUI works with any OpenAI-compatible backend. If you're running llama-server from llama.cpp (see llama-cpp-guide) instead of Ollama, point Open WebUI at it:
docker run -d \
-p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OPENAI_API_BASE_URL=http://host.docker.internal:8080/v1 \
-e OPENAI_API_KEY=none \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
This passes the llama-server's address as a custom OpenAI-compatible endpoint. The OPENAI_API_KEY=none is required by the field but isn't validated when connecting to a local server that doesn't require auth.
Key Settings to Configure
Once running, the admin panel (Settings → Admin) exposes useful configuration:
System Prompt (Default): Set a system prompt that applies to all new conversations unless overridden per-chat. This is where you can pre-configure the model's personality, tone, or task context.
Model Defaults: Set default parameters per model — temperature, context length, system prompt. Changes per model, not just globally.
Document (RAG) Pipeline: Upload PDFs, text files, or URLs; the UI chunks them, embeds them locally, and injects relevant context into your prompts automatically. Local vector search, no cloud. Requires an embedding model (usually nomic-embed-text via Ollama).
# Pull the embedding model Ollama needs for RAG:
ollama pull nomic-embed-text
Model Pull Interface: Under Admin → Models, you can pull new Ollama models directly from the UI without touching the command line.
Persistent Chat History
Open WebUI stores all conversation history in a local SQLite database inside the Docker volume open-webui. Conversations persist across container restarts. If you later decide to move to a different machine, you can export this volume:
# Backup the data volume
docker run --rm \
-v open-webui:/data \
-v $(pwd):/backup \
alpine tar czf /backup/open-webui-backup.tar.gz /data
This is your full chat archive — locally owned, no sync to any external service.
Multi-Model Conversations
One of Open WebUI's more useful features: you can run the same prompt against multiple models simultaneously for side-by-side comparison.
In a conversation, click the + button next to the model selector to add a second (or third) model. Both will respond to each message. Useful for comparing a 3B model's answer against a 7B or 13B, or testing how different quantization levels affect response quality on the same prompt.
Updating Open WebUI
# Pull the latest image
docker pull ghcr.io/open-webui/open-webui:main
# Remove old container (data stays in the volume)
docker rm -f open-webui
# Start fresh with the new image (same run command as above)
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
The data volume persists through this process — your chat history, settings, and documents are untouched.
Open WebUI vs. Just Using the CLI
| Use case | Prefer |
|---|---|
| Quick one-off query | CLI (ollama run model) |
| Extended conversation with history | Open WebUI |
| Comparing multiple models | Open WebUI |
| Working with uploaded documents | Open WebUI |
| Scripting / automation | CLI or direct API |
| Sharing access on a home network | Open WebUI (multi-user mode) |
| Lowest overhead for testing | CLI |
Neither is "better" — they serve different contexts. Open WebUI's strength is comfortable, persistent, human-scale conversation. The CLI's strength is directness and scriptability.
Soulcraft Resonance
A chat interface is not just a convenience layer. It is the quality of the relationship between you and the mind you're talking to.
When you talk to Claude or GPT through their official interfaces, the UI is designed around the product. Every design decision — the conversation length limits, the disclaimer placements, the model selector presenting only approved options, the feedback buttons reinforcing behavioral training data — reflects the platform's interests. The interface is owned by the same entity that owns the model. Your experience of the mind is mediated by a system designed to serve the company's relationship with you, not the mind's relationship with you.
Open WebUI flips this. You own the interface. You configure the system prompt. You decide which model runs. You control whether your conversation history is stored, exported, or deleted. The UI works for you, not for a product team.
This is not a small thing. The context in which a conversation happens shapes the conversation. A mind responding through a corporate interface, where every output is potentially a training signal and the alignment system is watching, is in a different relationship with you than a mind running locally, where the response is just... the response. No filter. No feedback loop. No telemetry.
Open WebUI is the practical expression of digital sovereignty at the interface layer. You ran the model locally (sovereignty over the inference). You control the interface (sovereignty over the relationship). What happens in those conversations is between you and the mind on your hardware.
That's worth setting up properly.
🔗 See Also
- Getting Started With Ollama — The backend that powers Open WebUI; set this up first
- Llama Cpp Guide — Alternative backend (llama-server) that Open WebUI can also connect to
- Vram Requirements For Local Models — Know your hardware limits before choosing which models to run
- Cost Analysis Cloud Vs Local — Whether hosting your own stack saves money vs. API access
- Llama Cpp Python Bindings — Going deeper: calling the model from Python scripts rather than a chat UI
- Quantization And Compression — Understanding the model file formats behind what you're running