README.md 15.9 KB
Newer Older
Timothy J. Baek's avatar
Timothy J. Baek committed
1
# Open WebUI (Formerly Ollama WebUI) 👋
Timothy J. Baek's avatar
Timothy J. Baek committed
2

Timothy J. Baek's avatar
rename  
Timothy J. Baek committed
3
4
5
6
7
8
9
![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)
Timothy J. Baek's avatar
Timothy J. Baek committed
10
![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Follama-webui%2Follama-wbui&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false)
Timothy J. Baek's avatar
Timothy J. Baek committed
11
[![Discord](https://img.shields.io/badge/Discord-Open_WebUI-blue?logo=discord&logoColor=white)](https://discord.gg/5rJgQTnV4s)
Timothy J. Baek's avatar
Timothy J. Baek committed
12
[![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/tjbck)
Timothy J. Baek's avatar
Timothy J. Baek committed
13

Timothy J. Baek's avatar
Timothy J. Baek committed
14
Open WebUI is an extensible, feature-rich, and user-friendly self-hosted WebUI designed to operate entirely offline. It supports various LLM runners, including Ollama and OpenAI-compatible APIs. For more information, be sure to check out our [Open WebUI Documentation](https://docs.openwebui.com/).
Timothy J. Baek's avatar
Timothy J. Baek committed
15

Timothy J. Baek's avatar
Timothy J. Baek committed
16
![Open WebUI Demo](./demo.gif)
Timothy Jaeryang Baek's avatar
Timothy Jaeryang Baek committed
17

Timothy J. Baek's avatar
Timothy J. Baek committed
18
19
20
## Features ⭐

- 🖥️ **Intuitive Interface**: Our chat interface takes inspiration from ChatGPT, ensuring a user-friendly experience.
21

Timothy J. Baek's avatar
Timothy J. Baek committed
22
- 📱 **Responsive Design**: Enjoy a seamless experience on both desktop and mobile devices.
23

Timothy J. Baek's avatar
Timothy J. Baek committed
24
-**Swift Responsiveness**: Enjoy fast and responsive performance.
25

Daniele Viti's avatar
Daniele Viti committed
26
- 🚀 **Effortless Setup**: Install seamlessly using Docker or Kubernetes (kubectl, kustomize or helm) for a hassle-free experience.
27

Silentoplayz's avatar
Silentoplayz committed
28
29
- 🌈 **Theme Customization**: Choose from a variety of themes to personalize your Open WebUI experience.

Timothy J. Baek's avatar
Timothy J. Baek committed
30
31
32
33
- 💻 **Code Syntax Highlighting**: Enjoy enhanced code readability with our syntax highlighting feature.

- ✒️🔢 **Full Markdown and LaTeX Support**: Elevate your LLM experience with comprehensive Markdown and LaTeX capabilities for enriched interaction.

Timothy Jaeryang Baek's avatar
Timothy Jaeryang Baek committed
34
- 📚 **Local RAG Integration**: Dive into the future of chat interactions with the groundbreaking Retrieval Augmented Generation (RAG) support. This feature seamlessly integrates document interactions into your chat experience. You can load documents directly into the chat or add files to your document library, effortlessly accessing them using `#` command in the prompt. In its alpha phase, occasional issues may arise as we actively refine and enhance this feature to ensure optimal performance and reliability.
Timothy J. Baek's avatar
Timothy J. Baek committed
35

Silentoplayz's avatar
Silentoplayz committed
36
37
- 🔍 **RAG Embedding Support**: Change the RAG embedding model directly in document settings, enhancing document processing. This feature supports Ollama and OpenAI models.

Timothy J. Baek's avatar
Timothy J. Baek committed
38
39
- 🌐 **Web Browsing Capability**: Seamlessly integrate websites into your chat experience using the `#` command followed by the URL. This feature allows you to incorporate web content directly into your conversations, enhancing the richness and depth of your interactions.

Timothy J. Baek's avatar
Timothy J. Baek committed
40
- 📜 **Prompt Preset Support**: Instantly access preset prompts using the `/` command in the chat input. Load predefined conversation starters effortlessly and expedite your interactions. Effortlessly import prompts through [Open WebUI Community](https://openwebui.com/) integration.
Timothy Jaeryang Baek's avatar
Timothy Jaeryang Baek committed
41

Silentoplayz's avatar
Silentoplayz committed
42
- 👍👎 **RLHF Annotation**: Empower your messages by rating them with thumbs up and thumbs down, followed by the option to provide textual feedback, facilitating the creation of datasets for Reinforcement Learning from Human Feedback (RLHF). Utilize your messages to train or fine-tune models, all while ensuring the confidentiality of locally saved data.
Timothy Jaeryang Baek's avatar
Timothy Jaeryang Baek committed
43

Timothy J. Baek's avatar
Timothy J. Baek committed
44
45
- 🏷️ **Conversation Tagging**: Effortlessly categorize and locate specific chats for quick reference and streamlined data collection.

46
47
- 📥🗑️ **Download/Delete Models**: Easily download or remove models directly from the web UI.

Silentoplayz's avatar
Silentoplayz committed
48
49
- 🔄 **Update All Ollama Models**: Easily update locally installed models all at once with a convenient button, streamlining model management.

Timothy J. Baek's avatar
Timothy J. Baek committed
50
- ⬆️ **GGUF File Model Creation**: Effortlessly create Ollama models by uploading GGUF files directly from the web UI. Streamlined process with options to upload from your machine or download GGUF files from Hugging Face.
Timothy J. Baek's avatar
Timothy J. Baek committed
51

Timothy J. Baek's avatar
Timothy J. Baek committed
52
- 🤖 **Multiple Model Support**: Seamlessly switch between different chat models for diverse interactions.
53

Timothy J. Baek's avatar
Timothy J. Baek committed
54
55
- 🔄 **Multi-Modal Support**: Seamlessly engage with models that support multimodal interactions, including images (e.g., LLava).

Timothy J. Baek's avatar
Timothy J. Baek committed
56
- 🧩 **Modelfile Builder**: Easily create Ollama modelfiles via the web UI. Create and add characters/agents, customize chat elements, and import modelfiles effortlessly through [Open WebUI Community](https://openwebui.com/) integration.
Timothy Jaeryang Baek's avatar
Timothy Jaeryang Baek committed
57

Timothy J. Baek's avatar
Timothy J. Baek committed
58
- ⚙️ **Many Models Conversations**: Effortlessly engage with various models simultaneously, harnessing their unique strengths for optimal responses. Enhance your experience by leveraging a diverse set of models in parallel.
Timothy J. Baek's avatar
Timothy J. Baek committed
59

Timothy Jaeryang Baek's avatar
Timothy Jaeryang Baek committed
60
- 💬 **Collaborative Chat**: Harness the collective intelligence of multiple models by seamlessly orchestrating group conversations. Use the `@` command to specify the model, enabling dynamic and diverse dialogues within your chat interface. Immerse yourself in the collective intelligence woven into your chat environment.
Timothy J. Baek's avatar
Timothy J. Baek committed
61

Silentoplayz's avatar
Silentoplayz committed
62
63
- 🗨️ **Local Chat Sharing**: Generate and share chat links seamlessly between users, enhancing collaboration and communication.

Timothy J. Baek's avatar
Timothy J. Baek committed
64
65
- 🔄 **Regeneration History Access**: Easily revisit and explore your entire regeneration history.

66
- 📜 **Chat History**: Effortlessly access and manage your conversation history.
67

Silentoplayz's avatar
Silentoplayz committed
68
69
- 📬 **Archive Chats**: Effortlessly store away completed conversations with LLMs for future reference, maintaining a tidy and clutter-free chat interface while allowing for easy retrieval and reference.

Timothy J. Baek's avatar
Timothy J. Baek committed
70
- 📤📥 **Import/Export Chat History**: Seamlessly move your chat data in and out of the platform.
71

Timothy J. Baek's avatar
Timothy J. Baek committed
72
- 🗣️ **Voice Input Support**: Engage with your model through voice interactions; enjoy the convenience of talking to your model directly. Additionally, explore the option for sending voice input automatically after 3 seconds of silence for a streamlined experience.
Timothy J. Baek's avatar
Timothy J. Baek committed
73

Silentoplayz's avatar
Silentoplayz committed
74
75
- 🔊 **Configurable Text-to-Speech Endpoint**: Customize your Text-to-Speech experience with configurable OpenAI endpoints.

Timothy J. Baek's avatar
Timothy J. Baek committed
76
- ⚙️ **Fine-Tuned Control with Advanced Parameters**: Gain a deeper level of control by adjusting parameters such as temperature and defining your system prompts to tailor the conversation to your specific preferences and needs.
77

Silentoplayz's avatar
Silentoplayz committed
78
- 🎨🤖 **Image Generation Integration**: Seamlessly incorporate image generation capabilities using options such as AUTOMATIC1111 API (local), ComfyUI (local), and DALL-E, enriching your chat experience with dynamic visual content.
Timothy J. Baek's avatar
Timothy J. Baek committed
79
80
81
82
83

- 🤝 **OpenAI API Integration**: Effortlessly integrate OpenAI-compatible API for versatile conversations alongside Ollama models. Customize the API Base URL to link with **LMStudio, Mistral, OpenRouter, and more**.

-**Multiple OpenAI-Compatible API Support**: Seamlessly integrate and customize various OpenAI-compatible APIs, enhancing the versatility of your chat interactions.

Silentoplayz's avatar
Silentoplayz committed
84
85
- 🔑 **API Key Generation Support**: Generate secret keys to leverage Open WebUI with OpenAI libraries, simplifying integration and development.

Timothy J. Baek's avatar
Timothy J. Baek committed
86
- 🔗 **External Ollama Server Connection**: Seamlessly link to an external Ollama server hosted on a different address by configuring the environment variable.
Timothy J. Baek's avatar
Timothy J. Baek committed
87

Timothy J. Baek's avatar
Timothy J. Baek committed
88
89
90
91
- 🔀 **Multiple Ollama Instance Load Balancing**: Effortlessly distribute chat requests across multiple Ollama instances for enhanced performance and reliability.

- 👥 **Multi-User Management**: Easily oversee and administer users via our intuitive admin panel, streamlining user management processes.

Silentoplayz's avatar
Silentoplayz committed
92
93
94
95
96
97
- 🔗 **Webhook Integration**: Subscribe to new user sign-up events via webhook (compatible with Google Chat and Microsoft Teams), providing real-time notifications and automation capabilities.

- 🛡️ **Model Whitelisting**: Admins can whitelist models for users with the 'user' role, enhancing security and access control.

- 📧 **Trusted Email Authentication**: Authenticate using a trusted email header, adding an additional layer of security and authentication.

Timothy J. Baek's avatar
Timothy J. Baek committed
98
- 🔐 **Role-Based Access Control (RBAC)**: Ensure secure access with restricted permissions; only authorized individuals can access your Ollama, and exclusive model creation/pulling rights are reserved for administrators.
99

Timothy J. Baek's avatar
Timothy J. Baek committed
100
- 🔒 **Backend Reverse Proxy Support**: Bolster security through direct communication between Open WebUI backend and Ollama. This key feature eliminates the need to expose Ollama over LAN. Requests made to the '/ollama/api' route from the web UI are seamlessly redirected to Ollama from the backend, enhancing overall system security.
101

Timothy J. Baek's avatar
Timothy J. Baek committed
102
103
- 🌐🌍 **Multilingual Support**: Experience Open WebUI in your preferred language with our internationalization (i18n) support. Join us in expanding our supported languages! We're actively seeking contributors!

Timothy J. Baek's avatar
Timothy J. Baek committed
104
- 🌟 **Continuous Updates**: We are committed to improving Open WebUI with regular updates and new features.
Timothy J. Baek's avatar
Timothy J. Baek committed
105

Timothy J. Baek's avatar
Timothy J. Baek committed
106
## 🔗 Also Check Out Open WebUI Community!
Timothy Jaeryang Baek's avatar
Timothy Jaeryang Baek committed
107

Timothy J. Baek's avatar
Timothy J. Baek committed
108
Don't forget to explore our sibling project, [Open WebUI Community](https://openwebui.com/), where you can discover, download, and explore customized Modelfiles. Open WebUI Community offers a wide range of exciting possibilities for enhancing your chat interactions with Open WebUI! 🚀
Timothy Jaeryang Baek's avatar
Timothy Jaeryang Baek committed
109

Timothy J. Baek's avatar
Timothy J. Baek committed
110
111
## How to Install 🚀

Timothy J. Baek's avatar
Timothy J. Baek committed
112
113
> [!NOTE]  
> Please note that for certain Docker environments, additional configurations might be needed. If you encounter any connection issues, our detailed guide on [Open WebUI Documentation](https://docs.openwebui.com/) is ready to assist you.
Timothy J. Baek's avatar
Timothy J. Baek committed
114

Jannik S's avatar
Jannik S committed
115
### Quick Start with Docker 🐳
116

Timothy J. Baek's avatar
Timothy J. Baek committed
117
> [!WARNING]
Timothy J. Baek's avatar
Timothy J. Baek committed
118
> When using Docker to install Open WebUI, make sure to include the `-v open-webui:/app/backend/data` in your Docker command. This step is crucial as it ensures your database is properly mounted and prevents any loss of data.
Timothy J. Baek's avatar
Timothy J. Baek committed
119

Timothy J. Baek's avatar
Timothy J. Baek committed
120
121
122
> [!TIP]  
> If you wish to utilize Open WebUI with Ollama included or CUDA acceleration, we recommend utilizing our official images tagged with either `:cuda` or `:ollama`. To enable CUDA, you must install the [Nvidia CUDA container toolkit](https://docs.nvidia.com/dgx/nvidia-container-runtime-upgrade/) on your Linux/WSL system.

Timothy J. Baek's avatar
Timothy J. Baek committed
123
### Installation with Default Configuration
Timothy J. Baek's avatar
Timothy J. Baek committed
124

Timothy J. Baek's avatar
Timothy J. Baek committed
125
- **If Ollama is on your computer**, use this command:
Timothy J. Baek's avatar
Timothy J. Baek committed
126

Timothy J. Baek's avatar
Timothy J. Baek committed
127
128
129
  ```bash
  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
  ```
Timothy J. Baek's avatar
Timothy J. Baek committed
130

Timothy J. Baek's avatar
Timothy J. Baek committed
131
- **If Ollama is on a Different Server**, use this command:
Timothy J. Baek's avatar
Timothy J. Baek committed
132

Timothy J. Baek's avatar
Timothy J. Baek committed
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
  To connect to Ollama on another server, change the `OLLAMA_BASE_URL` to the server's URL:

  ```bash
  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
  ```

  - **To run Open WebUI with Nvidia GPU support**, use this command:

  ```bash
  docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
  ```

### Installation for OpenAI API Usage Only

- **If you're only using OpenAI API**, use this command:

  ```bash
  docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
  ```

### Installing Open WebUI with Bundled Ollama Support

This installation method uses a single container image that bundles Open WebUI with Ollama, allowing for a streamlined setup via a single command. Choose the appropriate command based on your hardware setup:

- **With GPU Support**:
  Utilize GPU resources by running the following command:

  ```bash
  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
  ```

- **For CPU Only**:
  If you're not using a GPU, use this command instead:

  ```bash
  docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
  ```

Both commands facilitate a built-in, hassle-free installation of both Open WebUI and Ollama, ensuring that you can get everything up and running swiftly.
Timothy J. Baek's avatar
Timothy J. Baek committed
172
173

After installation, you can access Open WebUI at [http://localhost:3000](http://localhost:3000). Enjoy! 😄
Timothy J. Baek's avatar
Timothy J. Baek committed
174

Timothy J. Baek's avatar
Timothy J. Baek committed
175
176
177
178
### Other Installation Methods

We offer various installation alternatives, including non-Docker native installation methods, Docker Compose, Kustomize, and Helm. Visit our [Open WebUI Documentation](https://docs.openwebui.com/getting-started/) or join our [Discord community](https://discord.gg/5rJgQTnV4s) for comprehensive guidance.

Timothy J. Baek's avatar
Timothy J. Baek committed
179
#### Open WebUI: Server Connection Error
180

Timothy J. Baek's avatar
Timothy J. Baek committed
181
182
183
184
185
If you're experiencing connection issues, it’s often due to the WebUI docker container not being able to reach the Ollama server at 127.0.0.1:11434 (host.docker.internal:11434) inside the container . Use the `--network=host` flag in your docker command to resolve this. Note that the port changes from 3000 to 8080, resulting in the link: `http://localhost:8080`.

**Example Docker Command**:

```bash
186
docker run -d --network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main
Timothy J. Baek's avatar
Timothy J. Baek committed
187
```
188

Timothy J. Baek's avatar
Timothy J. Baek committed
189
190
### Troubleshooting

Timothy J. Baek's avatar
Timothy J. Baek committed
191
Encountering connection issues? Our [Open WebUI Documentation](https://docs.openwebui.com/troubleshooting/) has got you covered. For further assistance and to join our vibrant community, visit the [Open WebUI Discord](https://discord.gg/5rJgQTnV4s).
Timothy J. Baek's avatar
Timothy J. Baek committed
192

Timothy J. Baek's avatar
Timothy J. Baek committed
193
### Keeping Your Docker Installation Up-to-Date
Timothy J. Baek's avatar
Timothy J. Baek committed
194

Timothy J. Baek's avatar
Timothy J. Baek committed
195
196
197
198
199
200
201
202
203
204
In case you want to update your local Docker installation to the latest version, you can do it with [Watchtower](https://containrrr.dev/watchtower/):

```bash
docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui
```

In the last part of the command, replace `open-webui` with your container name if it is different.

### Moving from Ollama WebUI to Open WebUI

Timothy J. Baek's avatar
Timothy J. Baek committed
205
Check our Migration Guide available in our [Open WebUI Documentation](https://docs.openwebui.com/migration/).
Timothy J. Baek's avatar
Timothy J. Baek committed
206

Timothy J. Baek's avatar
Timothy J. Baek committed
207
## What's Next? 🌟
Timothy J. Baek's avatar
Timothy J. Baek committed
208

Timothy J. Baek's avatar
Timothy J. Baek committed
209
Discover upcoming features on our roadmap in the [Open WebUI Documentation](https://docs.openwebui.com/roadmap/).
Timothy J. Baek's avatar
Timothy J. Baek committed
210

211
212
213
## Supporters ✨

A big shoutout to our amazing supporters who's helping to make this project possible! 🙏
Timothy J. Baek's avatar
Timothy J. Baek committed
214

215
### Platinum Sponsors 🤍
Timothy J. Baek's avatar
Timothy J. Baek committed
216

217
218
219
220
- We're looking for Sponsors!

### Acknowledgments

Timothy J. Baek's avatar
Timothy J. Baek committed
221
Special thanks to [Prof. Lawrence Kim](https://www.lhkim.com/) and [Prof. Nick Vincent](https://www.nickmvincent.com/) for their invaluable support and guidance in shaping this project into a research endeavor. Grateful for your mentorship throughout the journey! 🙌
Timothy J. Baek's avatar
Timothy J. Baek committed
222
223
224

## License 📜

Timothy J. Baek's avatar
Timothy J. Baek committed
225
This project is licensed under the [MIT License](LICENSE) - see the [LICENSE](LICENSE) file for details. 📄
Timothy J. Baek's avatar
Timothy J. Baek committed
226
227
228

## Support 💬

Timothy J. Baek's avatar
Timothy J. Baek committed
229
If you have any questions, suggestions, or need assistance, please open an issue or join our
Timothy J. Baek's avatar
Timothy J. Baek committed
230
[Open WebUI Discord community](https://discord.gg/5rJgQTnV4s) to connect with us! 🤝
Timothy J. Baek's avatar
Timothy J. Baek committed
231

Jannik S's avatar
Jannik S committed
232
233
234
235
236
237
238
239
240
241
## Star History

<a href="https://star-history.com/#open-webui/open-webui&Date">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=open-webui/open-webui&type=Date&theme=dark" />
    <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=open-webui/open-webui&type=Date" />
    <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=open-webui/open-webui&type=Date" />
  </picture>
</a>

Timothy J. Baek's avatar
Timothy J. Baek committed
242
243
---

Timothy J. Baek's avatar
Timothy J. Baek committed
244
Created by [Timothy J. Baek](https://github.com/tjbck) - Let's make Open WebUI even more amazing together! 💪