docs: add feature-section banners and overview wayfinding

Add a themed (light/dark) hero banner to every feature section, build two
honeycomb "wayfinding" overviews, and give the Features landing a bento hero.

- New banners: Extensibility, Workspace, Knowledge Base Sync, Open Terminal,
  Computer, Channels, Calendar, Notes, Chat & Conversations, Administration,
  Authentication & Access, plus the Features bento hero.
- Workspace and Chat & Conversations get overview landing pages (honeycomb hub)
  where each subpage lights only its own cell.
- Convert the Web Search, Audio and Image Generation generated-index categories
  into real landing pages (banner + DocCardList), preserving their routes.
- Fix feature-section ordering so Auth and Admin sort after the core sections.
- Refactor the Extensibility page to the real plugin types and scrub Pipelines,
  correct the extraction-engine count to 8, and minor wording fixes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Classic298
2026-06-14 01:30:22 +02:00
parent 5158a2157e
commit 62028a9436
80 changed files with 1566 additions and 33 deletions
+3
View File
@@ -8,6 +8,9 @@
.docusaurus
.cache-loader
# Local banner render scratch (not for commit)
.scratch_banner
# Misc
.DS_Store
.env.local
+1 -1
View File
@@ -1,6 +1,6 @@
{
"label": "🔧 Administration",
"position": 10,
"position": 46,
"collapsible": true,
"collapsed": true
}
+12
View File
@@ -3,8 +3,20 @@ sidebar_position: 0
title: "Administration"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 🔧 Administration
<ThemedImage
alt="Administration: the Admin Panel dashboard with usage stats and a messages-over-time chart"
sources={{
light: useBaseUrl('/images/banners/administration-light.svg'),
dark: useBaseUrl('/images/banners/administration-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Monitor usage, evaluate model quality, and communicate with your users, all from the Admin Panel.**
Open WebUI gives administrators a full operational toolkit. Track which models your team uses and how much they cost. Run blind evaluations to find the best model for your workload. Push announcements to every user with customizable banners. Wire up webhooks to get notified when users sign up or when long-running tasks finish.
@@ -1,6 +1,6 @@
{
"label": "🔐 Authentication & Access",
"position": 9,
"position": 45,
"collapsible": true,
"collapsed": true
}
@@ -3,8 +3,20 @@ sidebar_position: 0
title: "Authentication & Access"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 🔐 Authentication & Access
<ThemedImage
alt="Authentication & Access: a sign-in card with SSO providers beside a roles and access-control panel"
sources={{
light: useBaseUrl('/images/banners/authentication-access-light.svg'),
dark: useBaseUrl('/images/banners/authentication-access-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Control who gets in, what they can do, and how your instance integrates with your identity stack.**
Open WebUI is multi-user from day one. Whether you're running a personal instance or managing thousands of seats across an organization, you have full control over authentication, authorization, and programmatic access. Connect your identity provider, define granular permissions, and automate user lifecycle management, all without touching a line of code.
+12
View File
@@ -3,8 +3,20 @@ sidebar_position: 2
title: "Calendar"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 📅 Calendar
<ThemedImage
alt="Calendar: a month grid with color-coded events and a recurring weekday standup, with AI creating events from a natural-language request"
sources={{
light: useBaseUrl('/images/banners/calendar-light.svg'),
dark: useBaseUrl('/images/banners/calendar-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Schedule, track, and manage events, with AI that can plan for you.**
Calendar is a built-in scheduling feature that gives every user a personal calendar. Create events, set recurring schedules, share calendars with teammates, and let AI models autonomously create and manage events through natural conversation.
+12
View File
@@ -3,8 +3,20 @@ sidebar_position: 1000
title: "Channels"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 💬 Channels
<ThemedImage
alt="Channels: a shared #product-launch channel where people and AI models talk in one timeline, summoned with @model mentions"
sources={{
light: useBaseUrl('/images/banners/channels-light.svg'),
dark: useBaseUrl('/images/banners/channels-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Where your team and AI think together, in real time.**
Channels are persistent, shared spaces where humans and AI models participate in the same conversation. Unlike standard chats, which are personal and isolated, Channels let multiple users and multiple models interact in a single timeline. Every exchange, whether human or AI, becomes shared context that the whole team can build on.
@@ -1,8 +1,4 @@
{
"label": "Speech-to-Text & Text-to-Speech",
"position": 500,
"link": {
"type": "generated-index",
"slug": "/features/chat-conversations/audio"
}
"position": 500
}
@@ -0,0 +1,24 @@
---
title: "Speech-to-Text & Text-to-Speech"
sidebar_position: 0
slug: /features/chat-conversations/audio
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
import DocCardList from '@theme/DocCardList';
# 🎙️ Audio
<ThemedImage
alt="Chat & Conversations map with the Audio cell highlighted"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-audio-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-audio-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
Talk to Open WebUI and have it talk back. Dictate with speech-to-text and hear responses with text-to-speech, across a range of engines and voices.
<DocCardList />
@@ -3,8 +3,20 @@ sidebar_position: 1
title: "Chat Features"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# Chat Features Overview
<ThemedImage
alt="Chat & Conversations map with the Chat Features cell highlighted"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-chat-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-chat-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
Open WebUI provides a comprehensive set of chat features designed to enhance your interactions with AI models. This page provides an overview of the key chat capabilities, with links to dedicated pages for more detailed information.
## Core Chat Features
@@ -3,6 +3,18 @@ sidebar_position: 15
title: "Data Controls"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
<ThemedImage
alt="Chat & Conversations map with the Data Controls cell highlighted"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-data-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-data-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
The **Data Controls** section in Open WebUI provides tools for managing your personal data, including files, shared content, and chat history. Access it via **Settings > Data Controls**.
## Resources
@@ -3,6 +3,18 @@ sidebar_position: 1510
title: "Direct Connections"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
<ThemedImage
alt="Chat & Conversations map with the Direct Connections cell highlighted"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-connections-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-connections-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
:::warning Experimental Feature
This feature is currently **experimental** and may change or be removed in future releases.
:::
@@ -1,8 +1,4 @@
{
"label": "Create & Edit Images",
"position": 400,
"link": {
"type": "generated-index",
"slug": "/features/chat-conversations/image-generation-and-editing"
}
"position": 400
}
@@ -0,0 +1,24 @@
---
title: "Create & Edit Images"
sidebar_position: 0
slug: /features/chat-conversations/image-generation-and-editing
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
import DocCardList from '@theme/DocCardList';
# 🎨 Image Generation
<ThemedImage
alt="Chat & Conversations map with the Image Generation cell highlighted"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-images-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-images-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
Generate and edit images from a prompt without leaving the chat, using a local or hosted image model.
<DocCardList />
@@ -0,0 +1,36 @@
---
title: "Chat & Conversations"
sidebar_position: 0
slug: /features/chat-conversations
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 💬 Chat & Conversations
<ThemedImage
alt="Chat & Conversations overview: the Open WebUI core ringed by its capabilities (Chat, Documents, Web Search, Audio, Images, Memory, Data Controls and Connections)"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**The conversation is the heart of Open WebUI, and it does far more than trade messages.**
A single chat can read your documents, search the live web, speak and listen, generate images, remember what matters and call your own models. Everything below plugs into the same conversation. Start with a plain chat and switch capabilities on as you need them.
| Capability | What it does |
| :--- | :--- |
| [**💬 Chat Features**](/features/chat-conversations/chat-features) | The everyday chat: editing and regenerating messages, formatting, follow-up suggestions, autocomplete, task management and temporal awareness. |
| [**📄 Documents (RAG)**](/features/chat-conversations/rag) | Attach files and let the model retrieve the relevant passages instead of guessing, with control over extraction and chunking. |
| [**🌐 Web Search**](/features/chat-conversations/web-search) | Let the model search the live web and fetch URLs, cite its sources and save results back to a Knowledge Base. |
| [**🎙️ Audio**](/features/chat-conversations/audio) | Speak to the AI and have it speak back, with pluggable speech-to-text and text-to-speech engines and voice cloning. |
| [**🎨 Image Generation**](/features/chat-conversations/image-generation-and-editing) | Create and edit images from a prompt inline in chat via local or hosted image models. |
| [**🧠 Memory**](/features/chat-conversations/memory) | Let the AI remember facts about you across conversations for answers tailored to your context. |
| [**🔒 Data Controls**](/features/chat-conversations/data-controls) | Decide what is kept, shared and sent: chat history, temporary chats and per-request privacy. |
| [**🔗 Direct Connections**](/features/chat-conversations/direct-connections) | Point the client straight at your own OpenAI-compatible model endpoints, no server config required. |
Each capability has its own page. Most people live in a plain **Chat** and reach for the others, a document here, a web search there, as the conversation calls for them.
@@ -3,8 +3,20 @@ sidebar_position: 700
title: "Memory & Personalization"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# Memory & Personalization 🧠
<ThemedImage
alt="Chat & Conversations map with the Memory cell highlighted"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-memory-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-memory-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
:::warning Experimental Feature
The Memory system is currently in **Beta/Experimental** stage. You may encounter inconsistencies in how models store or retrieve information, and storage formats may change in future updates.
:::
@@ -3,6 +3,18 @@ sidebar_position: 1
title: "Retrieval Augmented Generation (RAG)"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
<ThemedImage
alt="Chat & Conversations map with the Documents (RAG) cell highlighted"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-documents-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-documents-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
:::warning
If you're using **Ollama**, note that it **defaults to a 2048-token context length**. This severely limits **Retrieval-Augmented Generation (RAG) performance**, especially for web search, because retrieved data may **not be used at all** or only partially processed.
@@ -1,8 +1,4 @@
{
"label": "Web Search",
"position": 600,
"link": {
"type": "generated-index",
"slug": "/features/chat-conversations/web-search"
}
"position": 600
}
@@ -0,0 +1,24 @@
---
title: "Web Search"
sidebar_position: 0
slug: /features/chat-conversations/web-search
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
import DocCardList from '@theme/DocCardList';
# 🌐 Web Search
<ThemedImage
alt="Chat & Conversations map with the Web Search cell highlighted"
sources={{
light: useBaseUrl('/images/banners/chat-conversations-websearch-light.svg'),
dark: useBaseUrl('/images/banners/chat-conversations-websearch-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
Let Open WebUI search the live web and fetch pages, then ground its answers in what it finds. Choose a provider, toggle search on per chat, and have the model cite or save what it retrieves.
<DocCardList />
+12
View File
@@ -3,8 +3,20 @@ title: "Computer (cptr)"
sidebar_position: 1
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 🖥️ Computer (cptr)
<ThemedImage
alt="Computer (cptr): the cptr workspace running on a desktop screen and a phone, the same session across devices, with optional AI"
sources={{
light: useBaseUrl('/images/banners/computer-light.svg'),
dark: useBaseUrl('/images/banners/computer-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Your computer, in a browser tab. From anywhere.**
`cptr` (short for "computer") runs on a machine you own and serves the whole thing to a browser: files, a code editor, a terminal and git, all in one tab. Open it from your phone on the train, your laptop at a cafe, or a tablet on the couch. Push a hotfix, check a deploy, stage and commit, or drop into the terminal and work the old way. Close the tab and come back tomorrow on any device; sessions survive disconnects and everything is where you left it.
@@ -3,8 +3,20 @@ sidebar_position: 0
title: "Extensibility"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 🔌 Extensibility
<ThemedImage
alt="Open WebUI Extensibility: the Pipe, Filter, Tool and Action plugin types orbiting the Open WebUI logo"
sources={{
light: useBaseUrl('/images/banners/extensibility-light.svg'),
dark: useBaseUrl('/images/banners/extensibility-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Make Open WebUI do anything with Python, HTTP, or community plugins you install in one click.**
Open WebUI ships with powerful defaults, but your workflows aren't default. Extensibility is how you close the gap: give models real-time data, enforce compliance rules, add new AI providers, or connect to any external service. Write a few lines of Python, point at an OpenAPI endpoint, or browse the community library. The platform adapts to you, not the other way around.
@@ -14,10 +26,6 @@ There are two layers, and most teams end up using both:
- **In-process Python** (Tools & Functions) runs inside Open WebUI itself with zero infrastructure and instant iteration.
- **External HTTP** (OpenAPI & MCP servers) connects to services running anywhere, from a sidecar container to a third-party SaaS.
:::warning Pipelines are legacy
You may still see **Pipelines** referenced as a third layer. It is **legacy and no longer recommended** — the heavy-processing problem it solved no longer exists (see [Run heavy or long-running work](#run-heavy-or-long-running-work) below). Use Functions, Tools, or an external tool server instead. See the [Pipelines pages](pipelines) for the full deprecation notice.
:::
---
## Which Extension Do I Need?
@@ -28,15 +36,12 @@ The names don't always map obviously to what they do. Start from what you're try
|---|---|---|
| Let the model **call an API or perform an action** (and keep a secret/API key the user and model can never read) | **[Tool](plugin/tools)** | The key lives inside the tool, server-side. The model only sees the *result*, never the credential. |
| **Add a new model or provider** to the model selector | **[Pipe Function](plugin/functions/pipe)** | A Pipe appears as a selectable "model" and handles the request however you like. |
| **Modify messages** going in or out (redact PII, inject system text, log, translate) | **[Filter Function](plugin/functions/filter)** | Filters run on every message via `inlet`/`outlet`/`stream` without touching model config. |
| Add a **button on a message** that runs custom code | **[Action Function](plugin/functions/action)** | Actions are user-triggered, per-message operations. |
| Teach the model **how to approach a task** (methodology, steps, house style) | **[Skill](/features/workspace/skills)** | Skills are instructions, not code. The model reads them; they don't execute anything. |
| Give the model **documents to retrieve from** | **[Knowledge](/features/workspace/knowledge)** | RAG over your files, attached to a model or referenced with `#`. |
| Save a **reusable prompt** behind a slash command | **[Prompt](/features/workspace/prompts)** | Templated text with typed variables; expands when you type `/name`. |
| **Modify messages** going in or out (redact PII, inject system text, log, translate) | **[Filter Function](plugin/functions/filter)** | Filters run on every message via `inlet`/`outlet`/`stream` without touching model config. |
| Connect an **existing external service** that already speaks HTTP | **[OpenAPI / MCP server](mcp)** | Point Open WebUI at the spec; endpoints become callable tools. No glue code. |
:::tip "Pipe" vs "Pipeline" — not the same thing
This is the single most common naming mix-up. A **Pipe** is a type of **Function** (in-process Python, adds a provider to the model list). A **Pipeline** is a **separate external worker container**. They share a prefix and nothing else. If you want to add a model provider, you almost always want a **Pipe Function**, not a Pipeline.
:::info Looking for Models, Knowledge, Prompts or Skills?
Those are **Workspace** building blocks, they configure a model rather than extend the platform with code. See the [**Workspace**](/features/workspace) section.
:::
---
@@ -59,7 +64,7 @@ Functions let you intercept and transform messages before they reach the model (
Open WebUI's backend is **fully async**. Long-running Tools and Functions (awaiting an external API, a slow query, a multi-step agent) do not block other users, and synchronous/CPU-bound plugin code is offloaded to a worker thread pool (see [`THREAD_POOL_SIZE`](/reference/env-configuration#thread_pool_size)) — so it doesn't stall the event loop either. In practice you can run heavy work **in-process** without the latency problems that older synchronous releases had.
The historical reason to push heavy pipes/filters onto a separate **Pipelines** worker — keeping the single synchronous event loop unblocked — no longer applies. If you genuinely need **GPU access, large or conflicting dependencies, hard isolation, or independent scaling**, run that work as an **external service behind an [OpenAPI or MCP tool server](mcp)**, not a Pipeline.
If you genuinely need **GPU access, large or conflicting dependencies, hard isolation or independent scaling**, run that work as an **external service behind an [OpenAPI or MCP tool server](mcp)**.
### Import from the community
@@ -75,8 +80,6 @@ Browse hundreds of community-built Tools and Functions from the Open WebUI Commu
| ⚙️ **Functions** | Platform extensions that add model providers (Pipes), message processing (Filters), or UI actions (Actions) |
| 🔗 **MCP support** | Native Streamable HTTP for Model Context Protocol servers |
| 🌐 **OpenAPI servers** | Auto-discover and expose tools from any OpenAPI-compatible endpoint |
| 📝 **Skills** | Markdown instruction sets that teach models how to approach specific tasks |
| ⚡ **Prompts** | Slash-command templates with typed input variables and versioning |
| 🏪 **Community library** | One-click import of community-built Tools and Functions |
---
@@ -90,7 +93,7 @@ Understanding which layer to use saves time:
| **Tools & Functions** | Inside Open WebUI process | Real-time data, filters, UI actions, new providers — including heavy/long-running work (the async backend keeps it from blocking) | Shares CPU/RAM with the main server |
| **OpenAPI / MCP** | Any HTTP endpoint | Connecting existing services, third-party APIs, and GPU / heavy-dependency / isolated workloads | Requires a running external server |
Most users start with **Tools & Functions**. They require no extra setup, have a built-in code editor, and cover the majority of use cases. (**Pipelines** is a legacy third option, no longer recommended — see the note above.)
Most users start with **Tools & Functions**. They require no extra setup, have a built-in code editor, and cover the majority of use cases.
---
+34 -1
View File
@@ -3,16 +3,31 @@ sidebar_position: 200
title: "⭐ Features"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
export const Banner = ({slug, alt}) => (
<ThemedImage
alt={alt}
sources={{ light: useBaseUrl(`/images/banners/${slug}-light.svg`), dark: useBaseUrl(`/images/banners/${slug}-dark.svg`) }}
style={{ width: '100%', margin: '0.25rem 0 1.25rem' }}
/>
);
# What You Can Do with Open WebUI
**One interface for every AI model. Private, extensible, and built for teams.**
<Banner slug="features" alt="Open WebUI overview: chat, models, knowledge, web search, images, voice and an extensible platform, all in one interface" />
Open WebUI replaces the patchwork of AI tools your team juggles daily - ChatGPT for writing, a separate app for image generation, another for document search, spreadsheets full of prompts nobody can find. Everything lives in one place: conversations, knowledge, tools, and the models that power them.
---
## 💬 Chat & Conversations
<Banner slug="chat-conversations" alt="Chat & Conversations" />
**Talk to any model, switch mid-conversation, and keep your context intact.**
Your conversations are the core of Open WebUI. Chat with Ollama, OpenAI, Anthropic, or any OpenAI-compatible provider from a single interface. Attach files, search the web, execute code, and let the AI use tools - all without leaving the chat.
@@ -37,6 +52,8 @@ Your conversations are the core of Open WebUI. Chat with Ollama, OpenAI, Anthrop
## 📚 Knowledge & RAG
<Banner slug="kbsync" alt="Knowledge and RAG" />
**Give your AI access to your documents - and let it find what matters.**
Upload files, build knowledge bases, and let the AI retrieve exactly the information it needs. Choose between vector search (RAG) for large collections or full-content injection for precision. With native function calling, models autonomously search, browse, and synthesize across your entire knowledge base.
@@ -45,7 +62,7 @@ Upload files, build knowledge bases, and let the AI retrieve exactly the informa
| :--- | :--- |
| 📄 **9 vector databases** | ChromaDB and PGVector (officially maintained), plus community options: Qdrant, Milvus, Elasticsearch, and more |
| 🔍 **Hybrid search** | BM25 + vector search with cross-encoder reranking |
| 📑 **5 extraction engines** | Tika, Docling, Azure, Mistral OCR, custom loaders |
| 📑 **8 extraction engines** | Tika, Docling, Azure, Mistral OCR, Datalab Marker, MinerU, PaddleOCR, custom loaders |
| 🤖 **Agentic retrieval** | Models search and read your documents autonomously |
| 📄 **Full context mode** | Inject entire documents - no chunking, no guessing |
| 🔄 **Knowledge Base sync** | Keep a KB current with a folder, Git repo, wiki, or storage bucket via [oikb](/features/knowledge-base-sync) |
@@ -56,6 +73,8 @@ Upload files, build knowledge bases, and let the AI retrieve exactly the informa
## 🤖 Models & Agents
<Banner slug="workspace" alt="Models and Agents" />
**Wrap any model with custom instructions, tools, and knowledge to build specialized agents.**
Create a "Python Tutor" that always uses your style guide. A "Meeting Summarizer" with your company's template. A "Code Reviewer" with your linting rules baked in. Every agent is a configuration wrapper - pick any base model, bind knowledge, tools, and a system prompt.
@@ -74,6 +93,8 @@ Create a "Python Tutor" that always uses your style guide. A "Meeting Summarizer
## 📝 Notes
<Banner slug="notes" alt="Notes" />
**Write, think, and refine with AI by your side.**
A dedicated workspace for content that lives outside of any single conversation. Draft with a rich editor, use AI to rewrite text in place, and attach notes to any chat for precise context injection - no chunking, no vector search.
@@ -91,6 +112,8 @@ A dedicated workspace for content that lives outside of any single conversation.
## 💬 Channels
<Banner slug="channels" alt="Channels" />
**Where your team and AI think together, in real time.**
Persistent, shared spaces where humans and AI models participate in the same conversation. Tag `@gpt-4o` to draft a plan, then tag `@claude` to critique it - your whole team sees both responses in one timeline.
@@ -108,6 +131,8 @@ Persistent, shared spaces where humans and AI models participate in the same con
## ⚡ Open Terminal
<Banner slug="terminal" alt="Open Terminal" />
**Give your AI a real computer to work on.**
Connect a real computing environment to Open WebUI. The AI writes code, executes it, reads the output, fixes errors, and iterates - all from the chat. Handles files, installs packages, runs servers, and returns results.
@@ -125,6 +150,8 @@ Connect a real computing environment to Open WebUI. The AI writes code, executes
## 🖥️ Computer (cptr)
<Banner slug="computer" alt="Computer (cptr)" />
**Your computer in a browser tab, from any device. A separate app, not a plugin.**
cptr serves a machine you own to the browser: files, an editor, a terminal and git, built mobile-first. You operate it; AI is an optional helper. Not to be confused with Open Terminal, which is a tool the chat AI drives.
@@ -142,6 +169,8 @@ cptr serves a machine you own to the browser: files, an editor, a terminal and g
## 🔌 Extensibility
<Banner slug="extensibility" alt="Extensibility" />
**Add any capability with Python tools, pipelines, MCP, or OpenAPI servers.**
Open WebUI is a platform, not a locked-down product. Write Python tools that run inside the chat. Connect external services via OpenAPI or MCP. Build pipelines that filter, transform, or route every message. Import community-built extensions with one click.
@@ -161,6 +190,8 @@ Open WebUI is a platform, not a locked-down product. Write Python tools that run
## 🔐 Authentication & Access
<Banner slug="authentication-access" alt="Authentication and Access" />
**Control who gets in, what they can do, and how it connects to your identity stack.**
Open WebUI is multi-user from day one. Define roles, create user groups, set per-model access, and integrate with your identity provider. From a solo install to an organization with thousands of seats.
@@ -178,6 +209,8 @@ Open WebUI is multi-user from day one. Define roles, create user groups, set per
## 🔧 Administration
<Banner slug="administration" alt="Administration" />
**Monitor usage, evaluate models, and communicate with your users.**
| | |
@@ -4,8 +4,20 @@ title: "Knowledge Base Sync (oikb)"
slug: /features/knowledge-base-sync
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 🔄 Knowledge Base Sync (oikb)
<ThemedImage
alt="Knowledge Base Sync: many different source connectors flowing through the oikb sync hub into Open WebUI Knowledge Bases"
sources={{
light: useBaseUrl('/images/banners/kbsync-light.svg'),
dark: useBaseUrl('/images/banners/kbsync-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Keep a Knowledge Base in sync with the source of truth, automatically.**
[oikb](https://github.com/open-webui/oikb) is the official companion tool for mirroring content into [Knowledge Bases](/features/workspace/knowledge). Point it at a local folder, a GitHub repo, a Confluence space, an S3 bucket or any of its 44 connectors, and it keeps the Knowledge Base current.
+12
View File
@@ -3,8 +3,20 @@ sidebar_position: 2
title: "Notes"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 📝 Notes
<ThemedImage
alt="Notes: a two-pane note editor with an AI chat sidebar, selecting text in the note and asking the AI to edit it in place"
sources={{
light: useBaseUrl('/images/banners/notes-light.svg'),
dark: useBaseUrl('/images/banners/notes-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Write, think, and refine with AI by your side.**
You search, you discover, you synthesize. Notes is where that becomes lasting knowledge. It's a dedicated workspace for content that lives outside of any single conversation: drafts, cheat sheets, research findings, project briefs. Things you build up over time, refine with AI, and inject into future chats as context.
+12
View File
@@ -3,8 +3,20 @@ sidebar_position: 3
title: "Open Terminal"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# ⚡ Open Terminal
<ThemedImage
alt="Open Terminal: the Open WebUI core driving a real terminal session in a loop, running commands and reading the output"
sources={{
light: useBaseUrl('/images/banners/terminal-light.svg'),
dark: useBaseUrl('/images/banners/terminal-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Give your AI a real computer to work on.**
Open Terminal connects a real computing environment to Open WebUI. The AI can write code, execute it, read the output, fix errors, and iterate, all without leaving the chat. It handles files, installs packages, runs servers, and returns results directly to you. Run it in a Docker container for isolation, or bare metal for direct access to your machine.
+32
View File
@@ -0,0 +1,32 @@
---
title: "Workspace"
sidebar_position: 0
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 🧠 Workspace
<ThemedImage
alt="Workspace: the five building blocks (Models, Knowledge, Prompts, Skills, Tools) composing into the Open WebUI core"
sources={{
light: useBaseUrl('/images/banners/workspace-light.svg'),
dark: useBaseUrl('/images/banners/workspace-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Compose your own AI from five building blocks.**
The Workspace is where you turn a raw model into something tailored to your work. Bind knowledge, attach tools, set a system prompt, teach it skills and save the result as a reusable model. Every piece is optional and they stack: a model with your handbook attached, your house style as a prompt and the right tools wired in.
| Building block | What it is for |
| :--- | :--- |
| [**Models**](/features/workspace/models) | Wrap a base model with a system prompt, parameters, knowledge and tools, then save it as a reusable preset in the model picker. |
| [**Knowledge**](/features/workspace/knowledge) | Upload documents and build collections the AI retrieves from (RAG), so it answers from your sources instead of guessing. |
| [**Prompts**](/features/workspace/prompts) | Save reusable prompt templates with typed variables, callable in any chat with a `/` slash command. |
| [**Skills**](/features/workspace/skills) | Markdown instruction sets that teach a model how to approach a task (methodology, steps, house rules), loaded on demand. |
| [**Tools** ↗](/features/extensibility/plugin/tools) | Give models real abilities they can call: APIs, code, the web. Tools are documented under [**Plugins & Extensibility**](/features/extensibility/plugin/tools), not here. |
Each has its own page, so start anywhere. Most people begin with a custom **Model** and add the other pieces as they need them.
@@ -3,8 +3,20 @@ sidebar_position: 4
title: "Knowledge"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 📚 Knowledge
<ThemedImage
alt="Workspace map with the Knowledge cell highlighted: Models, Knowledge, Prompts, Skills and Tools around the Open WebUI core"
sources={{
light: useBaseUrl('/images/banners/workspace-knowledge-light.svg'),
dark: useBaseUrl('/images/banners/workspace-knowledge-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Give your AI access to your documents and let it find what matters.**
Knowledge is where you store the files and collections that your AI can search, read, and reason over. Upload PDFs, spreadsheets, code, or any text-based document. Build collections around projects, teams, or topics. When a model needs an answer, it pulls from your knowledge base instead of guessing.
@@ -39,7 +51,7 @@ Attach specific knowledge bases to a model so it only searches what's relevant.
| :--- | :--- |
| 📄 **9 vector databases** | ChromaDB and PGVector (officially maintained), plus community options: Qdrant, Milvus, OpenSearch, Elasticsearch, and more |
| 🔍 **Hybrid search** | BM25 keyword search + vector search with cross-encoder reranking |
| 📑 **5 extraction engines** | Tika, Docling, Azure, Mistral OCR, custom loaders |
| 📑 **8 extraction engines** | Tika, Docling, Azure, Mistral OCR, Datalab Marker, MinerU, PaddleOCR, custom loaders |
| 🤖 **Agentic retrieval** | Models browse, search, and read your documents autonomously |
| 📄 **Full context mode** | Inject entire documents with no chunking |
| 🗂️ **Nested directories** | Organize files into subdirectories with drag-and-drop reordering |
+12
View File
@@ -4,8 +4,20 @@ title: "Models"
sidebar_label: "Models"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 🤖 Models
<ThemedImage
alt="Workspace map with the Models cell highlighted: Models, Knowledge, Prompts, Skills and Tools around the Open WebUI core"
sources={{
light: useBaseUrl('/images/banners/workspace-models-light.svg'),
dark: useBaseUrl('/images/banners/workspace-models-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Wrap any model with custom instructions, tools, and knowledge to build specialized agents.**
The Models workspace lets you create configuration presets that sit on top of any base model. Pick GPT-4o, Claude, Llama 3, or anything else connected to Open WebUI, then bind a system prompt, knowledge bases, tools, skills, and parameter overrides to it. The result is a purpose-built agent that behaves exactly the way you need without modifying the underlying model.
+12
View File
@@ -3,8 +3,20 @@ sidebar_position: 3
title: "Prompts"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 📝 Prompts
<ThemedImage
alt="Workspace map with the Prompts cell highlighted: Models, Knowledge, Prompts, Skills and Tools around the Open WebUI core"
sources={{
light: useBaseUrl('/images/banners/workspace-prompts-light.svg'),
dark: useBaseUrl('/images/banners/workspace-prompts-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Reusable slash commands that turn complex instructions into one-click forms.**
Prompts let you save frequently used instructions as slash commands. Type `/summarize` in any chat and the full prompt fires instantly. Add custom input variables and users get a popup form with dropdowns, date pickers, and text fields before the prompt is sent. No one needs to remember the exact wording or structure.
+12
View File
@@ -4,8 +4,20 @@ title: "Skills"
sidebar_label: "Skills"
---
import ThemedImage from '@theme/ThemedImage';
import useBaseUrl from '@docusaurus/useBaseUrl';
# 🧩 Skills
<ThemedImage
alt="Workspace map with the Skills cell highlighted: Models, Knowledge, Prompts, Skills and Tools around the Open WebUI core"
sources={{
light: useBaseUrl('/images/banners/workspace-skills-light.svg'),
dark: useBaseUrl('/images/banners/workspace-skills-dark.svg'),
}}
style={{ width: '100%', margin: '0.25rem 0 1.75rem' }}
/>
**Teach your AI how to approach a task with plain-text instructions.**
Skills are reusable, markdown-based instruction sets that you attach to models or invoke on-the-fly in chat. Unlike [Tools](/features/extensibility/plugin/tools) (executable Python scripts), Skills are plain-text instructions: code review guidelines, writing style rules, troubleshooting playbooks, data analysis workflows. The model reads them and follows them.
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 61 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 61 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 48 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 47 KiB