### [Open WebUI](https://docs.openwebui.com/)

> Handle: `webui`<br/>
> URL: [http://localhost:33801](http://localhost:33801)

![Demo GIF from official Open WebUI docs](https://docs.openwebui.com/assets/images/demo-d3952c8561c4808c1d447fc061c71174.gif)

![GitHub stars](https://img.shields.io/github/stars/open-webui/open-webui?style=social)
![GitHub forks](https://img.shields.io/github/forks/open-webui/open-webui?style=social)
![GitHub watchers](https://img.shields.io/github/watchers/open-webui/open-webui?style=social)
![GitHub repo size](https://img.shields.io/github/repo-size/open-webui/open-webui)
![GitHub language count](https://img.shields.io/github/languages/count/open-webui/open-webui)
![GitHub top language](https://img.shields.io/github/languages/top/open-webui/open-webui)
![GitHub last commit](https://img.shields.io/github/last-commit/open-webui/open-webui?color=red)
[![Discord](https://img.shields.io/badge/Discord-Open_WebUI-blue?logo=discord&logoColor=white)](https://discord.gg/5rJgQTnV4s)
[![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/tjbck)

Extensible, self-hosted interface for AI that adapts to your workflow. Open WebUI provides plenty of features and QoL goodies for working with LLMs. Notably:
- Model management - create model instances with pre-configured settings, chat with multiple models at once
- Prompt library
- Persistent chat history
- Document RAG
- Web RAG
- Tools, Functions, Filters

### Starting

`webui` is one of the default services in Harbor, so you don't need to specify anything special to start it.

```bash
# [Optional] Pre-pull the image
harbor pull webui

# Open WebUI is one of the default services,
# so you don't need to specify the handle explicitly
harbor up

# However, you can also start it explicitly
harbor up webui
```

See [`harbor defaults`](./3.-Harbor-CLI-Reference#harbor-defaults) on managing default services.

See [troubleshooting guide](./1.-Harbor-User-Guide#troubleshooting) if you encounter any issues.

- Since `webui` is a default service, it will be started automatically when you run `harbor up` without any arguments.
- Being default - it means most inference engines and other tools are pre-configured to connect to `webui` automatically when running together. Some examples:
  - `harbor up webui metamcp mcpo` - use MCP servers as tools in Open WebUI
  - `harbor up webui searxng` - Use SearxNG as a Web RAG tool in Open WebUI
  - `harbor up webui comfyui` - Use ComfyUI for image generation in Open WebUI
  - `harbor up webui speaches` - Use Speeches for TTS/STT in WebUI
  - `harbor up webui pipelines` - Use Open WebUI Pipelines for LLM orchestration
  - See `$(harbor home)/open-webui/configs` for all available integrations

### Configuration

You can configure Open WebUI in three ways:
- Via WebUI itself: changes are saved in the `webui/config.json` file, Harbor may override them on restart
  - Copy config changes to the `webui/configs/config.override.json` in order to persist them over Harbor's default config
- Via [environment variables](https://docs.openwebui.com/getting-started/env-configuration/): changes are applied after restarting the Harbor

Harbor CLI allows configuring following options:

```bash
# Override the WebUI image version
harbor webui version dev-cuda

# Override WebUI default name
harbor webui name "Jarvis"

# Specify custom secret for JWT tokens
harbor webui secret sk-203948

# Set to DEBUG for more visibility
harbor webui log DEBUG
```

Following options can be set via [`harbor config`](./3.-Harbor-CLI-Reference#harbor-config):

```bash
# The port on the host where WebUI will be available
WEBUI_HOST_PORT                33801

# Custom secret for JWT tokens
WEBUI_SECRET                   h@rb0r

# Name of the WebUI instance
WEBUI_NAME                     Harbor

# Log level for WebUI
WEBUI_LOG_LEVEL                INFO

# WebUI image version
WEBUI_VERSION                  main

# Docker image to use for the service
# You can switch to a custom build if needed
HARBOR_WEBUI_IMAGE             ghcr.io/open-webui/open-webui:main
```

Additionally, all [environment variables](https://docs.openwebui.com/getting-started/env-configuration/) from the official example can be set according to Harbor's [environment configuration guide](./1.-Harbor-User-Guide#environment-variables).

```bash
# Example: set ENABLE_REALTIME_CHAT_SAVE env variable value
harbor env webui ENABLE_REALTIME_CHAT_SAVE false

# Example: get ENABLE_REALTIME_CHAT_SAVE env variable value
harbor env webui ENABLE_REALTIME_CHAT_SAVE
```

#### Override Harbor Config

Harbor will assemble a custom configuration from many pieces that matches the set of services you're running with Open WebUI.

```bash
# This location contains individual configuration parts matching
# the services that might integrate with Open WebUI
open $(harbor home)/open-webui/configs
```

See docs on [Config Merging](./6.-Harbor-Compose-Setup#config-merging) to learn more about this process.

When you need to override a `webui` configuration set by Harbor, there's a special file that is applied after all Harbor's built-in configs, so its contents will always take precedence.

```bash
open $(harbor home)/open-webui/configs/config.override.json
```

You can obtain the sample JSON config with your settings from your Open WebUI instance:

![Export Config action](harbor-webui-json.png)