diff --git a/docs/contributing.mdx b/docs/contributing.mdx index d8d7392b5a..5e4111b784 100644 --- a/docs/contributing.mdx +++ b/docs/contributing.mdx @@ -29,7 +29,7 @@ Looking to contribute? Great! Here's how you can help: docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:dev ``` -**Keep it updated regularly** — the dev branch moves fast! If Docker doesn't work for you, the [Local Development Guide](/getting-started/advanced-topics/development) is another great option. +**Keep it updated regularly** — the dev branch moves fast! If Docker doesn't work for you, the [Local Development Guide](/getting-started/development) is another great option. By testing dev builds, you help us catch bugs before stable releases. Report issues on [GitHub](https://github.com/open-webui/open-webui/issues) with clear reproduction steps. **We cannot deliver high-quality releases without community testing.** diff --git a/docs/faq.mdx b/docs/faq.mdx index 81467d59d9..8d3ffde1c7 100644 --- a/docs/faq.mdx +++ b/docs/faq.mdx @@ -158,7 +158,7 @@ docker run -d -p 3000:8080 -e HF_ENDPOINT=https://hf-mirror.com/ --add-host=host ### Q: Why are my reasoning model's thinking blocks showing as raw text instead of being hidden? -**A:** This happens if the model's thinking tags are not recognized by Open WebUI. You can customize the tags in the model's Advanced Parameters. For more details, see the **[Reasoning & Thinking Models](/features/chat-features/reasoning-models)** guide. +**A:** This happens if the model's thinking tags are not recognized by Open WebUI. You can customize the tags in the model's Advanced Parameters. For more details, see the **[Reasoning & Thinking Models](/features/chat-conversations/chat-features/reasoning-models)** guide. ### Q: RAG with Open WebUI is very bad or not working at all. Why? @@ -193,7 +193,7 @@ def wait_for_processing(token, file_id): time.sleep(2) # Wait before checking again ``` -For complete workflow examples, see the **[API Endpoints documentation](/getting-started/api-endpoints#checking-file-processing-status)** and the **[RAG Troubleshooting guide](/troubleshooting/rag#9-api-file-upload-the-content-provided-is-empty-error)**. +For complete workflow examples, see the **[API Endpoints documentation](/reference/api-endpoints#checking-file-processing-status)** and the **[RAG Troubleshooting guide](/troubleshooting/rag#9-api-file-upload-the-content-provided-is-empty-error)**. ### Q: I asked the model what it is and it gave the wrong answer. Is Open WebUI routing to the wrong model? @@ -249,7 +249,7 @@ For more optimization tips, see the **[Performance Tips Guide](troubleshooting/p ### Q: Why doesn't Open WebUI natively support [Provider X]'s proprietary API? -**A:** Open WebUI is highly modular with a plugin system including tools, functions, and most notably **[pipes](/features/plugin/functions/pipe)**. These modular pipes allow you to add support for virtually any provider you want—you can build your own or choose from the many [community-built](https://openwebui.com/) and usually well-maintained ones already available. +**A:** Open WebUI is highly modular with a plugin system including tools, functions, and most notably **[pipes](/features/extensibility/plugin/functions/pipe)**. These modular pipes allow you to add support for virtually any provider you want—you can build your own or choose from the many [community-built](https://openwebui.com/) and usually well-maintained ones already available. That said, Open WebUI's core is built around **universal protocols**, not specific providers. Our stance is to support standard, widely-adopted APIs like the **OpenAI Chat Completions protocol**. diff --git a/docs/features/access-security/_category_.json b/docs/features/access-security/_category_.json new file mode 100644 index 0000000000..cadd61a9ad --- /dev/null +++ b/docs/features/access-security/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "🔐 Admin & Security", + "position": 10, + "collapsible": true, + "collapsed": true +} diff --git a/docs/features/analytics/index.mdx b/docs/features/access-security/analytics/index.mdx similarity index 96% rename from docs/features/analytics/index.mdx rename to docs/features/access-security/analytics/index.mdx index 3a23fad9fc..1e9cfaac77 100644 --- a/docs/features/analytics/index.mdx +++ b/docs/features/access-security/analytics/index.mdx @@ -48,7 +48,7 @@ Your selected time period is **automatically saved** and persists across browser ### Group Filtering -If you have [user groups](/features/rbac/groups) configured, the Analytics dashboard allows filtering by group: +If you have [user groups](/features/access-security/rbac/groups) configured, the Analytics dashboard allows filtering by group: - Use the **group dropdown** next to the time period selector - Select a specific group to view analytics **only for users in that group** @@ -231,7 +231,7 @@ Example for GPT-4: - Compare **message counts** across models to see adoption rates - Check **token efficiency** (tokens per message) to identify verbose models - Monitor **trends** in the timeline chart after introducing new models -- Combine with the [Evaluation feature](../evaluation/index.mdx) for quality insights +- Combine with the [Evaluation feature](/features/access-security/evaluation/) for quality insights ### 3. Cost Management @@ -402,6 +402,6 @@ Whether you're managing a personal instance or a large organizational deployment ## Related Features -- [**Evaluation**](../evaluation/index.mdx) - Measure model quality through user feedback +- [**Evaluation**](/features/access-security/evaluation/) - Measure model quality through user feedback - [**RBAC**](../rbac/index.mdx) - Control access to models and features per user -- [**Data Controls**](../data-controls/index.mdx) - Manage chat history and exports +- [**Data Controls**](/features/chat-conversations/data-controls/) - Manage chat history and exports diff --git a/docs/features/auth/_category_.json b/docs/features/access-security/auth/_category_.json similarity index 100% rename from docs/features/auth/_category_.json rename to docs/features/access-security/auth/_category_.json diff --git a/docs/features/auth/ldap.mdx b/docs/features/access-security/auth/ldap.mdx similarity index 100% rename from docs/features/auth/ldap.mdx rename to docs/features/access-security/auth/ldap.mdx diff --git a/docs/features/auth/scim.mdx b/docs/features/access-security/auth/scim.mdx similarity index 74% rename from docs/features/auth/scim.mdx rename to docs/features/access-security/auth/scim.mdx index db6a4cb5fe..293f1a1c7b 100644 --- a/docs/features/auth/scim.mdx +++ b/docs/features/access-security/auth/scim.mdx @@ -25,6 +25,7 @@ Configure SCIM by setting these environment variables: - **`SCIM_ENABLED`**: Set to `true` to enable SCIM support (default: `false`) - **`SCIM_TOKEN`**: The bearer token for SCIM authentication (required when SCIM is enabled) +- **`SCIM_AUTH_PROVIDER`**: The OAuth provider name to associate with SCIM `externalId` values (e.g., `microsoft`, `oidc`). Required for `externalId` storage and account linking. :::warning @@ -46,6 +47,9 @@ export SCIM_ENABLED=true # Set a secure token (replace with your own generated token) export SCIM_TOKEN="your-secure-token-here" + +# Set the OAuth provider name for externalId linking +export SCIM_AUTH_PROVIDER="microsoft" ``` ## SCIM API Configuration @@ -88,9 +92,9 @@ Open WebUI's SCIM implementation supports the following operations: - `userName`: The user's email address (required, unique) - `name.givenName`: First name - `name.familyName`: Last name -- `emails`: Email addresses +- `emails`: Email addresses (when multiple are provided, the entry marked `primary: true` is used) - `active`: User status (active/inactive) -- `externalId`: External identifier from the identity provider +- `externalId`: External identifier from the identity provider (stored per-provider in the user's `scim` JSON field, see [externalId and Account Linking](#externalid-and-account-linking)) #### Group Attributes - `displayName`: Group name (required) @@ -103,6 +107,7 @@ The SCIM API supports filtering for both users and groups: ``` GET /api/v1/scim/v2/Users?filter=userName eq "user@example.com" +GET /api/v1/scim/v2/Users?filter=externalId eq "abc-123" GET /api/v1/scim/v2/Groups?filter=displayName eq "Engineering" ``` @@ -118,6 +123,29 @@ Supported filter operators: - `lt`: Less than - `le`: Less than or equal +## externalId and Account Linking + +When `SCIM_AUTH_PROVIDER` is configured, Open WebUI stores `externalId` values in a per-provider structure within the user's `scim` JSON field: + +```json +{ + "microsoft": { "external_id": "abc-123" }, + "okta": { "external_id": "def-456" } +} +``` + +This enables several behaviors: + +- **User lookup by externalId**: When an identity provider sends a `filter=externalId eq "..."` request, Open WebUI searches the `scim` field for a matching entry under the configured provider. +- **OAuth fallback**: If no user is found by `externalId`, Open WebUI falls back to matching against OAuth `sub` values, automatically linking SCIM-provisioned accounts with existing OAuth-authenticated users. +- **Create and update**: When creating or updating users via SCIM, the `externalId` is stored in the `scim` field and returned in subsequent responses. + +:::warning + +If `SCIM_AUTH_PROVIDER` is not set while SCIM is enabled, any operation that requires `externalId` (creation, lookup, or update) will return a `500` error. A warning is also logged on startup to alert you. + +::: + ## Troubleshooting ### Common Issues @@ -133,7 +161,10 @@ Supported filter operators: 3. **User Creation Failures** - Ensure the `userName` field contains a valid email address - - Check that the email is not already in use + - Check that the email or `externalId` is not already in use + +4. **500 Error on externalId Operations** + - Verify that `SCIM_AUTH_PROVIDER` is set to the correct OAuth provider name ### Testing SCIM Endpoints @@ -156,6 +187,7 @@ curl -X POST \ -d '{ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"], "userName": "test@example.com", + "externalId": "idp-user-id-123", "displayName": "Test User", "name": { "givenName": "Test", @@ -191,4 +223,4 @@ SCIM works best when combined with SSO (Single Sign-On). A typical setup include This ensures users are automatically created and can immediately authenticate using their corporate credentials. -For SSO configuration, see the [SSO documentation](https://docs.openwebui.com/features/auth/sso/). +For SSO configuration, see the [SSO documentation](https://docs.openwebui.com/features/access-security/auth/sso/). diff --git a/docs/features/auth/sso/index.mdx b/docs/features/access-security/auth/sso/index.mdx similarity index 97% rename from docs/features/auth/sso/index.mdx rename to docs/features/access-security/auth/sso/index.mdx index ade613f6dc..f8c7bf6953 100644 --- a/docs/features/auth/sso/index.mdx +++ b/docs/features/access-security/auth/sso/index.mdx @@ -5,7 +5,7 @@ title: "SSO (OAuth, OIDC, Trusted Header)" :::info -For more information about all environment variables, check out the [environment variable docs page](https://docs.openwebui.com/getting-started/env-configuration/). +For more information about all environment variables, check out the [environment variable docs page](https://docs.openwebui.com/reference/env-configuration/). It is highly recommended to check the environment variable page, to get more details about how to set the variable and what values are expected. ::: @@ -21,7 +21,7 @@ Check out our [troubleshooting guide](https://docs.openwebui.com/troubleshooting Right now, you can only configure **one** OpenID Connect (OIDC) provider at a time via `OPENID_PROVIDER_URL`. You cannot have Microsoft **and** Google as OIDC providers simultaneously. -*However, there is a community workaround for using both! See our [Dual OAuth Tutorial](/tutorials/tips/dual-oauth-configuration) for more details.* +*However, there is a community workaround for using both! See our [Dual OAuth Tutorial](/tutorials/integrations/auth-identity/dual-oauth-configuration) for more details.* ::: ## OAuth Configuration Overview @@ -51,7 +51,7 @@ You cannot have Microsoft **and** Google as OIDC providers simultaneously. - Set `ENABLE_OAUTH_PERSISTENT_CONFIG=false` to always read from environment variables - Update settings through the Admin Panel instead of environment variables -3. **Required Variables**: Always verify you're using the exact variable names from the [environment configuration documentation](https://docs.openwebui.com/getting-started/env-configuration/). Common mistakes include using non-existent variables like `OIDC_CONFIG`. +3. **Required Variables**: Always verify you're using the exact variable names from the [environment configuration documentation](https://docs.openwebui.com/reference/env-configuration/). Common mistakes include using non-existent variables like `OIDC_CONFIG`. ::: @@ -68,7 +68,7 @@ To solve issues related to large tokens (e.g., with AD FS group claims exceeding This system is enabled by default but can be fine-tuned with the environment variables detailed above. -For more information, check out the [environment variable docs page](https://docs.openwebui.com/getting-started/env-configuration/). +For more information, check out the [environment variable docs page](https://docs.openwebui.com/reference/env-configuration/). ### OAuth Token Exchange for External Applications @@ -76,7 +76,7 @@ Open WebUI also supports **OAuth Token Exchange**, allowing external application **Example use case:** A CLI tool that has obtained an OAuth access token from your identity provider can exchange it for an Open WebUI token to make API calls to Open WebUI. -To enable this feature, set `ENABLE_OAUTH_TOKEN_EXCHANGE=true`. See the [`ENABLE_OAUTH_TOKEN_EXCHANGE`](/getting-started/env-configuration#enable_oauth_token_exchange) environment variable documentation for details on usage, request/response examples, and security considerations. +To enable this feature, set `ENABLE_OAUTH_TOKEN_EXCHANGE=true`. See the [`ENABLE_OAUTH_TOKEN_EXCHANGE`](/reference/env-configuration#enable_oauth_token_exchange) environment variable documentation for details on usage, request/response examples, and security considerations. ### Google @@ -174,7 +174,7 @@ The following environment variables are used: ::: :::tip Community Workaround: Multi-Provider OAuth -If you need to support both Microsoft and Google simultaneously, check out our **[Dual OAuth Configuration Tutorial](/tutorials/tips/dual-oauth-configuration)**. +If you need to support both Microsoft and Google simultaneously, check out our **[Dual OAuth Configuration Tutorial](/tutorials/integrations/auth-identity/dual-oauth-configuration)**. ::: ### OAuth Role Management diff --git a/docs/features/auth/sso/keycloak.mdx b/docs/features/access-security/auth/sso/keycloak.mdx similarity index 100% rename from docs/features/auth/sso/keycloak.mdx rename to docs/features/access-security/auth/sso/keycloak.mdx diff --git a/docs/features/evaluation/index.mdx b/docs/features/access-security/evaluation/index.mdx similarity index 100% rename from docs/features/evaluation/index.mdx rename to docs/features/access-security/evaluation/index.mdx diff --git a/docs/features/interface/_category_.json b/docs/features/access-security/interface/_category_.json similarity index 100% rename from docs/features/interface/_category_.json rename to docs/features/access-security/interface/_category_.json diff --git a/docs/features/interface/banners.md b/docs/features/access-security/interface/banners.md similarity index 98% rename from docs/features/interface/banners.md rename to docs/features/access-security/interface/banners.md index 2ce4e403e5..c6de17b89f 100644 --- a/docs/features/interface/banners.md +++ b/docs/features/access-security/interface/banners.md @@ -1,77 +1,77 @@ ---- -sidebar_position: 13 -title: "Customizable Banners" ---- - -## Overview - -Open WebUI allows administrators to display custom banners to logged-in users. This feature is useful for making announcements, displaying system-wide alerts, or sharing important information. Banners are persistent and can be configured to be dismissible by users. - -You can configure banners in two ways: through the Admin Panel for a user-friendly experience, or via environment variables for automated or GitOps-style deployments. - -## Configuring Banners - -### Option 1: Using the Admin Panel - -This is the most straightforward way to manage banners. - -1. **Log in** to your Open WebUI instance as an administrator. -2. Navigate to the **Admin Panel** > **Settings** > **Interface**. -3. Locate the **"Banners"** section. -4. Click the **+** icon to add a new banner. - -You can then configure the following options for each banner: - -- **Type:** The color and style of the banner. Choose from: - - `info` (Blue) - - `success` (Green) - - `warning` (Yellow) - - `error` (Red) -- **Title:** The main heading of the banner. -- **Content:** The main text or message of the banner. -- **Dismissible:** If toggled on, users can close the banner. Dismissed banners are stored in the user's browser, so they will not reappear for that user unless their browser cache is cleared. If toggled off, the banner will always be visible. - -5. Click **"Save"** at the bottom of the page to apply your changes. - -### Option 2: Using Environment Variables - -For automated deployments, you can configure banners using the `WEBUI_BANNERS` environment variable. The variable should be a JSON string representing a list of banner objects. - -**Environment Variable:** - -- `WEBUI_BANNERS` - - **Type:** `string` (containing a JSON list of objects) - - **Default:** `[]` - - **Description:** A list of banner objects to be displayed to users. - -**Example:** - -Here is an example of how to set the `WEBUI_BANNERS` variable in a `docker-compose.yml` file: - -```yaml -services: - open-webui: - image: ghcr.io/open-webui/open-webui:main - environment: - - 'WEBUI_BANNERS=[{"id":"update-2024-07-26","type":"info","title":"System Update","content":"A system update is scheduled for this Friday at 10 PM. Expect brief downtime.","dismissible":true},{"id":"policy-reminder","type":"warning","title":"Policy Reminder","content":"Please remember to adhere to the company-wide usage policy.","dismissible":false}]' -``` - -## Banner Object Properties - -Each banner object in the JSON list has the following properties: - -- `id` (string, required): A unique identifier for the banner. This is used to track which banners a user has dismissed. -- `type` (string, required): The style of the banner. Must be one of `info`, `success`, `warning`, or `error`. -- `title` (string, optional): The title text displayed on the banner. -- `content` (string, required): The main message of the banner. -- `dismissible` (boolean, required): Determines if the user can close the banner. `true` means it can be dismissed; `false` means it cannot. -- `timestamp` (integer, required): **Note:** While this field is present in the configuration, it is not currently used by the frontend. The timestamp does not affect whether a banner is displayed or not. - -## Troubleshooting - -- **Banner Not Appearing:** - - Ensure the JSON format for the `WEBUI_BANNERS` environment variable is correct. It must be a valid JSON array of objects. - - Check the Open WebUI server logs for any errors related to parsing the `WEBUI_BANNERS` variable. -- **Banner Cannot Be Dismissed:** - - Verify that the `dismissible` property for the banner is set to `true` in your configuration. - - If a banner is not dismissible, it is by design and cannot be closed by the user. +--- +sidebar_position: 13 +title: "Customizable Banners" +--- + +## Overview + +Open WebUI allows administrators to display custom banners to logged-in users. This feature is useful for making announcements, displaying system-wide alerts, or sharing important information. Banners are persistent and can be configured to be dismissible by users. + +You can configure banners in two ways: through the Admin Panel for a user-friendly experience, or via environment variables for automated or GitOps-style deployments. + +## Configuring Banners + +### Option 1: Using the Admin Panel + +This is the most straightforward way to manage banners. + +1. **Log in** to your Open WebUI instance as an administrator. +2. Navigate to the **Admin Panel** > **Settings** > **Interface**. +3. Locate the **"Banners"** section. +4. Click the **+** icon to add a new banner. + +You can then configure the following options for each banner: + +- **Type:** The color and style of the banner. Choose from: + - `info` (Blue) + - `success` (Green) + - `warning` (Yellow) + - `error` (Red) +- **Title:** The main heading of the banner. +- **Content:** The main text or message of the banner. +- **Dismissible:** If toggled on, users can close the banner. Dismissed banners are stored in the user's browser, so they will not reappear for that user unless their browser cache is cleared. If toggled off, the banner will always be visible. + +5. Click **"Save"** at the bottom of the page to apply your changes. + +### Option 2: Using Environment Variables + +For automated deployments, you can configure banners using the `WEBUI_BANNERS` environment variable. The variable should be a JSON string representing a list of banner objects. + +**Environment Variable:** + +- `WEBUI_BANNERS` + - **Type:** `string` (containing a JSON list of objects) + - **Default:** `[]` + - **Description:** A list of banner objects to be displayed to users. + +**Example:** + +Here is an example of how to set the `WEBUI_BANNERS` variable in a `docker-compose.yml` file: + +```yaml +services: + open-webui: + image: ghcr.io/open-webui/open-webui:main + environment: + - 'WEBUI_BANNERS=[{"id":"update-2024-07-26","type":"info","title":"System Update","content":"A system update is scheduled for this Friday at 10 PM. Expect brief downtime.","dismissible":true},{"id":"policy-reminder","type":"warning","title":"Policy Reminder","content":"Please remember to adhere to the company-wide usage policy.","dismissible":false}]' +``` + +## Banner Object Properties + +Each banner object in the JSON list has the following properties: + +- `id` (string, required): A unique identifier for the banner. This is used to track which banners a user has dismissed. +- `type` (string, required): The style of the banner. Must be one of `info`, `success`, `warning`, or `error`. +- `title` (string, optional): The title text displayed on the banner. +- `content` (string, required): The main message of the banner. +- `dismissible` (boolean, required): Determines if the user can close the banner. `true` means it can be dismissed; `false` means it cannot. +- `timestamp` (integer, required): **Note:** While this field is present in the configuration, it is not currently used by the frontend. The timestamp does not affect whether a banner is displayed or not. + +## Troubleshooting + +- **Banner Not Appearing:** + - Ensure the JSON format for the `WEBUI_BANNERS` environment variable is correct. It must be a valid JSON array of objects. + - Check the Open WebUI server logs for any errors related to parsing the `WEBUI_BANNERS` variable. +- **Banner Cannot Be Dismissed:** + - Verify that the `dismissible` property for the banner is set to `true` in your configuration. + - If a banner is not dismissible, it is by design and cannot be closed by the user. diff --git a/docs/features/interface/webhooks.md b/docs/features/access-security/interface/webhooks.md similarity index 96% rename from docs/features/interface/webhooks.md rename to docs/features/access-security/interface/webhooks.md index b58e2eb0df..86c0a93558 100644 --- a/docs/features/interface/webhooks.md +++ b/docs/features/access-security/interface/webhooks.md @@ -1,247 +1,247 @@ ---- -sidebar_position: 17 -title: "Webhook Integrations" ---- - -## Overview - -Open WebUI offers three distinct webhook integrations to help you stay informed about events happening within your instance and enable external integrations. These webhooks allow you to receive automated notifications in external services like Discord, Slack, or any other application that supports incoming webhooks, as well as post messages from external services into Open WebUI channels. - -There are three types of webhooks available: - -1. **Admin Webhook:** A system-wide webhook that notifies administrators about new user sign-ups. -2. **User Webhook:** A personal webhook that notifies individual users when a response to their chat is ready, especially useful for long-running tasks. -3. **Channel Webhooks:** Incoming webhooks that allow external services to post messages into specific channels. - -## 1. Admin Webhook: New User Notifications - -This webhook is designed for administrators to monitor new user registration on the Open WebUI instance. - -### Use Case - -- **User Registration Tracking:** Receive a real-time notification in a dedicated Slack or Discord channel whenever a new user creates an account. This helps you keep track of your user base and welcome new members. - -### Configuration - -You can configure the admin webhook in two ways: - -#### Option 1: Through the Admin Panel - -1. Log in as an administrator. -2. Navigate to **Admin Panel > Settings > General**. -3. Locate the **"Webhook URL"** field. -4. Enter the webhook URL provided by your external service (e.g., Discord, Slack). -5. Click **"Save"**. - -#### Option 2: Through Environment Variables - -You can also set the webhook URL using the `WEBHOOK_URL` environment variable. For more details, refer to the [Environment Variable Configuration](https://docs.openwebui.com/getting-started/env-configuration/#webhook_url) documentation. - -### Payload Format - -When a new user signs up, Open WebUI will send a `POST` request to the configured URL with a JSON payload containing the new user's details. - -**Payload Example:** - -```json -{ - "event": "new_user", - "user": { - "email": "tim@example.com", - "name": "Tim" - } -} -``` - -## 2. User Webhook: Chat Response Notifications - -This webhook allows individual users to receive a notification when a model has finished generating a response to their prompt. It's particularly useful for long-running tasks where you might navigate away from the Open WebUI tab. - -### Use Case - -- **Long-Running Task Alerts:** If you submit a complex prompt that takes several minutes to process, you can close the browser tab and still be notified the moment the response is ready. This allows you to work on other tasks without having to constantly check the Open WebUI interface. - -### How it Works - -The notification is only sent if you are **not actively using the WebUI**. If you have the tab open and focused, the webhook will not be triggered, preventing unnecessary notifications. - -### Enabling/Disabling User Webhooks - -User webhooks are enabled by default. However, administrators can disable this feature for all users to prevent external requests or for security reasons. - -This can be done in two ways: - -1. **Directly in the Admin Panel:** - - Go to **Admin Panel > Settings > General > Features**. - - Toggle the switch for **"User Webhooks"**. - -2. **Using Environment Variables:** - - Set the environment variable `ENABLE_USER_WEBHOOKS` to `False` in your backend configuration. This will globally disable the feature and hide the setting from user profiles. - -### Configuration - -1. Click on your profile picture in the bottom-left corner to open the settings menu. -2. Navigate to **Settings > Account**. -3. Locate the **"Notification Webhook"** field. -4. Enter your personal webhook URL. -5. Click **"Save"**. - -### Payload Format - -When a chat response is ready and you are inactive, Open WebUI will send a `POST` request to your webhook URL with a JSON payload containing details about the chat. - -**Payload Example:** - -```json -{ - "event": "chat_response", - "chat": { - "id": "abc-123-def-456", - "title": "My Awesome Conversation", - "last_message": "This is the prompt I submitted." - } -} -``` - -## 3. Channel Webhooks: External Message Integration - -Channel Webhooks allow external services, automation tools, or scripts to post messages directly into Open WebUI channels. This enables seamless integration with monitoring systems, CI/CD pipelines, notification services, or any custom automation. - -### Use Cases - -- **System Monitoring:** Post alerts from monitoring tools (Prometheus, Grafana, Nagios) directly into team channels. -- **CI/CD Integration:** Send build status notifications from GitHub Actions, GitLab CI, or Jenkins to development channels. -- **Custom Automation:** Integrate with n8n, Zapier, or custom scripts to automate message posting. -- **External Notifications:** Forward notifications from external services into your Open WebUI workspace. - -### How it Works - -Each channel can have multiple webhooks. Each webhook has: -- A unique **webhook URL** that external services can POST to -- A **display name** shown as the message author -- An optional **profile image** to visually identify the webhook source -- A **last used timestamp** to track webhook activity - -Messages posted via webhooks appear in the channel with the webhook's identity, making it clear they came from an external source rather than a user. - -### Managing Channel Webhooks - -Only **channel managers** and **administrators** can create and manage webhooks for a channel. - -#### Creating a Webhook - -1. Navigate to the channel where you want to add a webhook. -2. Click the channel menu (⋮) and select **Edit Channel**. -3. In the channel settings modal, locate the **Webhooks** section. -4. Click **Manage** to open the Webhooks modal. -5. Click **New Webhook** to create a new webhook. -6. Configure the webhook: - - **Name:** The display name that will appear as the message author - - **Profile Image:** (Optional) Upload an image to represent this webhook -7. Click **Save** to create the webhook. -8. Copy the generated webhook URL using the **Copy URL** button. - -#### Webhook URL Format - -``` -{WEBUI_API_BASE_URL}/channels/webhooks/{webhook_id}/{token} -``` - -This URL is unique and contains an authentication token. Anyone with this URL can post messages to the channel, so treat it securely. - -#### Updating a Webhook - -1. Open the **Webhooks** modal from the channel settings. -2. Click on the webhook you want to edit to expand it. -3. Modify the **Name** or **Profile Image** as needed. -4. Click **Save** to apply changes. - -The webhook URL remains the same when you update the name or image. Messages posted after the update will show the new name/image, but existing messages retain the webhook identity from when they were posted. - -#### Deleting a Webhook - -1. Open the **Webhooks** modal from the channel settings. -2. Click on the webhook you want to delete to expand it. -3. Click the **Delete** (trash) icon. -4. Confirm the deletion. - -Once deleted, the webhook URL will stop working immediately. Messages previously posted by the webhook will remain in the channel but show "Deleted Webhook" as the author. - -### Posting Messages via Webhook - -To post a message from an external service, send a `POST` request to the webhook URL with a JSON payload. - -#### Request Format - -**Endpoint:** `POST {webhook_url}` -**Headers:** `Content-Type: application/json` -**Body:** - -```json -{ - "content": "Your message content here" -} -``` - -#### Example: Using cURL - -```bash -curl -X POST "https://your-instance.com/api/channels/webhooks/{webhook_id}/{token}" \ - -H "Content-Type: application/json" \ - -d '{"content": "Deployment to production completed successfully! 🚀"}' -``` - -#### Example: Using Python - -```python -import requests - -webhook_url = "https://your-instance.com/api/channels/webhooks/{webhook_id}/{token}" -message = { - "content": "Build #1234 failed: Unit tests did not pass." -} - -response = requests.post(webhook_url, json=message) -print(response.json()) -``` - -#### Response Format - -On success, the webhook will return: - -```json -{ - "success": true, - "message_id": "abc-123-def-456" -} -``` - -### Security Considerations - -- **URL Protection:** Webhook URLs contain authentication tokens. Keep them secure and don't expose them in public repositories or logs. -- **Channel Access:** Anyone with the webhook URL can post to the channel. Only share the URL with trusted services. -- **Message Content:** Validate and sanitize message content on the sending side to prevent injection attacks. -- **Regeneration:** If a webhook URL is compromised, delete the webhook and create a new one. - -### Webhook Identity - -Messages posted via webhooks have a special identity system: -- They appear with the webhook's **name** and **profile image** -- The user role is marked as **"webhook"** to distinguish from regular users -- If a webhook is deleted, its messages remain visible but show "Deleted Webhook" with the current webhook name no longer displayed -- Each message stores the webhook ID in its metadata, allowing proper attribution even if the webhook is later modified or deleted - -## Troubleshooting - -If you're not receiving webhook notifications, here are a few things to check: - -- **Verify the URL:** Ensure the webhook URL is correct and properly pasted into the settings field. -- **Service Configuration:** Double-check that the webhook is set up correctly in the external service (e.g., Discord, Slack). -- **Firewall/Proxy:** Make sure your network or firewall is not blocking outgoing requests from the Open WebUI server. -- **Open WebUI Logs:** Check the Open WebUI server logs for any error messages related to webhook failures. - -:::note - -The webhook features in Open WebUI are continuously being improved. Stay tuned for more event types and customization options in future updates. - -::: +--- +sidebar_position: 17 +title: "Webhook Integrations" +--- + +## Overview + +Open WebUI offers three distinct webhook integrations to help you stay informed about events happening within your instance and enable external integrations. These webhooks allow you to receive automated notifications in external services like Discord, Slack, or any other application that supports incoming webhooks, as well as post messages from external services into Open WebUI channels. + +There are three types of webhooks available: + +1. **Admin Webhook:** A system-wide webhook that notifies administrators about new user sign-ups. +2. **User Webhook:** A personal webhook that notifies individual users when a response to their chat is ready, especially useful for long-running tasks. +3. **Channel Webhooks:** Incoming webhooks that allow external services to post messages into specific channels. + +## 1. Admin Webhook: New User Notifications + +This webhook is designed for administrators to monitor new user registration on the Open WebUI instance. + +### Use Case + +- **User Registration Tracking:** Receive a real-time notification in a dedicated Slack or Discord channel whenever a new user creates an account. This helps you keep track of your user base and welcome new members. + +### Configuration + +You can configure the admin webhook in two ways: + +#### Option 1: Through the Admin Panel + +1. Log in as an administrator. +2. Navigate to **Admin Panel > Settings > General**. +3. Locate the **"Webhook URL"** field. +4. Enter the webhook URL provided by your external service (e.g., Discord, Slack). +5. Click **"Save"**. + +#### Option 2: Through Environment Variables + +You can also set the webhook URL using the `WEBHOOK_URL` environment variable. For more details, refer to the [Environment Variable Configuration](https://docs.openwebui.com/reference/env-configuration/#webhook_url) documentation. + +### Payload Format + +When a new user signs up, Open WebUI will send a `POST` request to the configured URL with a JSON payload containing the new user's details. + +**Payload Example:** + +```json +{ + "event": "new_user", + "user": { + "email": "tim@example.com", + "name": "Tim" + } +} +``` + +## 2. User Webhook: Chat Response Notifications + +This webhook allows individual users to receive a notification when a model has finished generating a response to their prompt. It's particularly useful for long-running tasks where you might navigate away from the Open WebUI tab. + +### Use Case + +- **Long-Running Task Alerts:** If you submit a complex prompt that takes several minutes to process, you can close the browser tab and still be notified the moment the response is ready. This allows you to work on other tasks without having to constantly check the Open WebUI interface. + +### How it Works + +The notification is only sent if you are **not actively using the WebUI**. If you have the tab open and focused, the webhook will not be triggered, preventing unnecessary notifications. + +### Enabling/Disabling User Webhooks + +User webhooks are enabled by default. However, administrators can disable this feature for all users to prevent external requests or for security reasons. + +This can be done in two ways: + +1. **Directly in the Admin Panel:** + - Go to **Admin Panel > Settings > General > Features**. + - Toggle the switch for **"User Webhooks"**. + +2. **Using Environment Variables:** + - Set the environment variable `ENABLE_USER_WEBHOOKS` to `False` in your backend configuration. This will globally disable the feature and hide the setting from user profiles. + +### Configuration + +1. Click on your profile picture in the bottom-left corner to open the settings menu. +2. Navigate to **Settings > Account**. +3. Locate the **"Notification Webhook"** field. +4. Enter your personal webhook URL. +5. Click **"Save"**. + +### Payload Format + +When a chat response is ready and you are inactive, Open WebUI will send a `POST` request to your webhook URL with a JSON payload containing details about the chat. + +**Payload Example:** + +```json +{ + "event": "chat_response", + "chat": { + "id": "abc-123-def-456", + "title": "My Awesome Conversation", + "last_message": "This is the prompt I submitted." + } +} +``` + +## 3. Channel Webhooks: External Message Integration + +Channel Webhooks allow external services, automation tools, or scripts to post messages directly into Open WebUI channels. This enables seamless integration with monitoring systems, CI/CD pipelines, notification services, or any custom automation. + +### Use Cases + +- **System Monitoring:** Post alerts from monitoring tools (Prometheus, Grafana, Nagios) directly into team channels. +- **CI/CD Integration:** Send build status notifications from GitHub Actions, GitLab CI, or Jenkins to development channels. +- **Custom Automation:** Integrate with n8n, Zapier, or custom scripts to automate message posting. +- **External Notifications:** Forward notifications from external services into your Open WebUI workspace. + +### How it Works + +Each channel can have multiple webhooks. Each webhook has: +- A unique **webhook URL** that external services can POST to +- A **display name** shown as the message author +- An optional **profile image** to visually identify the webhook source +- A **last used timestamp** to track webhook activity + +Messages posted via webhooks appear in the channel with the webhook's identity, making it clear they came from an external source rather than a user. + +### Managing Channel Webhooks + +Only **channel managers** and **administrators** can create and manage webhooks for a channel. + +#### Creating a Webhook + +1. Navigate to the channel where you want to add a webhook. +2. Click the channel menu (⋮) and select **Edit Channel**. +3. In the channel settings modal, locate the **Webhooks** section. +4. Click **Manage** to open the Webhooks modal. +5. Click **New Webhook** to create a new webhook. +6. Configure the webhook: + - **Name:** The display name that will appear as the message author + - **Profile Image:** (Optional) Upload an image to represent this webhook +7. Click **Save** to create the webhook. +8. Copy the generated webhook URL using the **Copy URL** button. + +#### Webhook URL Format + +``` +{WEBUI_API_BASE_URL}/channels/webhooks/{webhook_id}/{token} +``` + +This URL is unique and contains an authentication token. Anyone with this URL can post messages to the channel, so treat it securely. + +#### Updating a Webhook + +1. Open the **Webhooks** modal from the channel settings. +2. Click on the webhook you want to edit to expand it. +3. Modify the **Name** or **Profile Image** as needed. +4. Click **Save** to apply changes. + +The webhook URL remains the same when you update the name or image. Messages posted after the update will show the new name/image, but existing messages retain the webhook identity from when they were posted. + +#### Deleting a Webhook + +1. Open the **Webhooks** modal from the channel settings. +2. Click on the webhook you want to delete to expand it. +3. Click the **Delete** (trash) icon. +4. Confirm the deletion. + +Once deleted, the webhook URL will stop working immediately. Messages previously posted by the webhook will remain in the channel but show "Deleted Webhook" as the author. + +### Posting Messages via Webhook + +To post a message from an external service, send a `POST` request to the webhook URL with a JSON payload. + +#### Request Format + +**Endpoint:** `POST {webhook_url}` +**Headers:** `Content-Type: application/json` +**Body:** + +```json +{ + "content": "Your message content here" +} +``` + +#### Example: Using cURL + +```bash +curl -X POST "https://your-instance.com/api/channels/webhooks/{webhook_id}/{token}" \ + -H "Content-Type: application/json" \ + -d '{"content": "Deployment to production completed successfully! 🚀"}' +``` + +#### Example: Using Python + +```python +import requests + +webhook_url = "https://your-instance.com/api/channels/webhooks/{webhook_id}/{token}" +message = { + "content": "Build #1234 failed: Unit tests did not pass." +} + +response = requests.post(webhook_url, json=message) +print(response.json()) +``` + +#### Response Format + +On success, the webhook will return: + +```json +{ + "success": true, + "message_id": "abc-123-def-456" +} +``` + +### Security Considerations + +- **URL Protection:** Webhook URLs contain authentication tokens. Keep them secure and don't expose them in public repositories or logs. +- **Channel Access:** Anyone with the webhook URL can post to the channel. Only share the URL with trusted services. +- **Message Content:** Validate and sanitize message content on the sending side to prevent injection attacks. +- **Regeneration:** If a webhook URL is compromised, delete the webhook and create a new one. + +### Webhook Identity + +Messages posted via webhooks have a special identity system: +- They appear with the webhook's **name** and **profile image** +- The user role is marked as **"webhook"** to distinguish from regular users +- If a webhook is deleted, its messages remain visible but show "Deleted Webhook" with the current webhook name no longer displayed +- Each message stores the webhook ID in its metadata, allowing proper attribution even if the webhook is later modified or deleted + +## Troubleshooting + +If you're not receiving webhook notifications, here are a few things to check: + +- **Verify the URL:** Ensure the webhook URL is correct and properly pasted into the settings field. +- **Service Configuration:** Double-check that the webhook is set up correctly in the external service (e.g., Discord, Slack). +- **Firewall/Proxy:** Make sure your network or firewall is not blocking outgoing requests from the Open WebUI server. +- **Open WebUI Logs:** Check the Open WebUI server logs for any error messages related to webhook failures. + +:::note + +The webhook features in Open WebUI are continuously being improved. Stay tuned for more event types and customization options in future updates. + +::: diff --git a/docs/features/rbac/groups.md b/docs/features/access-security/rbac/groups.md similarity index 97% rename from docs/features/rbac/groups.md rename to docs/features/access-security/rbac/groups.md index 2f6ae72a74..b178f137a2 100644 --- a/docs/features/rbac/groups.md +++ b/docs/features/access-security/rbac/groups.md @@ -70,7 +70,7 @@ You can restrict access to specific objects (like a proprietary Model or sensiti 2. **Grant Access**: Select the specific **Groups** or **individual users** that should have "Read" or "Write" access. The redesigned access control UI makes it easy to add multiple groups or users at once. :::tip Knowledge Scoping for Models -Beyond visibility, knowledge access is also scoped by model configuration. When a model has **attached knowledge bases**, it can only access those specific KBs (not all user-accessible KBs). See [Knowledge Scoping with Native Function Calling](/features/workspace/knowledge#knowledge-scoping-with-native-function-calling) for details. +Beyond visibility, knowledge access is also scoped by model configuration. When a model has **attached knowledge bases**, it can only access those specific KBs (not all user-accessible KBs). See [Knowledge Scoping with Native Function Calling](/features/ai-knowledge/knowledge#knowledge-scoping-with-native-function-calling) for details. ::: ### Access Grant System diff --git a/docs/features/rbac/index.mdx b/docs/features/access-security/rbac/index.mdx similarity index 100% rename from docs/features/rbac/index.mdx rename to docs/features/access-security/rbac/index.mdx diff --git a/docs/features/rbac/permissions.md b/docs/features/access-security/rbac/permissions.md similarity index 98% rename from docs/features/rbac/permissions.md rename to docs/features/access-security/rbac/permissions.md index 5bde3c3fb7..41d7cd936d 100644 --- a/docs/features/rbac/permissions.md +++ b/docs/features/access-security/rbac/permissions.md @@ -148,4 +148,4 @@ While the UI is the recommended way to manage permissions, initial defaults can * `ENABLE_WEB_SEARCH=True` * `USER_PERMISSIONS_CHAT_FILE_UPLOAD=True` -See the [Environment Configuration](../../getting-started/env-configuration.mdx) guide for a complete list of valid variables. +See the [Environment Configuration](/reference/env-configuration) guide for a complete list of valid variables. diff --git a/docs/features/rbac/roles.md b/docs/features/access-security/rbac/roles.md similarity index 98% rename from docs/features/rbac/roles.md rename to docs/features/access-security/rbac/roles.md index d2f646c3f9..153844a4a2 100644 --- a/docs/features/rbac/roles.md +++ b/docs/features/access-security/rbac/roles.md @@ -24,7 +24,7 @@ The Admin role is designed for system maintainers. While Administrators generally have unrestricted access, certain system configurations can limit their capabilities for security and privacy: * **Privacy Controls**: Environment variables like `ENABLE_ADMIN_CHAT_ACCESS=False` can prevent Admins from viewing user chats. * **Strict Feature Checks**: Critical security features like **API Keys** (`features.api_keys`) require explicit permission, even for Admins. -* **Access Control Exceptions**: If `BYPASS_ADMIN_ACCESS_CONTROL` is disabled, Admins may require explicit permissions to access private model/knowledge resources. +* **Access Control Exceptions**: If `BYPASS_ADMIN_ACCESS_CONTROL` is disabled, Admins may require explicit permissions to access private model/knowledge/notes resources. For a robust security posture, we recommend including Admins in your permission schema (via Groups) rather than relying solely on the role's implicit bypasses. This ensures consistent access if bypass limitations are ever enabled. ::: @@ -158,5 +158,5 @@ spec: - **One-Time Operation**: This is a one-time operation on first startup. Subsequent restarts with the same environment variables will not modify the existing admin account. ::: -For complete documentation on these environment variables, see the [Environment Configuration Guide](../../getting-started/env-configuration.mdx#webui_admin_email). +For complete documentation on these environment variables, see the [Environment Configuration Guide](/reference/env-configuration#webui_admin_email). diff --git a/docs/features/ai-knowledge/_category_.json b/docs/features/ai-knowledge/_category_.json new file mode 100644 index 0000000000..ec8fa3eb40 --- /dev/null +++ b/docs/features/ai-knowledge/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "🧠 Workspace", + "position": 30, + "collapsible": true, + "collapsed": true +} diff --git a/docs/features/channels/index.md b/docs/features/ai-knowledge/channels/index.md similarity index 97% rename from docs/features/channels/index.md rename to docs/features/ai-knowledge/channels/index.md index 63cf63e107..e287f892f8 100644 --- a/docs/features/channels/index.md +++ b/docs/features/ai-knowledge/channels/index.md @@ -168,7 +168,7 @@ Channels support granular access control: ## Native Channel Awareness (Agentic) -When using a model with **Native Function Calling** enabled (see the [**Central Tool Calling Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native)), models can navigate and search through your organization's channels autonomously. +When using a model with **Native Function Calling** enabled (see the [**Central Tool Calling Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native)), models can navigate and search through your organization's channels autonomously. ### Available Channel Tools: - **`search_channels`**: The model can find channels by name or description to identify where relevant discussions might be happening. diff --git a/docs/features/workspace/knowledge.md b/docs/features/ai-knowledge/knowledge.md similarity index 98% rename from docs/features/workspace/knowledge.md rename to docs/features/ai-knowledge/knowledge.md index 787938706d..03e60d1dc5 100644 --- a/docs/features/workspace/knowledge.md +++ b/docs/features/ai-knowledge/knowledge.md @@ -113,7 +113,7 @@ The Knowledge Base tools require the **Knowledge Base** category to be enabled f ::: :::info Central Tool Documentation -For complete details on all built-in agentic tools and how to configure them, see the [**Native/Agentic Mode Tools Guide**](/features/plugin/tools#built-in-system-tools-nativeagentic-mode). +For complete details on all built-in agentic tools and how to configure them, see the [**Native/Agentic Mode Tools Guide**](/features/extensibility/plugin/tools#built-in-system-tools-nativeagentic-mode). ::: ### Setting Up Your Knowledge Base @@ -144,7 +144,7 @@ Key API endpoints: :::warning Important: Async File Processing When uploading files via API, processing happens asynchronously. You **must** wait for file processing to complete before adding files to a knowledge base, or you will receive an "empty content" error. -For detailed examples and proper workflow handling, see the [API Endpoints documentation](/getting-started/api-endpoints#-retrieval-augmented-generation-rag). +For detailed examples and proper workflow handling, see the [API Endpoints documentation](/reference/api-endpoints#-retrieval-augmented-generation-rag). ::: ## Summary diff --git a/docs/features/workspace/models.md b/docs/features/ai-knowledge/models.md similarity index 90% rename from docs/features/workspace/models.md rename to docs/features/ai-knowledge/models.md index e41bd54835..bdee42d393 100644 --- a/docs/features/workspace/models.md +++ b/docs/features/ai-knowledge/models.md @@ -72,22 +72,22 @@ Clicking **Show** on **Advanced Params** allows you to fine-tune the inference g You can transform a generic model into a specialized agent by toggling specific capabilities and binding resources. -- **Knowledge**: Instead of manually selecting documents for every chat, you can bind a specific knowledgebase **Collection** or **File** to this model. Whenever this model is selected, RAG (Retrieval Augmented Generation) is automatically active for those specific files. Click on attached items to toggle between **Focused Retrieval** (RAG chunks) and **Using Entire Document** (full content injection). See [Full Context vs Focused Retrieval](/features/workspace/knowledge#full-context-vs-focused-retrieval) for details. +- **Knowledge**: Instead of manually selecting documents for every chat, you can bind a specific knowledgebase **Collection** or **File** to this model. Whenever this model is selected, RAG (Retrieval Augmented Generation) is automatically active for those specific files. Click on attached items to toggle between **Focused Retrieval** (RAG chunks) and **Using Entire Document** (full content injection). See [Full Context vs Focused Retrieval](/features/ai-knowledge/knowledge#full-context-vs-focused-retrieval) for details. - **Tools**: Force specific tools to be enabled by default (e.g., always enable the **Calculator** tool for a "Math Bot"). -- **Skills**: Bind [Skills](/features/workspace/skills) to this model so their manifests are always injected. The model can load full skill instructions on-demand via the `view_skill` builtin tool. +- **Skills**: Bind [Skills](/features/ai-knowledge/skills) to this model so their manifests are always injected. The model can load full skill instructions on-demand via the `view_skill` builtin tool. - **Filters**: Attach specific Pipelines/Filters (e.g., a Profanity Filter or PII Redaction script) to run exclusively on this model. - **Actions**: Attach actionable scripts like `Add to Memories` or `Button` triggers. - **Capabilities**: Granularly control what the model is allowed to do: - **Vision**: Toggle to enable image analysis capabilities (requires a vision-capable Base Model). - **Web Search**: Enable the model to access the configured search provider (e.g., Google, SearxNG) for real-time information. - **File Upload**: Allow users to upload files to this model. - - **File Context**: When enabled (default), attached files are processed via RAG and their content is injected into the conversation. When disabled, file content is **not** extracted or injected—the model receives no file content unless it retrieves it via builtin tools. Only visible when File Upload is enabled. See [File Context vs Builtin Tools](../rag/index.md#file-context-vs-builtin-tools) for details. - - **Code Interpreter**: Enable Python code execution. See [Python Code Execution](../chat-features/code-execution/python.md) for details. + - **File Context**: When enabled (default), attached files are processed via RAG and their content is injected into the conversation. When disabled, file content is **not** extracted or injected—the model receives no file content unless it retrieves it via builtin tools. Only visible when File Upload is enabled. See [File Context vs Builtin Tools](/features/chat-conversations/rag#file-context-vs-builtin-tools) for details. + - **Code Interpreter**: Enable Python code execution. See [Python Code Execution](/features/chat-conversations/chat-features/code-execution/python) for details. - **Image Generation**: Enable image generation integration. - **Usage / Citations**: Toggle usage tracking or source citations. - **Status Updates**: Show visible progress steps in the chat UI (e.g., "Searching web...", "Reading file...") during generation. Useful for slower, complex tasks. - - **Builtin Tools**: When enabled (default), automatically injects system tools (timestamps, memory, chat history, knowledge base queries, notes, etc.) in [Native Function Calling mode](../plugin/tools/index.mdx#disabling-builtin-tools-per-model). When enabled, you can further control which **tool categories** are available (Time, Memory, Chats, Notes, Knowledge, Channels) via checkboxes in the Model Editor. Disable the main toggle if the model doesn't support function calling or you need to save context window tokens. Note: This is separate from **File Context**—see [File Context vs Builtin Tools](../rag/index.md#file-context-vs-builtin-tools) for the difference. -- **TTS Voice**: Set a specific Text-to-Speech voice for this model. When users read responses aloud, this voice will be used instead of the global default. Useful for giving different personas distinct voices. Leave empty to use the user's settings or system default. See [Per-Model TTS Voice](../audio/text-to-speech/openai-tts-integration#per-model-tts-voice) for details. + - **Builtin Tools**: When enabled (default), automatically injects system tools (timestamps, memory, chat history, knowledge base queries, notes, etc.) in [Native Function Calling mode](/features/extensibility/plugin/tools#disabling-builtin-tools-per-model). When enabled, you can further control which **tool categories** are available (Time, Memory, Chats, Notes, Knowledge, Channels) via checkboxes in the Model Editor. Disable the main toggle if the model doesn't support function calling or you need to save context window tokens. Note: This is separate from **File Context**—see [File Context vs Builtin Tools](/features/chat-conversations/rag#file-context-vs-builtin-tools) for the difference. +- **TTS Voice**: Set a specific Text-to-Speech voice for this model. When users read responses aloud, this voice will be used instead of the global default. Useful for giving different personas distinct voices. Leave empty to use the user's settings or system default. See [Per-Model TTS Voice](/features/media-generation/audio/text-to-speech/openai-tts-integration#per-model-tts-voice) for details. - **Default Features**: Force specific toggles (like Web Search) to be "On" immediately when a user starts a chat with this model. ## Model Management diff --git a/docs/features/notes.md b/docs/features/ai-knowledge/notes.md similarity index 93% rename from docs/features/notes.md rename to docs/features/ai-knowledge/notes.md index 88ec453ac6..1a8ea6ac71 100644 --- a/docs/features/notes.md +++ b/docs/features/ai-knowledge/notes.md @@ -98,6 +98,12 @@ The full content of the note will be loaded into the context window for that con Open WebUI provides several ways to export and manage your notes via the **More (`...`)** menu in the top right corner. +:::info Admin Visibility +Notes are considered **workspace items**, just like models, knowledge, prompts, and tools. By default (`BYPASS_ADMIN_ACCESS_CONTROL=True`), administrators can see **all users' notes** under the "All" and "Shared with you" filters. + +To prevent admins from seeing notes they were not explicitly shared with, set `BYPASS_ADMIN_ACCESS_CONTROL` to `False`. This also restricts admin access to other workspace items (models, knowledge, prompts, tools). See the [Environment Configuration](/reference/env-configuration#bypass_admin_access_control) for details. +::: + ### Download You can export your notes in standard formats: @@ -163,7 +169,7 @@ These can also be configured in **Admin Panel > Settings > Users > Default Permi ## Native Note Management (Agentic) -If you are using a model with **Native Function Calling** enabled (see the [**Central Tool Calling Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native)), the AI can interact with your Notes workspace autonomously using built-in system tools. +If you are using a model with **Native Function Calling** enabled (see the [**Central Tool Calling Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native)), the AI can interact with your Notes workspace autonomously using built-in system tools. ### Available Note Tools: - **`search_notes`**: The model can search your entire library of notes by title and content. diff --git a/docs/features/workspace/prompts.md b/docs/features/ai-knowledge/prompts.md similarity index 99% rename from docs/features/workspace/prompts.md rename to docs/features/ai-knowledge/prompts.md index 00ca12419a..7cfeb058de 100644 --- a/docs/features/workspace/prompts.md +++ b/docs/features/ai-knowledge/prompts.md @@ -11,7 +11,7 @@ The Prompts interface provides several key features for managing your custom pro * **Create**: Design new prompts with customizable names, tags, access levels, and content. * **Share**: Share prompts with other users based on configured access permissions. -* **Access Control**: Set visibility and usage permissions for each prompt (refer to [Permissions](/features/rbac/permissions) for more details). +* **Access Control**: Set visibility and usage permissions for each prompt (refer to [Permissions](/features/access-security/rbac/permissions) for more details). * **Slash Commands**: Quickly access prompts using custom slash commands during chat sessions. * **Versioning & History**: Track every change with a full version history, allowing you to compare and revert to previous versions. * **Tags & Filtering**: Organize your prompts using tags and easily filter through your collection in the workspace. @@ -280,7 +280,7 @@ When editing an existing prompt, you will see a **History** sidebar (on desktop) Prompt management is controlled by the following permission settings: * **Prompts Access**: Users need the `USER_PERMISSIONS_WORKSPACE_PROMPTS_ACCESS` permission to create and manage prompts. -* For detailed information about configuring permissions, refer to the [Permissions documentation](/features/rbac/permissions). +* For detailed information about configuring permissions, refer to the [Permissions documentation](/features/access-security/rbac/permissions). ### Best Practices diff --git a/docs/features/workspace/skills.md b/docs/features/ai-knowledge/skills.md similarity index 81% rename from docs/features/workspace/skills.md rename to docs/features/ai-knowledge/skills.md index 7f7a10dedd..c69c436320 100644 --- a/docs/features/workspace/skills.md +++ b/docs/features/ai-knowledge/skills.md @@ -4,7 +4,7 @@ title: "Skills" sidebar_label: "Skills" --- -Skills are reusable, markdown-based instruction sets that you can attach to models or invoke on-the-fly in chat. Unlike [Tools](/features/plugin/tools) (which are executable Python scripts), Skills are **plain-text instructions** that teach a model *how* to approach a task — such as code review guidelines, writing style rules, or troubleshooting playbooks. +Skills are reusable, markdown-based instruction sets that you can attach to models or invoke on-the-fly in chat. Unlike [Tools](/features/extensibility/plugin/tools) (which are executable Python scripts), Skills are **plain-text instructions** that teach a model *how* to approach a task — such as code review guidelines, writing style rules, or troubleshooting playbooks. ## How Skills Work @@ -88,7 +88,7 @@ Each skill has an **active/inactive toggle** visible on the list page. Inactive The backend you choose affects what your skills can do — from simple text transformations (Pyodide) to full OS-level shell access (Open Terminal). Each has different trade-offs in library support, isolation, persistence, and multi-user safety. -See the [Code Execution overview](/features/chat-features/code-execution) for a detailed comparison of all available backends and guidance on choosing the right one for your deployment. +See the [Code Execution overview](/features/chat-conversations/chat-features/code-execution) for a detailed comparison of all available backends and guidance on choosing the right one for your deployment. ### Setting Up Open Terminal @@ -96,11 +96,11 @@ Open Terminal is a FastAPI application that automatically exposes an [OpenAPI sp **1. Start an Open Terminal instance** -Follow the [Open Terminal setup guide](/features/open-terminal#getting-started) to launch an instance using Docker or pip. +Follow the [Open Terminal setup guide](/features/extensibility/open-terminal#getting-started) to launch an instance using Docker or pip. **2. Connect to Open WebUI** -Add your Open Terminal instance as a Tool Server by following the [OpenAPI Tool Server Integration Guide](/features/plugin/tools/openapi-servers/open-webui). You can connect it as: +Add your Open Terminal instance as a Tool Server by following the [OpenAPI Tool Server Integration Guide](/features/extensibility/plugin/tools/openapi-servers/open-webui). You can connect it as: - A **User Tool Server** (in **Settings → Tools**) — connects from your browser, ideal for personal or local instances - A **Global Tool Server** (in **Admin Settings → Tools**) — connects from the backend, available to all users @@ -108,14 +108,14 @@ Add your Open Terminal instance as a Tool Server by following the [OpenAPI Tool Once connected, the Open Terminal tools (execute, file upload, file download) appear automatically in the chat interface. :::tip -For the best experience, pair Open Terminal with a [Skill](/features/workspace/skills) that teaches the model how to use the tool effectively — for example, instructing it to always check exit codes, handle errors gracefully, and use streaming for long-running commands. +For the best experience, pair Open Terminal with a [Skill](/features/ai-knowledge/skills) that teaches the model how to use the tool effectively — for example, instructing it to always check exit codes, handle errors gracefully, and use streaming for long-running commands. ::: -See the [Open Terminal documentation](/features/open-terminal) for the full API reference and detailed setup instructions. +See the [Open Terminal documentation](/features/extensibility/open-terminal) for the full API reference and detailed setup instructions. ## Access Control -Skills use the same [Access Control](/features/rbac) system as other workspace resources: +Skills use the same [Access Control](/features/access-security/rbac) system as other workspace resources: - **Private by default**: Only the creator can see and edit a new skill. - **Share with users or groups**: Use the **Access** button in the skill editor to grant `read` or `write` access to specific users or groups. @@ -127,4 +127,4 @@ Skills use the same [Access Control](/features/rbac) system as other workspace r - **Sharing → Share Skills**: Required to share skills with individual users or groups. - **Sharing → Public Skills**: Required to make skills publicly accessible. -See [Permissions](/features/rbac/permissions) for details on how to configure these. +See [Permissions](/features/access-security/rbac/permissions) for details on how to configure these. diff --git a/docs/features/chat-conversations/_category_.json b/docs/features/chat-conversations/_category_.json new file mode 100644 index 0000000000..3581d4e775 --- /dev/null +++ b/docs/features/chat-conversations/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "💬 Chat & Conversations", + "position": 20, + "collapsible": true, + "collapsed": true +} diff --git a/docs/features/chat-features/autocomplete.md b/docs/features/chat-conversations/chat-features/autocomplete.md similarity index 100% rename from docs/features/chat-features/autocomplete.md rename to docs/features/chat-conversations/chat-features/autocomplete.md diff --git a/docs/features/chat-features/chat-params.md b/docs/features/chat-conversations/chat-features/chat-params.md similarity index 100% rename from docs/features/chat-features/chat-params.md rename to docs/features/chat-conversations/chat-features/chat-params.md diff --git a/docs/features/chat-features/chatshare.md b/docs/features/chat-conversations/chat-features/chatshare.md similarity index 98% rename from docs/features/chat-features/chatshare.md rename to docs/features/chat-conversations/chat-features/chatshare.md index e20bf03ba5..3ef42fdf0b 100644 --- a/docs/features/chat-features/chatshare.md +++ b/docs/features/chat-conversations/chat-features/chatshare.md @@ -115,4 +115,4 @@ Once deleted, the shared link will no longer be valid, and users will not be abl Open WebUI provides a centralized dashboard to manage every chat conversation you have shared. From there you can search through your shared history, re-copy links, or revoke access instantly. -For details on the management dashboard, see [Shared Chats Management](/features/data-controls/shared-chats). +For details on the management dashboard, see [Shared Chats Management](/features/chat-conversations/data-controls/shared-chats). diff --git a/docs/features/chat-features/code-execution/artifacts.md b/docs/features/chat-conversations/chat-features/code-execution/artifacts.md similarity index 100% rename from docs/features/chat-features/code-execution/artifacts.md rename to docs/features/chat-conversations/chat-features/code-execution/artifacts.md diff --git a/docs/features/chat-features/code-execution/index.md b/docs/features/chat-conversations/chat-features/code-execution/index.md similarity index 94% rename from docs/features/chat-features/code-execution/index.md rename to docs/features/chat-conversations/chat-features/code-execution/index.md index 7854587bc8..fffb88a6fa 100644 --- a/docs/features/chat-features/code-execution/index.md +++ b/docs/features/chat-conversations/chat-features/code-execution/index.md @@ -49,13 +49,13 @@ If you are running a multi-user or organizational deployment, **Jupyter is not r ### Open Terminal -[Open Terminal](/features/open-terminal) is a lightweight API for running shell commands remotely inside a Docker container. It provides full OS-level access — any language, any tool, any shell command — with container-level isolation. +[Open Terminal](/features/extensibility/open-terminal) is a lightweight API for running shell commands remotely inside a Docker container. It provides full OS-level access — any language, any tool, any shell command — with container-level isolation. - **Full shell access** — models can install packages, run scripts in any language, use system tools like ffmpeg, git, curl, etc. - **Container isolation** — runs in its own Docker container, separate from Open WebUI and other services. - **Rich pre-installed toolset** — the Docker image comes with Python 3.12, data science libraries, build tools, networking utilities, and more. -Open Terminal is connected to Open WebUI as an easy to connect [OpenAPI Tool Server](/features/plugin/tools/openapi-servers/open-webui), not as a built-in code execution engine. +Open Terminal is connected to Open WebUI as an easy to connect [OpenAPI Tool Server](/features/extensibility/plugin/tools/openapi-servers/open-webui), not as a built-in code execution engine. :::note Open Terminal currently operates as a **single shared instance** — there is no automatic per-user container provisioning yet. Each user connects to the same container unless separate instances are deployed manually. diff --git a/docs/features/chat-features/code-execution/mermaid.md b/docs/features/chat-conversations/chat-features/code-execution/mermaid.md similarity index 100% rename from docs/features/chat-features/code-execution/mermaid.md rename to docs/features/chat-conversations/chat-features/code-execution/mermaid.md diff --git a/docs/features/chat-features/code-execution/python.md b/docs/features/chat-conversations/chat-features/code-execution/python.md similarity index 96% rename from docs/features/chat-features/code-execution/python.md rename to docs/features/chat-conversations/chat-features/code-execution/python.md index 4c5e97f72e..04e8d51ffa 100644 --- a/docs/features/chat-features/code-execution/python.md +++ b/docs/features/chat-conversations/chat-features/code-execution/python.md @@ -48,7 +48,7 @@ These settings can be configured at **Admin Panel → Settings → Code Executio | `CODE_INTERPRETER_PROMPT_TEMPLATE` | (built-in) | Custom prompt template for code interpreter | | `CODE_INTERPRETER_BLACKLISTED_MODULES` | `""` | Comma-separated list of blocked Python modules | -For Jupyter configuration, see the [Jupyter Notebook Integration](/tutorials/integrations/jupyter) tutorial. +For Jupyter configuration, see the [Jupyter Notebook Integration](/tutorials/integrations/dev-tools/jupyter) tutorial. ### Native Function Calling (Native Mode) @@ -62,7 +62,7 @@ When using **Native function calling mode** with a capable model (e.g., GPT-5, C 2. Model must have `code_interpreter` capability enabled 3. Model must use **Native** function calling mode (set in model's advanced params) -For more details on builtin tools and native mode, see the [Tool Development Guide](/features/plugin/tools#built-in-system-tools-nativeagentic-mode). +For more details on builtin tools and native mode, see the [Tool Development Guide](/features/extensibility/plugin/tools#built-in-system-tools-nativeagentic-mode). ## Displaying Images Inline (matplotlib, etc.) @@ -223,6 +223,6 @@ This is a known compatibility issue between Edge's enhanced security mode and We ## Further Reading - [Pyodide Documentation](https://pyodide.org/en/stable/) -- [Jupyter Notebook Integration](/tutorials/integrations/jupyter) -- [Environment Configuration](/getting-started/env-configuration) (search for `CODE_INTERPRETER`) +- [Jupyter Notebook Integration](/tutorials/integrations/dev-tools/jupyter) +- [Environment Configuration](/reference/env-configuration) (search for `CODE_INTERPRETER`) diff --git a/docs/features/chat-features/conversation-organization.md b/docs/features/chat-conversations/chat-features/conversation-organization.md similarity index 90% rename from docs/features/chat-features/conversation-organization.md rename to docs/features/chat-conversations/chat-features/conversation-organization.md index 23fc18848c..ef19841f0f 100644 --- a/docs/features/chat-features/conversation-organization.md +++ b/docs/features/chat-conversations/chat-features/conversation-organization.md @@ -12,7 +12,7 @@ Open WebUI provides powerful folder-based organization that turns simple chat co Folders are enabled by default. Administrators can control this feature via: - **Admin Panel**: The folders feature is controlled globally alongside other features. -- **Environment Variable**: [`ENABLE_FOLDERS`](/getting-started/env-configuration#enable_folders) - Set to `True` (default) to enable or `False` to disable. +- **Environment Variable**: [`ENABLE_FOLDERS`](/reference/env-configuration#enable_folders) - Set to `True` (default) to enable or `False` to disable. ## Core Features @@ -125,5 +125,5 @@ If you frequently discuss topics like "marketing" or "development," tag conversa | Setting | Description | |---------|-------------| -| [`ENABLE_FOLDERS`](/getting-started/env-configuration#enable_folders) | Enable/disable the folders feature globally (Default: `True`) | -| [`USER_PERMISSIONS_FEATURES_FOLDERS`](/getting-started/env-configuration#user_permissions_features_folders) | Control user-level access to the folders feature (Default: `True`) | +| [`ENABLE_FOLDERS`](/reference/env-configuration#enable_folders) | Enable/disable the folders feature globally (Default: `True`) | +| [`USER_PERMISSIONS_FEATURES_FOLDERS`](/reference/env-configuration#user_permissions_features_folders) | Control user-level access to the folders feature (Default: `True`) | diff --git a/docs/features/chat-features/follow-up-prompts.md b/docs/features/chat-conversations/chat-features/follow-up-prompts.md similarity index 95% rename from docs/features/chat-features/follow-up-prompts.md rename to docs/features/chat-conversations/chat-features/follow-up-prompts.md index d2af865fe3..d85f29cc6d 100644 --- a/docs/features/chat-features/follow-up-prompts.md +++ b/docs/features/chat-conversations/chat-features/follow-up-prompts.md @@ -15,7 +15,7 @@ Configure follow-up prompt behavior in **Settings > Interface** under the **Chat **Default: On** -Automatically generates follow-up question suggestions after each response. These suggestions are generated by the [task model](/getting-started/env-configuration#task_model) based on the conversation context. +Automatically generates follow-up question suggestions after each response. These suggestions are generated by the [task model](/reference/env-configuration#task_model) based on the conversation context. - **On**: Follow-up prompts are generated after each model response - **Off**: No follow-up suggestions are generated diff --git a/docs/features/chat-features/history-search.mdx b/docs/features/chat-conversations/chat-features/history-search.mdx similarity index 93% rename from docs/features/chat-features/history-search.mdx rename to docs/features/chat-conversations/chat-features/history-search.mdx index 17104eaea4..24a9a27a03 100644 --- a/docs/features/chat-features/history-search.mdx +++ b/docs/features/chat-conversations/chat-features/history-search.mdx @@ -31,7 +31,7 @@ You can search through your conversations using the global search bar in the sid ## Native Conversation Search (Agentic) -When using a model with **Native Function Calling** enabled (see the [**Central Tool Calling Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native)), models can search through your chat history autonomously. +When using a model with **Native Function Calling** enabled (see the [**Central Tool Calling Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native)), models can search through your chat history autonomously. ### Available History Tools: - **`search_chats`**: Simple text search across chat titles and message content. Returns matching chat IDs and snippets. diff --git a/docs/features/chat-features/index.mdx b/docs/features/chat-conversations/chat-features/index.mdx similarity index 94% rename from docs/features/chat-features/index.mdx rename to docs/features/chat-conversations/chat-features/index.mdx index 214289722e..77d62757b7 100644 --- a/docs/features/chat-features/index.mdx +++ b/docs/features/chat-conversations/chat-features/index.mdx @@ -26,4 +26,4 @@ Open WebUI provides a comprehensive set of chat features designed to enhance you - **[🧠 Reasoning & Thinking Models](./reasoning-models.mdx)**: Specialized support for models that generate internal chains of thought using thinking tags. - **[💬 Follow-Up Prompts](./follow-up-prompts.md)**: Automatic generation of suggested follow-up questions after model responses. -- **Skill Mentions**: Use `$` in the chat input to mention and activate [Skills](/features/workspace/skills) on-the-fly, injecting their manifests into the conversation. +- **Skill Mentions**: Use `$` in the chat input to mention and activate [Skills](/features/ai-knowledge/skills) on-the-fly, injecting their manifests into the conversation. diff --git a/docs/features/chat-features/message-queue.mdx b/docs/features/chat-conversations/chat-features/message-queue.mdx similarity index 100% rename from docs/features/chat-features/message-queue.mdx rename to docs/features/chat-conversations/chat-features/message-queue.mdx diff --git a/docs/features/chat-features/multi-model-chats.mdx b/docs/features/chat-conversations/chat-features/multi-model-chats.mdx similarity index 100% rename from docs/features/chat-features/multi-model-chats.mdx rename to docs/features/chat-conversations/chat-features/multi-model-chats.mdx diff --git a/docs/features/chat-features/reasoning-models.mdx b/docs/features/chat-conversations/chat-features/reasoning-models.mdx similarity index 98% rename from docs/features/chat-features/reasoning-models.mdx rename to docs/features/chat-conversations/chat-features/reasoning-models.mdx index a39a49127d..2c9a6108be 100644 --- a/docs/features/chat-features/reasoning-models.mdx +++ b/docs/features/chat-conversations/chat-features/reasoning-models.mdx @@ -351,7 +351,7 @@ There is no standard way for storing reasoning content as part of the API payloa **Workarounds:** -1. **Use a Pipe Function**: Create a custom [pipe function](/features/pipelines/pipes) that converts Open WebUI's text-based thinking format to Anthropic's structured thinking blocks before sending requests to the Anthropic API. +1. **Use a Pipe Function**: Create a custom [pipe function](/features/extensibility/pipelines/pipes) that converts Open WebUI's text-based thinking format to Anthropic's structured thinking blocks before sending requests to the Anthropic API. 2. **Disable Extended Thinking**: If you don't need extended thinking for tool-calling workflows, disable it to avoid the format mismatch. diff --git a/docs/features/chat-features/temporal-awareness.mdx b/docs/features/chat-conversations/chat-features/temporal-awareness.mdx similarity index 85% rename from docs/features/chat-features/temporal-awareness.mdx rename to docs/features/chat-conversations/chat-features/temporal-awareness.mdx index ff47b2f0f2..9c84effb7c 100644 --- a/docs/features/chat-features/temporal-awareness.mdx +++ b/docs/features/chat-conversations/chat-features/temporal-awareness.mdx @@ -14,13 +14,13 @@ By default, Open WebUI injects temporal variables into the model's environment v - **`CURRENT_TIME`**: Injected as HH:MM. - **`CURRENT_WEEKDAY`**: (e.g., Monday, Tuesday). -These variables can be manually used in [**Prompts**](/features/workspace/prompts) or [**Model Files**](/features/workspace/models) using the `{{CURRENT_DATE}}` syntax. +These variables can be manually used in [**Prompts**](/features/ai-knowledge/prompts) or [**Model Files**](/features/ai-knowledge/models) using the `{{CURRENT_DATE}}` syntax. --- ## Native Temporal Tools (Agentic) -When using a model with **Native Function Calling** enabled (see the [**Central Tool Calling Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native)), models gain granular control over time calculations and queries. +When using a model with **Native Function Calling** enabled (see the [**Central Tool Calling Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native)), models gain granular control over time calculations and queries. ### Available Time Tools: - **`get_current_timestamp`**: The model can retrieve the exact current Unix timestamp (UTC) and ISO date string. diff --git a/docs/features/chat-features/url-params.md b/docs/features/chat-conversations/chat-features/url-params.md similarity index 97% rename from docs/features/chat-features/url-params.md rename to docs/features/chat-conversations/chat-features/url-params.md index f0cb2c5995..e5c86e5ef1 100644 --- a/docs/features/chat-features/url-params.md +++ b/docs/features/chat-conversations/chat-features/url-params.md @@ -25,7 +25,7 @@ The following table lists the available URL parameters, their function, and exam ### 1. **Models and Model Selection** -- **Description**: The `models` and `model` parameters allow you to specify which [language models](/features/workspace/models.md) should be used for a particular chat session. +- **Description**: The `models` and `model` parameters allow you to specify which [language models](/features/ai-knowledge/models) should be used for a particular chat session. - **How to Set**: You can use either `models` for multiple models or `model` for a single model. - **Example**: - `/?models=model1,model2` – This initializes the chat with `model1` and `model2`. @@ -54,7 +54,7 @@ The following table lists the available URL parameters, their function, and exam ### 5. **Tool Selection** -- **Description**: The `tools` or `tool-ids` parameters specify which [tools](/features/plugin/tools) to activate within the chat. +- **Description**: The `tools` or `tool-ids` parameters specify which [tools](/features/extensibility/plugin/tools) to activate within the chat. - **How to Set**: Provide a comma-separated list of tool IDs as the parameter’s value. - **Example**: `/?tools=tool1,tool2` or `/?tool-ids=tool1,tool2` - **Behavior**: Each tool ID is matched and activated within the session for user interaction. diff --git a/docs/features/data-controls/archived-chats.md b/docs/features/chat-conversations/data-controls/archived-chats.md similarity index 100% rename from docs/features/data-controls/archived-chats.md rename to docs/features/chat-conversations/data-controls/archived-chats.md diff --git a/docs/features/data-controls/files.md b/docs/features/chat-conversations/data-controls/files.md similarity index 100% rename from docs/features/data-controls/files.md rename to docs/features/chat-conversations/data-controls/files.md diff --git a/docs/features/data-controls/import-export.md b/docs/features/chat-conversations/data-controls/import-export.md similarity index 100% rename from docs/features/data-controls/import-export.md rename to docs/features/chat-conversations/data-controls/import-export.md diff --git a/docs/features/data-controls/index.mdx b/docs/features/chat-conversations/data-controls/index.mdx similarity index 100% rename from docs/features/data-controls/index.mdx rename to docs/features/chat-conversations/data-controls/index.mdx diff --git a/docs/features/data-controls/shared-chats.md b/docs/features/chat-conversations/data-controls/shared-chats.md similarity index 94% rename from docs/features/data-controls/shared-chats.md rename to docs/features/chat-conversations/data-controls/shared-chats.md index 3382beffa5..ce911fae66 100644 --- a/docs/features/data-controls/shared-chats.md +++ b/docs/features/chat-conversations/data-controls/shared-chats.md @@ -6,7 +6,7 @@ title: "🔗 Shared Chats" Open WebUI provides a centralized dashboard to manage every chat conversation you have shared. This feature allows users to audit their shared content and quickly revoke access if needed. :::info -This page documents the **management dashboard** for shared chats. For information on how to share chats, see [Chat Sharing](/features/chat-features/chatshare). +This page documents the **management dashboard** for shared chats. For information on how to share chats, see [Chat Sharing](/features/chat-conversations/chat-features/chatshare). ::: ## Accessing the Management Dashboard @@ -38,7 +38,7 @@ The **Shared Chats** modal provides a unified interface for your public content: **A:** No. Unsharing only deletes the public link. Your original chat history remains completely intact. **Q: Can I manage chats I've shared on the community platform here?** -**A:** No. This dashboard manages links generated on your local instance. For community-shared content, see [Deleting Shared Chats](/features/chat-features/chatshare#deleting-shared-chats). +**A:** No. This dashboard manages links generated on your local instance. For community-shared content, see [Deleting Shared Chats](/features/chat-conversations/chat-features/chatshare#deleting-shared-chats). **Q: If I delete my original chat, what happens to the shared link?** **A:** Deleting a chat also immediately invalidates and deletes any associated share links. diff --git a/docs/features/experimental/direct-connections.mdx b/docs/features/chat-conversations/direct-connections.mdx similarity index 94% rename from docs/features/experimental/direct-connections.mdx rename to docs/features/chat-conversations/direct-connections.mdx index 7e28993a4c..91c2ee71d5 100644 --- a/docs/features/experimental/direct-connections.mdx +++ b/docs/features/chat-conversations/direct-connections.mdx @@ -3,6 +3,10 @@ sidebar_position: 1510 title: "Direct Connections" --- +:::warning Experimental Feature +This feature is currently **experimental** and may change or be removed in future releases. +::: + **Direct Connections** is a feature that allows users to connect their Open WebUI client directly to OpenAI-compatible API endpoints, bypassing the Open WebUI backend for inference requests. ## Overview diff --git a/docs/features/memory.mdx b/docs/features/chat-conversations/memory.mdx similarity index 91% rename from docs/features/memory.mdx rename to docs/features/chat-conversations/memory.mdx index d34bafe1e6..296f35a818 100644 --- a/docs/features/memory.mdx +++ b/docs/features/chat-conversations/memory.mdx @@ -23,7 +23,7 @@ Users can manually add, edit, or delete memories by navigating to: ### 2. Native Memory Tools (Agentic Mode) -When using a model with **Native Function Calling (Agentic Mode)** enabled, quality models can manage your memory autonomously using three built-in tools. For a detailed breakdown of how administrators can configure and manage these system-level tools, see the [**Central Tool Calling Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native). +When using a model with **Native Function Calling (Agentic Mode)** enabled, quality models can manage your memory autonomously using three built-in tools. For a detailed breakdown of how administrators can configure and manage these system-level tools, see the [**Central Tool Calling Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native). :::tip Quality Models for Memory Management Autonomous memory management works best with frontier models (GPT-5, Claude 4.5+, Gemini 3+) that can intelligently decide what facts are worth saving and when to recall relevant memories. Small local models may struggle with appropriate memory selection. @@ -48,7 +48,7 @@ Autonomous memory management works best with frontier models (GPT-5, Claude 4.5+ 4. **Per-Model Category Toggle**: Ensure the **Memory** category is enabled for the model in **Workspace > Models > Edit > Builtin Tools** (enabled by default). :::info Central Tool Documentation -For complete details on all built-in agentic tools (including memory, web search, and knowledge bases) and how to configure them, see the [**Native/Agentic Mode Tools Guide**](/features/plugin/tools#built-in-system-tools-nativeagentic-mode). +For complete details on all built-in agentic tools (including memory, web search, and knowledge bases) and how to configure them, see the [**Native/Agentic Mode Tools Guide**](/features/extensibility/plugin/tools#built-in-system-tools-nativeagentic-mode). ::: ## Administrative Controls @@ -58,12 +58,12 @@ Administrators have full control over the Memory feature, including the ability ### Global Toggle The Memory feature can be toggled on or off for the entire instance. When disabled, the "Personalization" tab is hidden from all users, and the memory-related API endpoints are blocked. - **Admin UI**: Admin Panel > Settings > General > Features > **Memories** -- **Environment Variable**: [`ENABLE_MEMORIES`](/getting-started/env-configuration#enable_memories) (Default: `True`) +- **Environment Variable**: [`ENABLE_MEMORIES`](/reference/env-configuration#enable_memories) (Default: `True`) ### Granular Permissions Administrators can also control Memory access on a per-role or per-group basis from the Permissions interface. - **Admin UI**: Admin Panel > Users > Permissions > Features > **Memories** -- **Environment Variable**: [`USER_PERMISSIONS_FEATURES_MEMORIES`](/getting-started/env-configuration#user_permissions_features_memories) (Default: `True`) +- **Environment Variable**: [`USER_PERMISSIONS_FEATURES_MEMORIES`](/reference/env-configuration#user_permissions_features_memories) (Default: `True`) ## Privacy & Security diff --git a/docs/features/rag/document-extraction/apachetika.md b/docs/features/chat-conversations/rag/document-extraction/apachetika.md similarity index 100% rename from docs/features/rag/document-extraction/apachetika.md rename to docs/features/chat-conversations/rag/document-extraction/apachetika.md diff --git a/docs/features/rag/document-extraction/docling.md b/docs/features/chat-conversations/rag/document-extraction/docling.md similarity index 100% rename from docs/features/rag/document-extraction/docling.md rename to docs/features/chat-conversations/rag/document-extraction/docling.md diff --git a/docs/features/rag/document-extraction/index.md b/docs/features/chat-conversations/rag/document-extraction/index.md similarity index 100% rename from docs/features/rag/document-extraction/index.md rename to docs/features/chat-conversations/rag/document-extraction/index.md diff --git a/docs/features/rag/document-extraction/mistral-ocr.md b/docs/features/chat-conversations/rag/document-extraction/mistral-ocr.md similarity index 100% rename from docs/features/rag/document-extraction/mistral-ocr.md rename to docs/features/chat-conversations/rag/document-extraction/mistral-ocr.md diff --git a/docs/features/rag/index.md b/docs/features/chat-conversations/rag/index.md similarity index 98% rename from docs/features/rag/index.md rename to docs/features/chat-conversations/rag/index.md index ab43f13866..df17335e40 100644 --- a/docs/features/rag/index.md +++ b/docs/features/chat-conversations/rag/index.md @@ -18,7 +18,7 @@ One of the key advantages of RAG is its ability to access and integrate informat Local documents must first be uploaded via the Documents section of the Workspace area to access them using the `#` symbol before a query. Click on the formatted URL in the that appears above the chat box. Once selected, a document icon appears above `Send a message`, indicating successful retrieval. :::tip Bulk File Management -Need to clean up multiple uploaded documents or audit your storage? You can now use the centralized **[File Manager](/features/data-controls/files)** located in **Settings > Data Controls > Manage Files**. Deleting files there will automatically clean up their corresponding RAG embeddings. +Need to clean up multiple uploaded documents or audit your storage? You can now use the centralized **[File Manager](/features/chat-conversations/data-controls/files)** located in **Settings > Data Controls > Manage Files**. Deleting files there will automatically clean up their corresponding RAG embeddings. ::: You can also load documents into the workspace area with their access by starting a prompt with `#`, followed by a URL. This can help incorporate web content directly into your conversations. @@ -169,7 +169,7 @@ When File Context is disabled, file content is **not automatically extracted or ::: :::tip Per-File Retrieval Mode -Individual files and knowledge bases can also be set to bypass RAG entirely using the **"Using Entire Document"** toggle. This injects the full file content into every message regardless of native function calling settings. See [Full Context vs Focused Retrieval](/features/workspace/knowledge#full-context-vs-focused-retrieval) for details. +Individual files and knowledge bases can also be set to bypass RAG entirely using the **"Using Entire Document"** toggle. This injects the full file content into every message regardless of native function calling settings. See [Full Context vs Focused Retrieval](/features/ai-knowledge/knowledge#full-context-vs-focused-retrieval) for details. ::: :::info @@ -241,7 +241,7 @@ When using **Temporary Chat**, document processing is restricted to **frontend-o ## Google Drive Integration -When paired with a Google Cloud project that has the Google Picker API and Google Drive API enabled, this feature allows users to directly access their Drive files from the chat interface and upload documents, slides, sheets and more and uploads them as context to your chat. Can be enabled `Admin Panel` > `Settings` > `Documents` menu. Must set [`GOOGLE_DRIVE_API_KEY and GOOGLE_DRIVE_CLIENT_ID`](../../getting-started/env-configuration.mdx) environment variables to use. +When paired with a Google Cloud project that has the Google Picker API and Google Drive API enabled, this feature allows users to directly access their Drive files from the chat interface and upload documents, slides, sheets and more and uploads them as context to your chat. Can be enabled `Admin Panel` > `Settings` > `Documents` menu. Must set [`GOOGLE_DRIVE_API_KEY and GOOGLE_DRIVE_CLIENT_ID`](/reference/env-configuration) environment variables to use. ### Detailed Instructions diff --git a/docs/features/web-search/_category_.json b/docs/features/chat-conversations/web-search/_category_.json similarity index 100% rename from docs/features/web-search/_category_.json rename to docs/features/chat-conversations/web-search/_category_.json diff --git a/docs/features/web-search/agentic-search.mdx b/docs/features/chat-conversations/web-search/agentic-search.mdx similarity index 96% rename from docs/features/web-search/agentic-search.mdx rename to docs/features/chat-conversations/web-search/agentic-search.mdx index 31977e8c05..b5dd2ff29d 100644 --- a/docs/features/web-search/agentic-search.mdx +++ b/docs/features/chat-conversations/web-search/agentic-search.mdx @@ -12,7 +12,7 @@ Agentic web search works best with frontier models like **GPT-5**, **Claude 4.5+ ::: :::info Central Tool Documentation -For comprehensive information about all built-in agentic tools (including web search, knowledge bases, memory, and more), see the [**Native/Agentic Mode Tools Guide**](/features/plugin/tools#built-in-system-tools-nativeagentic-mode). +For comprehensive information about all built-in agentic tools (including web search, knowledge bases, memory, and more), see the [**Native/Agentic Mode Tools Guide**](/features/extensibility/plugin/tools#built-in-system-tools-nativeagentic-mode). ::: ## Native Mode vs. Traditional RAG @@ -27,7 +27,7 @@ For comprehensive information about all built-in agentic tools (including web se ## How to Enable Agentic Behavior -To unlock these features, your model must support native tool calling and have strong reasoning capabilities (e.g., GPT-5, Claude 4.5 Sonnet, Gemini 3 Flash, MiniMax M2.5). Administrator-level configuration for these built-in system tools is handled via the [**Central Tool Calling Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native). +To unlock these features, your model must support native tool calling and have strong reasoning capabilities (e.g., GPT-5, Claude 4.5 Sonnet, Gemini 3 Flash, MiniMax M2.5). Administrator-level configuration for these built-in system tools is handled via the [**Central Tool Calling Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native). 1. **Enable Web Search Globally**: Ensure a search engine is configured in **Admin Panel → Settings → Web Search**. 2. **Enable Model Capability**: In **Admin Panel → Settings → Models**, select your model and enable the **Web Search** capability. @@ -144,10 +144,10 @@ This cycle repeats autonomously until the model has comprehensive, verified info This iterative loop of **Thought → Action → Thought** continues until the model has sufficient information to answer your request with maximum accuracy. :::info Learn More About Interleaved Thinking -For more details on how Interleaved Thinking works across all agentic tools (not just web search), see the [**Interleaved Thinking Guide**](/features/plugin/tools#interleaved-thinking). +For more details on how Interleaved Thinking works across all agentic tools (not just web search), see the [**Interleaved Thinking Guide**](/features/extensibility/plugin/tools#interleaved-thinking). ::: ## Next Steps - **Save your findings**: Learn how to [save web search results directly to your Knowledge Base](./save-to-knowledge). -- **Troubleshoot**: If you encounter issues, check the [Web Search Troubleshooting Guide](../../troubleshooting/web-search). +- **Troubleshoot**: If you encounter issues, check the [Web Search Troubleshooting Guide](/troubleshooting/web-search). diff --git a/docs/features/chat-conversations/web-search/providers/_category_.json b/docs/features/chat-conversations/web-search/providers/_category_.json new file mode 100644 index 0000000000..e905e1e888 --- /dev/null +++ b/docs/features/chat-conversations/web-search/providers/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Providers", + "position": 50, + "collapsible": true, + "collapsed": true +} diff --git a/docs/features/web-search/bing.md b/docs/features/chat-conversations/web-search/providers/bing.md similarity index 87% rename from docs/features/web-search/bing.md rename to docs/features/chat-conversations/web-search/providers/bing.md index 76f99d302d..a06ff5f8c2 100644 --- a/docs/features/web-search/bing.md +++ b/docs/features/chat-conversations/web-search/providers/bing.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/brave.md b/docs/features/chat-conversations/web-search/providers/brave.md similarity index 93% rename from docs/features/web-search/brave.md rename to docs/features/chat-conversations/web-search/providers/brave.md index 8d51bd7d7a..f19c440c44 100644 --- a/docs/features/web-search/brave.md +++ b/docs/features/chat-conversations/web-search/providers/brave.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/ddgs.mdx b/docs/features/chat-conversations/web-search/providers/ddgs.mdx similarity index 86% rename from docs/features/web-search/ddgs.mdx rename to docs/features/chat-conversations/web-search/providers/ddgs.mdx index 8618d052fe..59fb73c9cc 100644 --- a/docs/features/web-search/ddgs.mdx +++ b/docs/features/chat-conversations/web-search/providers/ddgs.mdx @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/exa.md b/docs/features/chat-conversations/web-search/providers/exa.md similarity index 94% rename from docs/features/web-search/exa.md rename to docs/features/chat-conversations/web-search/providers/exa.md index 9281ed9309..65f02352ad 100644 --- a/docs/features/web-search/exa.md +++ b/docs/features/chat-conversations/web-search/providers/exa.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/external.md b/docs/features/chat-conversations/web-search/providers/external.md similarity index 95% rename from docs/features/web-search/external.md rename to docs/features/chat-conversations/web-search/providers/external.md index 18c4b6a1af..24fe7aedc9 100644 --- a/docs/features/web-search/external.md +++ b/docs/features/chat-conversations/web-search/providers/external.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/google-pse.md b/docs/features/chat-conversations/web-search/providers/google-pse.md similarity index 89% rename from docs/features/web-search/google-pse.md rename to docs/features/chat-conversations/web-search/providers/google-pse.md index c1a2f7bb3f..e8500c6153 100644 --- a/docs/features/web-search/google-pse.md +++ b/docs/features/chat-conversations/web-search/providers/google-pse.md @@ -17,13 +17,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/jina.md b/docs/features/chat-conversations/web-search/providers/jina.md similarity index 96% rename from docs/features/web-search/jina.md rename to docs/features/chat-conversations/web-search/providers/jina.md index 73b22552f3..ed59ac6c81 100644 --- a/docs/features/web-search/jina.md +++ b/docs/features/chat-conversations/web-search/providers/jina.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/kagi.md b/docs/features/chat-conversations/web-search/providers/kagi.md similarity index 74% rename from docs/features/web-search/kagi.md rename to docs/features/chat-conversations/web-search/providers/kagi.md index 1f5c423828..edc4491e57 100644 --- a/docs/features/web-search/kagi.md +++ b/docs/features/chat-conversations/web-search/providers/kagi.md @@ -11,12 +11,12 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/mojeek.md b/docs/features/chat-conversations/web-search/providers/mojeek.md similarity index 86% rename from docs/features/web-search/mojeek.md rename to docs/features/chat-conversations/web-search/providers/mojeek.md index 3c9a0f5c04..81f45be440 100644 --- a/docs/features/web-search/mojeek.md +++ b/docs/features/chat-conversations/web-search/providers/mojeek.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/ollama-cloud.mdx b/docs/features/chat-conversations/web-search/providers/ollama-cloud.mdx similarity index 74% rename from docs/features/web-search/ollama-cloud.mdx rename to docs/features/chat-conversations/web-search/providers/ollama-cloud.mdx index c67a84237a..73b56e564e 100644 --- a/docs/features/web-search/ollama-cloud.mdx +++ b/docs/features/chat-conversations/web-search/providers/ollama-cloud.mdx @@ -11,12 +11,12 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/perplexity.mdx b/docs/features/chat-conversations/web-search/providers/perplexity.mdx similarity index 83% rename from docs/features/web-search/perplexity.mdx rename to docs/features/chat-conversations/web-search/providers/perplexity.mdx index f0a542b29e..f23e004265 100644 --- a/docs/features/web-search/perplexity.mdx +++ b/docs/features/chat-conversations/web-search/providers/perplexity.mdx @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/perplexity_search.mdx b/docs/features/chat-conversations/web-search/providers/perplexity_search.mdx similarity index 90% rename from docs/features/web-search/perplexity_search.mdx rename to docs/features/chat-conversations/web-search/providers/perplexity_search.mdx index bd778ce07a..4c7bcd0906 100644 --- a/docs/features/web-search/perplexity_search.mdx +++ b/docs/features/chat-conversations/web-search/providers/perplexity_search.mdx @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/searchapi.md b/docs/features/chat-conversations/web-search/providers/searchapi.md similarity index 90% rename from docs/features/web-search/searchapi.md rename to docs/features/chat-conversations/web-search/providers/searchapi.md index 82fa88a78d..fc0e903652 100644 --- a/docs/features/web-search/searchapi.md +++ b/docs/features/chat-conversations/web-search/providers/searchapi.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/searxng.md b/docs/features/chat-conversations/web-search/providers/searxng.md similarity index 97% rename from docs/features/web-search/searxng.md rename to docs/features/chat-conversations/web-search/providers/searxng.md index e3aeefd804..d2715c91b6 100644 --- a/docs/features/web-search/searxng.md +++ b/docs/features/chat-conversations/web-search/providers/searxng.md @@ -11,7 +11,7 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: @@ -347,7 +347,7 @@ docker exec -it open-webui curl http://host.docker.internal:8080/search?q=this+i :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems, including proxy configuration, connection timeouts, and empty content issues. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems, including proxy configuration, connection timeouts, and empty content issues. ::: diff --git a/docs/features/web-search/serpapi.md b/docs/features/chat-conversations/web-search/providers/serpapi.md similarity index 90% rename from docs/features/web-search/serpapi.md rename to docs/features/chat-conversations/web-search/providers/serpapi.md index 7d4c19a55f..8faa346fe4 100644 --- a/docs/features/web-search/serpapi.md +++ b/docs/features/chat-conversations/web-search/providers/serpapi.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/serper.md b/docs/features/chat-conversations/web-search/providers/serper.md similarity index 74% rename from docs/features/web-search/serper.md rename to docs/features/chat-conversations/web-search/providers/serper.md index 38e71f0c6d..b05cf6cac0 100644 --- a/docs/features/web-search/serper.md +++ b/docs/features/chat-conversations/web-search/providers/serper.md @@ -11,12 +11,12 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/serply.md b/docs/features/chat-conversations/web-search/providers/serply.md similarity index 74% rename from docs/features/web-search/serply.md rename to docs/features/chat-conversations/web-search/providers/serply.md index e15ef66968..24548a1811 100644 --- a/docs/features/web-search/serply.md +++ b/docs/features/chat-conversations/web-search/providers/serply.md @@ -11,12 +11,12 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/serpstack.md b/docs/features/chat-conversations/web-search/providers/serpstack.md similarity index 74% rename from docs/features/web-search/serpstack.md rename to docs/features/chat-conversations/web-search/providers/serpstack.md index bc56e6a5b0..bbdc3a81a7 100644 --- a/docs/features/web-search/serpstack.md +++ b/docs/features/chat-conversations/web-search/providers/serpstack.md @@ -11,12 +11,12 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/tavily.md b/docs/features/chat-conversations/web-search/providers/tavily.md similarity index 94% rename from docs/features/web-search/tavily.md rename to docs/features/chat-conversations/web-search/providers/tavily.md index 8853c1f2de..68bce33690 100644 --- a/docs/features/web-search/tavily.md +++ b/docs/features/chat-conversations/web-search/providers/tavily.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: @@ -78,7 +78,7 @@ Ensure you have: ``` See [Environment Variable Configuration](https://docs.openwebui.com/environment). -- **RAG Integration**: Combine Tavily results with local data using Retrieval Augmented Generation. Refer to [RAG Documentation](https://docs.openwebui.com/features/rag). +- **RAG Integration**: Combine Tavily results with local data using Retrieval Augmented Generation. Refer to [RAG Documentation](https://docs.openwebui.com/features/chat-conversations/rag). ## Troubleshooting diff --git a/docs/features/web-search/yacy.md b/docs/features/chat-conversations/web-search/providers/yacy.md similarity index 88% rename from docs/features/web-search/yacy.md rename to docs/features/chat-conversations/web-search/providers/yacy.md index a3bcfd8f3f..7464a3b6f5 100644 --- a/docs/features/web-search/yacy.md +++ b/docs/features/chat-conversations/web-search/providers/yacy.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/yandex.md b/docs/features/chat-conversations/web-search/providers/yandex.md similarity index 89% rename from docs/features/web-search/yandex.md rename to docs/features/chat-conversations/web-search/providers/yandex.md index 4dc1c9ee95..3b0c81e475 100644 --- a/docs/features/web-search/yandex.md +++ b/docs/features/chat-conversations/web-search/providers/yandex.md @@ -11,13 +11,13 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::tip -For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](../../getting-started/env-configuration#web-search). +For a comprehensive list of all environment variables related to Web Search (including concurrency settings, result counts, and more), please refer to the [Environment Configuration documentation](/reference/env-configuration#web-search). ::: :::tip Troubleshooting -Having issues with web search? Check out the [Web Search Troubleshooting Guide](../../troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. +Having issues with web search? Check out the [Web Search Troubleshooting Guide](/troubleshooting/web-search) for solutions to common problems like proxy configuration, connection timeouts, and empty content. ::: diff --git a/docs/features/web-search/save-to-knowledge.mdx b/docs/features/chat-conversations/web-search/save-to-knowledge.mdx similarity index 100% rename from docs/features/web-search/save-to-knowledge.mdx rename to docs/features/chat-conversations/web-search/save-to-knowledge.mdx diff --git a/docs/features/extensibility/_category_.json b/docs/features/extensibility/_category_.json new file mode 100644 index 0000000000..d8470a22e2 --- /dev/null +++ b/docs/features/extensibility/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "🔌 Plugins & Extensibility", + "position": 40, + "collapsible": true, + "collapsed": true +} diff --git a/docs/features/mcp.mdx b/docs/features/extensibility/mcp.mdx similarity index 98% rename from docs/features/mcp.mdx rename to docs/features/extensibility/mcp.mdx index cba2b6de74..cdf542a83c 100644 --- a/docs/features/mcp.mdx +++ b/docs/features/extensibility/mcp.mdx @@ -47,7 +47,7 @@ Choose **OpenAPI** if you want: Choose **MCP (Streamable HTTP)** if you need: * A **common tool protocol** already used by your MCP servers/clients. -* **Streamed** protocol communication over HTTP (Note: This refers to MCP's transport-level streaming, not Open WebUI's [UI event system](/features/plugin/development/events) which is only available for native Python tools). +* **Streamed** protocol communication over HTTP (Note: This refers to MCP's transport-level streaming, not Open WebUI's [UI event system](/features/extensibility/plugin/development/events) which is only available for native Python tools). > You don’t have to pick one: many teams expose OpenAPI internally and **wrap MCP** at the edge for specific clients. diff --git a/docs/features/open-terminal/index.md b/docs/features/extensibility/open-terminal/index.md similarity index 92% rename from docs/features/open-terminal/index.md rename to docs/features/extensibility/open-terminal/index.md index 745bc81dc0..cf7130d906 100644 --- a/docs/features/open-terminal/index.md +++ b/docs/features/extensibility/open-terminal/index.md @@ -13,7 +13,7 @@ This page is up-to-date with Open Terminal release version [v0.1.10](https://git ## Overview -[Open Terminal](https://github.com/open-webui/open-terminal) is a lightweight API for running shell commands remotely — with real-time streaming and secure access. When connected to Open WebUI as a [Tool](/features/plugin/tools), it gives models full shell access, file management, and the ability to execute arbitrary commands in an isolated environment. +[Open Terminal](https://github.com/open-webui/open-terminal) is a lightweight API for running shell commands remotely — with real-time streaming and secure access. When connected to Open WebUI as a [Tool](/features/extensibility/plugin/tools), it gives models full shell access, file management, and the ability to execute arbitrary commands in an isolated environment. Unlike Pyodide (browser-based, limited libraries) or Jupyter (shared environment, no per-user isolation), Open Terminal runs in its own Docker container with full OS-level capabilities. This makes it ideal for tasks that require: @@ -110,12 +110,12 @@ When no API key is provided, Open Terminal generates a random key using a crypto ## Connecting to Open WebUI -Open Terminal is a FastAPI application and automatically exposes an OpenAPI specification at `/openapi.json`. This means it works out of the box as an [OpenAPI Tool Server](/features/plugin/tools/openapi-servers/open-webui) — no manual tool creation required. +Open Terminal is a FastAPI application and automatically exposes an OpenAPI specification at `/openapi.json`. This means it works out of the box as an [OpenAPI Tool Server](/features/extensibility/plugin/tools/openapi-servers/open-webui) — no manual tool creation required. - **As a User Tool Server**: Add it in **Settings → Tools** to connect directly from your browser. Ideal for personal or local instances. - **As a Global Tool Server**: Add it in **Admin Settings → Tools** to make it available to all users across the deployment. -For step-by-step instructions with screenshots, see the [OpenAPI Tool Server Integration Guide](/features/plugin/tools/openapi-servers/open-webui). +For step-by-step instructions with screenshots, see the [OpenAPI Tool Server Integration Guide](/features/extensibility/plugin/tools/openapi-servers/open-webui). ## API Reference @@ -251,6 +251,6 @@ Returns service status. No authentication required. - [Open Terminal GitHub Repository](https://github.com/open-webui/open-terminal) - [Interactive API Documentation](http://localhost:8000/docs) (available when running locally) -- [Python Code Execution](/features/chat-features/code-execution/python) — Pyodide and Jupyter backends -- [Jupyter Integration Tutorial](/tutorials/integrations/jupyter) — Setting up Jupyter as a code execution backend -- [Skills](/features/workspace/skills) — Using skills with code execution +- [Python Code Execution](/features/chat-conversations/chat-features/code-execution/python) — Pyodide and Jupyter backends +- [Jupyter Integration Tutorial](/tutorials/integrations/dev-tools/jupyter) — Setting up Jupyter as a code execution backend +- [Skills](/features/ai-knowledge/skills) — Using skills with code execution diff --git a/docs/features/pipelines/_category_.json b/docs/features/extensibility/pipelines/_category_.json similarity index 100% rename from docs/features/pipelines/_category_.json rename to docs/features/extensibility/pipelines/_category_.json diff --git a/docs/features/pipelines/filters.md b/docs/features/extensibility/pipelines/filters.md similarity index 100% rename from docs/features/pipelines/filters.md rename to docs/features/extensibility/pipelines/filters.md diff --git a/docs/features/pipelines/index.mdx b/docs/features/extensibility/pipelines/index.mdx similarity index 100% rename from docs/features/pipelines/index.mdx rename to docs/features/extensibility/pipelines/index.mdx diff --git a/docs/features/pipelines/pipes.md b/docs/features/extensibility/pipelines/pipes.md similarity index 100% rename from docs/features/pipelines/pipes.md rename to docs/features/extensibility/pipelines/pipes.md diff --git a/docs/features/pipelines/tutorials.md b/docs/features/extensibility/pipelines/tutorials.md similarity index 100% rename from docs/features/pipelines/tutorials.md rename to docs/features/extensibility/pipelines/tutorials.md diff --git a/docs/features/pipelines/valves.md b/docs/features/extensibility/pipelines/valves.md similarity index 86% rename from docs/features/pipelines/valves.md rename to docs/features/extensibility/pipelines/valves.md index 05c2abbb92..6e333d3dba 100644 --- a/docs/features/pipelines/valves.md +++ b/docs/features/extensibility/pipelines/valves.md @@ -5,7 +5,7 @@ title: "Valves" ## Valves -`Valves` (see the dedicated [Valves & UserValves](/features/plugin/development/valves) page) can also be set for `Pipeline`. In short, `Valves` are input variables that are set per pipeline. +`Valves` (see the dedicated [Valves & UserValves](/features/extensibility/plugin/development/valves) page) can also be set for `Pipeline`. In short, `Valves` are input variables that are set per pipeline. `Valves` are set as a subclass of the `Pipeline` class, and initialized as part of the `__init__` method of the `Pipeline` class. diff --git a/docs/features/plugin/development/_category_.json b/docs/features/extensibility/plugin/development/_category_.json similarity index 100% rename from docs/features/plugin/development/_category_.json rename to docs/features/extensibility/plugin/development/_category_.json diff --git a/docs/features/plugin/development/events.mdx b/docs/features/extensibility/plugin/development/events.mdx similarity index 99% rename from docs/features/plugin/development/events.mdx rename to docs/features/extensibility/plugin/development/events.mdx index de3b5229e6..2fa22a6ffe 100644 --- a/docs/features/plugin/development/events.mdx +++ b/docs/features/extensibility/plugin/development/events.mdx @@ -117,7 +117,7 @@ Below is a comprehensive table of **all supported `type` values** for events, al | `chat:message:files`,
`files` | Set or overwrite message files (for uploads, output) | `{files: [...]}` | | `chat:title` | Set (or update) the chat conversation title | Topic string OR `{title: ...}` | | `chat:tags` | Update the set of tags for a chat | Tag array or object | -| `source`,
`citation` | Add a source/citation, or code execution result | For code: See [below.](/features/plugin/development/events#source-or-citation-and-code-execution) | +| `source`,
`citation` | Add a source/citation, or code execution result | For code: See [below.](/features/extensibility/plugin/development/events#source-or-citation-and-code-execution) | | `notification` | Show a notification ("toast") in the UI | `{type: "info" or "success" or "error" or "warning", content: "..."}` | | `confirmation`
(needs `__event_call__`) | Ask for confirmation (OK/Cancel dialog) | `{title: "...", message: "..."}` | | `input`
(needs `__event_call__`) | Request simple user input ("input box" dialog) | `{title: "...", message: "...", placeholder: "...", value: ...}` | diff --git a/docs/features/plugin/development/reserved-args.mdx b/docs/features/extensibility/plugin/development/reserved-args.mdx similarity index 98% rename from docs/features/plugin/development/reserved-args.mdx rename to docs/features/extensibility/plugin/development/reserved-args.mdx index 133381ed73..b17068d696 100644 --- a/docs/features/plugin/development/reserved-args.mdx +++ b/docs/features/extensibility/plugin/development/reserved-args.mdx @@ -328,7 +328,7 @@ Note that the same files dict can also be accessed via `__metadata__["files"]` ( ### `__request__` -An instance of `fastapi.Request`. You can read more in the [migration page](/features/plugin/migration/) or in [fastapi's documentation](https://fastapi.tiangolo.com/reference/request/). +An instance of `fastapi.Request`. You can read more in the [migration page](/features/extensibility/plugin/migration/) or in [fastapi's documentation](https://fastapi.tiangolo.com/reference/request/). ### `__task__` diff --git a/docs/features/plugin/development/rich-ui.mdx b/docs/features/extensibility/plugin/development/rich-ui.mdx similarity index 100% rename from docs/features/plugin/development/rich-ui.mdx rename to docs/features/extensibility/plugin/development/rich-ui.mdx diff --git a/docs/features/plugin/development/valves.mdx b/docs/features/extensibility/plugin/development/valves.mdx similarity index 100% rename from docs/features/plugin/development/valves.mdx rename to docs/features/extensibility/plugin/development/valves.mdx diff --git a/docs/features/plugin/functions/action.mdx b/docs/features/extensibility/plugin/functions/action.mdx similarity index 97% rename from docs/features/plugin/functions/action.mdx rename to docs/features/extensibility/plugin/functions/action.mdx index 55cdededee..9d088be53b 100644 --- a/docs/features/plugin/functions/action.mdx +++ b/docs/features/extensibility/plugin/functions/action.mdx @@ -64,7 +64,7 @@ Actions can utilize Open WebUI's real-time event system for interactive experien ### Event Emitter (`__event_emitter__`) -**For more information about Events and Event emitters, see [Events and Event Emitters](https://docs.openwebui.com/features/plugin/events/).** +**For more information about Events and Event emitters, see [Events and Event Emitters](https://docs.openwebui.com/features/extensibility/plugin/events/).** Send real-time updates to the frontend during action execution: @@ -316,6 +316,6 @@ Actions integrate seamlessly with other Open WebUI features: - **Files** - Actions can process uploaded files and generate new ones - **Memory** - Actions can access conversation history and context - **Permissions** - Actions respect user roles and access controls -- **[Rich UI Embedding](/features/plugin/development/rich-ui)** - Actions can return HTML content that renders as interactive iframes in the chat +- **[Rich UI Embedding](/features/extensibility/plugin/development/rich-ui)** - Actions can return HTML content that renders as interactive iframes in the chat For more examples and community-contributed actions, visit [https://openwebui.com/search](https://openwebui.com/search) where you can discover, download, and explore custom functions built by the Open WebUI community. diff --git a/docs/features/plugin/functions/filter.mdx b/docs/features/extensibility/plugin/functions/filter.mdx similarity index 100% rename from docs/features/plugin/functions/filter.mdx rename to docs/features/extensibility/plugin/functions/filter.mdx diff --git a/docs/features/plugin/functions/index.mdx b/docs/features/extensibility/plugin/functions/index.mdx similarity index 100% rename from docs/features/plugin/functions/index.mdx rename to docs/features/extensibility/plugin/functions/index.mdx diff --git a/docs/features/plugin/functions/pipe.mdx b/docs/features/extensibility/plugin/functions/pipe.mdx similarity index 100% rename from docs/features/plugin/functions/pipe.mdx rename to docs/features/extensibility/plugin/functions/pipe.mdx diff --git a/docs/features/plugin/index.mdx b/docs/features/extensibility/plugin/index.mdx similarity index 100% rename from docs/features/plugin/index.mdx rename to docs/features/extensibility/plugin/index.mdx diff --git a/docs/features/plugin/migration/index.mdx b/docs/features/extensibility/plugin/migration/index.mdx similarity index 100% rename from docs/features/plugin/migration/index.mdx rename to docs/features/extensibility/plugin/migration/index.mdx diff --git a/docs/features/plugin/tools/development.mdx b/docs/features/extensibility/plugin/tools/development.mdx similarity index 98% rename from docs/features/plugin/tools/development.mdx rename to docs/features/extensibility/plugin/tools/development.mdx index 789e437281..27bf55bc57 100644 --- a/docs/features/plugin/tools/development.mdx +++ b/docs/features/extensibility/plugin/tools/development.mdx @@ -56,7 +56,7 @@ Each tool must have type hints for arguments. The types may also be nested, such ### Valves and UserValves - (optional, but HIGHLY encouraged) -Valves and UserValves are used for specifying customizable settings of the Tool, you can read more on the dedicated [Valves & UserValves page](/features/plugin/development/valves). +Valves and UserValves are used for specifying customizable settings of the Tool, you can read more on the dedicated [Valves & UserValves page](/features/extensibility/plugin/development/valves). ### Optional Arguments Below is a list of optional arguments your tools can depend on: @@ -69,7 +69,7 @@ Below is a list of optional arguments your tools can depend on: - `__model__`: A dictionary with model information - `__oauth_token__`: A dictionary containing the user's valid, automatically refreshed OAuth token payload. This is the **new, recommended, and secure** way to access user tokens for making authenticated API calls. The dictionary typically contains `access_token`, `id_token`, and other provider-specific data. -For more information about `__oauth_token__` and how to configure this token to be sent to tools, check out the OAuth section in the [environment variable docs page](https://docs.openwebui.com/getting-started/env-configuration/) and the [SSO documentation](https://docs.openwebui.com/features/auth/). +For more information about `__oauth_token__` and how to configure this token to be sent to tools, check out the OAuth section in the [environment variable docs page](https://docs.openwebui.com/reference/env-configuration/) and the [SSO documentation](https://docs.openwebui.com/features/auth/). Just add them as argument to any method of your Tool class just like `__user__` in the example above. @@ -130,7 +130,7 @@ Before using event emitters, you must understand these critical limitations: - **Native Mode (Agentic Mode)** (`function_calling = "native"`): **Limited event emitter support** - many event types don't work properly due to native function calling bypassing Open WebUI's custom tool processing pipeline **When to Use Each Mode:** -For a comprehensive guide on choosing a function calling mode, including model requirements and administrator setup, refer to the [**Central Tool Calling Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native). +For a comprehensive guide on choosing a function calling mode, including model requirements and administrator setup, refer to the [**Central Tool Calling Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native). In general: - **Use Default Mode** when you need full event emitter functionality, complex tool interactions, or real-time UI updates. @@ -146,7 +146,7 @@ You can configure the function calling mode in two places: If the model seems to be unable to call the tool, make sure it is enabled (either via the Model page or via the `+` sign next to the chat input field). :::info Native Mode & Built-in Tools -When writing custom tools, be aware that Open WebUI also provides **built-in system tools** when Native Mode is enabled. For details on built-in tools, function calling modes, and model requirements, see the [**Tool Calling Modes Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native). +When writing custom tools, be aware that Open WebUI also provides **built-in system tools** when Native Mode is enabled. For details on built-in tools, function calling modes, and model requirements, see the [**Tool Calling Modes Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native). ::: @@ -1498,7 +1498,7 @@ from typing import Optional, Callable, Awaitable ### Rich UI Element Embedding -Tools and Actions can return HTML content that renders as interactive iframes directly in the chat. For full documentation, examples, security considerations, and CORS configuration, see the dedicated **[Rich UI Embedding](/features/plugin/development/rich-ui)** guide. +Tools and Actions can return HTML content that renders as interactive iframes directly in the chat. For full documentation, examples, security considerations, and CORS configuration, see the dedicated **[Rich UI Embedding](/features/extensibility/plugin/development/rich-ui)** guide. ## External packages @@ -1513,7 +1513,7 @@ When multiple tools define different versions of the same package (e.g., Tool A **The only robust solution to this problem is to use an OpenAPI tool server.** -We strongly recommend using an [OpenAPI tool server](/features/plugin/tools/openapi-servers/) to avoid these dependency conflicts. +We strongly recommend using an [OpenAPI tool server](/features/extensibility/plugin/tools/openapi-servers/) to avoid these dependency conflicts. ::: diff --git a/docs/features/plugin/tools/index.mdx b/docs/features/extensibility/plugin/tools/index.mdx similarity index 98% rename from docs/features/plugin/tools/index.mdx rename to docs/features/extensibility/plugin/tools/index.mdx index b76a364ae2..a5aca6d5da 100644 --- a/docs/features/plugin/tools/index.mdx +++ b/docs/features/extensibility/plugin/tools/index.mdx @@ -282,7 +282,7 @@ For the full RAG pipeline with hybrid search and reranking, use the **File Conte 2. **Or disable Native Function Calling** for that model to restore automatic RAG injection. 3. **Or use "Full Context" mode** for attached knowledge (click on the attachment and select "Use Entire Document") which always injects the full content. -See [Knowledge Scoping with Native Function Calling](/features/workspace/knowledge#knowledge-scoping-with-native-function-calling) for more details. +See [Knowledge Scoping with Native Function Calling](/features/ai-knowledge/knowledge#knowledge-scoping-with-native-function-calling) for more details. ::: **Why use these?** It allows for **Deep Research** (searching the web multiple times, or querying knowledge bases), **Contextual Awareness** (looking up previous chats or notes), **Dynamic Personalization** (saving facts), and **Precise Automation** (generating content based on existing notes or documents). @@ -345,7 +345,7 @@ Enabling a per-model category toggle does **not** override global feature flags. - **File Context** = Whether Open WebUI extracts and injects file content (RAG processing) - **Builtin Tools** = Whether the model gets tools to autonomously search/retrieve additional content -See [File Context vs Builtin Tools](../../rag/index.md#file-context-vs-builtin-tools) for a detailed comparison. +See [File Context vs Builtin Tools](/features/chat-conversations/rag#file-context-vs-builtin-tools) for a detailed comparison. ::: ### Interleaved Thinking {#interleaved-thinking} diff --git a/docs/features/plugin/tools/openapi-servers/faq.mdx b/docs/features/extensibility/plugin/tools/openapi-servers/faq.mdx similarity index 100% rename from docs/features/plugin/tools/openapi-servers/faq.mdx rename to docs/features/extensibility/plugin/tools/openapi-servers/faq.mdx diff --git a/docs/features/plugin/tools/openapi-servers/index.mdx b/docs/features/extensibility/plugin/tools/openapi-servers/index.mdx similarity index 90% rename from docs/features/plugin/tools/openapi-servers/index.mdx rename to docs/features/extensibility/plugin/tools/openapi-servers/index.mdx index 9ab87319de..8fb9a67fd0 100644 --- a/docs/features/plugin/tools/openapi-servers/index.mdx +++ b/docs/features/extensibility/plugin/tools/openapi-servers/index.mdx @@ -29,10 +29,10 @@ By leveraging OpenAPI, we eliminate the need for a proprietary or unfamiliar com While OpenAPI tools are powerful for extending Open WebUI with external services, they have some constraints compared to native Python tools: -- **One-way events only**: OpenAPI tools can emit status updates, notifications, and other [one-way events](/features/plugin/development/events#-external-tool-events) via the REST endpoint. Open WebUI passes `X-Open-WebUI-Chat-Id` and `X-Open-WebUI-Message-Id` headers to enable this. However, interactive events (user input prompts, confirmations) are only available for native Python tools. +- **One-way events only**: OpenAPI tools can emit status updates, notifications, and other [one-way events](/features/extensibility/plugin/development/events#-external-tool-events) via the REST endpoint. Open WebUI passes `X-Open-WebUI-Chat-Id` and `X-Open-WebUI-Message-Id` headers to enable this. However, interactive events (user input prompts, confirmations) are only available for native Python tools. - **No streaming output**: Tool responses are returned as complete results, not streamed token-by-token. -If you need interactive UI feedback (confirmations, user input prompts), consider implementing your tool as a [native Python Tool](/features/plugin/tools/development) instead. +If you need interactive UI feedback (confirmations, user input prompts), consider implementing your tool as a [native Python Tool](/features/extensibility/plugin/tools/development) instead. ## 🚀 Quickstart diff --git a/docs/features/plugin/tools/openapi-servers/mcp.mdx b/docs/features/extensibility/plugin/tools/openapi-servers/mcp.mdx similarity index 96% rename from docs/features/plugin/tools/openapi-servers/mcp.mdx rename to docs/features/extensibility/plugin/tools/openapi-servers/mcp.mdx index c517439284..a388fafd49 100644 --- a/docs/features/plugin/tools/openapi-servers/mcp.mdx +++ b/docs/features/extensibility/plugin/tools/openapi-servers/mcp.mdx @@ -46,7 +46,7 @@ So even though adding mcpo might at first seem like "just one more layer"—in r ✨ With mcpo, your local-only AI tools become cloud-ready, UI-friendly, and instantly interoperable—without changing a single line of tool server code. :::tip -**Events Supported**: While mcpo exposes MCP tools as OpenAPI endpoints, they can still emit events (status updates, notifications) via Open WebUI's [event REST endpoint](/features/plugin/development/events#-external-tool-events). Open WebUI automatically passes the required `X-Open-WebUI-Chat-Id` and `X-Open-WebUI-Message-Id` headers to your tool. However, interactive events requiring user input are only available for native Python tools. +**Events Supported**: While mcpo exposes MCP tools as OpenAPI endpoints, they can still emit events (status updates, notifications) via Open WebUI's [event REST endpoint](/features/extensibility/plugin/development/events#-external-tool-events). Open WebUI automatically passes the required `X-Open-WebUI-Chat-Id` and `X-Open-WebUI-Message-Id` headers to your tool. However, interactive events requiring user input are only available for native Python tools. ::: ### ✅ Quickstart: Running the Proxy Locally diff --git a/docs/features/plugin/tools/openapi-servers/open-webui.mdx b/docs/features/extensibility/plugin/tools/openapi-servers/open-webui.mdx similarity index 100% rename from docs/features/plugin/tools/openapi-servers/open-webui.mdx rename to docs/features/extensibility/plugin/tools/openapi-servers/open-webui.mdx diff --git a/docs/features/index.mdx b/docs/features/index.mdx index b7f44d1498..54f7723b50 100644 --- a/docs/features/index.mdx +++ b/docs/features/index.mdx @@ -15,13 +15,13 @@ import { TopBanners } from "@site/src/components/TopBanners"; - 🤝 **Universal API Compatibility**: Effortlessly integrate with any backend that follows the **OpenAI Chat Completions protocol**. This includes official OpenAI endpoints alongside dozens of third-party and local providers. The API URL can be customized to integrate Open WebUI seamlessly into your existing infrastructure. [See Setup Guide](/getting-started/quick-start). -- 🛡️ **Granular Permissions and User Groups**: By allowing administrators to create detailed user roles, user groups, and permissions across the workspace, we ensure a secure user environment for all users involved. This granularity not only enhances security, but also allows for customized user experiences, fostering a sense of ownership and responsibility amongst users. [Learn more about RBAC](/features/rbac). +- 🛡️ **Granular Permissions and User Groups**: By allowing administrators to create detailed user roles, user groups, and permissions across the workspace, we ensure a secure user environment for all users involved. This granularity not only enhances security, but also allows for customized user experiences, fostering a sense of ownership and responsibility amongst users. [Learn more about RBAC](/features/access-security/rbac). -- 🔐 **SCIM 2.0 Provisioning**: Enterprise-grade user and group provisioning through SCIM 2.0 protocol, enabling seamless integration with identity providers like Okta, Azure AD, and Google Workspace for automated user lifecycle management. [Read the SCIM Guide](/features/auth/scim). +- 🔐 **SCIM 2.0 Provisioning**: Enterprise-grade user and group provisioning through SCIM 2.0 protocol, enabling seamless integration with identity providers like Okta, Azure AD, and Google Workspace for automated user lifecycle management. [Read the SCIM Guide](/features/access-security/auth/scim). -- 📂 **Centralized File Management**: A unified dashboard to search, view, and manage all your uploaded documents in one place. Includes automated cleanup of Knowledge Base associations and vector embeddings when deleting files. [Learn about File Management](/features/data-controls/files). +- 📂 **Centralized File Management**: A unified dashboard to search, view, and manage all your uploaded documents in one place. Includes automated cleanup of Knowledge Base associations and vector embeddings when deleting files. [Learn about File Management](/features/chat-conversations/data-controls/files). -- 💬 **Shared Chat Management**: A centralized interface to audit every conversation you've ever shared. Easily search through your shared history, re-copy links, or revoke (unshare) access instantly from a single location. [Learn about Shared Chats](/features/data-controls/shared-chats). +- 💬 **Shared Chat Management**: A centralized interface to audit every conversation you've ever shared. Easily search through your shared history, re-copy links, or revoke (unshare) access instantly from a single location. [Learn about Shared Chats](/features/chat-conversations/data-controls/shared-chats). - 📱 **Responsive Design**: Enjoy a seamless experience across desktop PCs, laptops, and mobile devices. @@ -35,13 +35,13 @@ import { TopBanners } from "@site/src/components/TopBanners"; - ✒️🔢 **Full Markdown and LaTeX Support**: Elevate your LLM experience with comprehensive Markdown, LaTex, and Rich Text capabilities for enriched interaction. [Explore Interface Features](/category/interface). -- 🧩 **Model Builder**: Easily create custom models from base Ollama models directly from Open WebUI. Create and add custom characters and agents, customize model elements, and import models effortlessly through [Open WebUI Community](https://openwebui.com/) integration. [Learn more about Models](/features/workspace/models). +- 🧩 **Model Builder**: Easily create custom models from base Ollama models directly from Open WebUI. Create and add custom characters and agents, customize model elements, and import models effortlessly through [Open WebUI Community](https://openwebui.com/) integration. [Learn more about Models](/features/ai-knowledge/models). -- 📚 **Advanced RAG Integration with Multiple Vector Databases**: Dive into the future of chat interactions with cutting-edge Retrieval Augmented Generation (RAG) technology. Choose from 9 vector database options: ChromaDB (default), PostgreSQL with PGVector, Qdrant, Milvus, Elasticsearch, OpenSearch, Pinecone, S3Vector, and Oracle 23ai. Documents can be loaded into the `Documents` tab of the Workspace and accessed using the pound key [`#`] before a query, or by starting the prompt with [`#`] followed by a URL for webpage content integration. [Learn more about RAG](/features/rag). +- 📚 **Advanced RAG Integration with Multiple Vector Databases**: Dive into the future of chat interactions with cutting-edge Retrieval Augmented Generation (RAG) technology. Choose from 9 vector database options: ChromaDB (default), PostgreSQL with PGVector, Qdrant, Milvus, Elasticsearch, OpenSearch, Pinecone, S3Vector, and Oracle 23ai. Documents can be loaded into the `Documents` tab of the Workspace and accessed using the pound key [`#`] before a query, or by starting the prompt with [`#`] followed by a URL for webpage content integration. [Learn more about RAG](/features/chat-conversations/rag). -- 📄 **Advanced Document Extraction with Multiple Engines**: Extract text and data from various document formats including PDFs, Word documents, Excel spreadsheets, PowerPoint presentations, and more using your choice of extraction engines: Apache Tika, Docling, Azure Document Intelligence, Mistral OCR, or external custom (self-built) content extraction engines/document loaders. Advanced document processing capabilities enable seamless integration with your knowledge base, preserving structure and formatting while supporting OCR for scanned documents and images. [Read about Document Extraction](/features/rag/document-extraction). +- 📄 **Advanced Document Extraction with Multiple Engines**: Extract text and data from various document formats including PDFs, Word documents, Excel spreadsheets, PowerPoint presentations, and more using your choice of extraction engines: Apache Tika, Docling, Azure Document Intelligence, Mistral OCR, or external custom (self-built) content extraction engines/document loaders. Advanced document processing capabilities enable seamless integration with your knowledge base, preserving structure and formatting while supporting OCR for scanned documents and images. [Read about Document Extraction](/features/chat-conversations/rag/document-extraction). -- 🔍 **Web Search for RAG & Agentic Research**: Perform web searches using 15+ providers including SearXNG, Google PSE, Brave Search, Kagi, Mojeek, Bocha, Tavily, Perplexity, and more. When using **Native Function Calling**, models can perform multiple searches sequentially and use the `fetch_url` tool to read full page content for deep research. [Learn about Agentic Search](/features/web-search/agentic-search). +- 🔍 **Web Search for RAG & Agentic Research**: Perform web searches using 15+ providers including SearXNG, Google PSE, Brave Search, Kagi, Mojeek, Bocha, Tavily, Perplexity, and more. When using **Native Function Calling**, models can perform multiple searches sequentially and use the `fetch_url` tool to read full page content for deep research. [Learn about Agentic Search](/features/chat-conversations/web-search/agentic-search). - 🌐 **Web Browsing & URL Fetching**: Integrate websites by using the `#` command or allow the model to independently visit links using the `fetch_url` tool in Native Mode, extracting full text content for precise analysis. @@ -49,19 +49,19 @@ import { TopBanners } from "@site/src/components/TopBanners"; - ⚙️ **Concurrent Model Utilization**: Effortlessly engage with multiple models simultaneously, harnessing their unique strengths for optimal responses. Leverage a diverse set of model modalities in parallel to enhance your experience. -- 🔐 **Role-Based Access Control (RBAC)**: Ensure secure access with restricted permissions. Only authorized individuals can access your Ollama, while model creation and pulling rights are exclusively reserved for administrators. [Learn more about RBAC](/features/rbac). +- 🔐 **Role-Based Access Control (RBAC)**: Ensure secure access with restricted permissions. Only authorized individuals can access your Ollama, while model creation and pulling rights are exclusively reserved for administrators. [Learn more about RBAC](/features/access-security/rbac). - 🌐🌍 **Multilingual Support**: Experience Open WebUI in your preferred language with our internationalization (`i18n`) support. We invite you to join us in expanding our supported languages! We're actively seeking contributors! -- 💾 **Persistent Artifact Storage**: Built-in key-value storage API for artifacts, enabling features like journals, trackers, leaderboards, and collaborative tools with both personal and shared data scopes that persist across sessions. [Explore Chat Features](/features/chat-features). +- 💾 **Persistent Artifact Storage**: Built-in key-value storage API for artifacts, enabling features like journals, trackers, leaderboards, and collaborative tools with both personal and shared data scopes that persist across sessions. [Explore Chat Features](/features/chat-conversations/chat-features). -- ☁️ **Cloud Storage Integration**: Native support for cloud storage backends including Amazon S3 (with S3-compatible providers), Google Cloud Storage, and Microsoft Azure Blob Storage for scalable file storage and data management. [See Storage Config](/getting-started/env-configuration#cloud-storage). +- ☁️ **Cloud Storage Integration**: Native support for cloud storage backends including Amazon S3 (with S3-compatible providers), Google Cloud Storage, and Microsoft Azure Blob Storage for scalable file storage and data management. [See Storage Config](/reference/env-configuration#cloud-storage). -- ☁️ **Enterprise Cloud Integration**: Seamlessly import documents from Google Drive and OneDrive/SharePoint directly through the file picker interface, enabling smooth workflows with enterprise cloud storage solutions. [Learn more in Environment Config](/getting-started/env-configuration#onedrive) and check out the [SharePoint Guide](/tutorials/integrations/onedrive-sharepoint/). +- ☁️ **Enterprise Cloud Integration**: Seamlessly import documents from Google Drive and OneDrive/SharePoint directly through the file picker interface, enabling smooth workflows with enterprise cloud storage solutions. [Learn more in Environment Config](/reference/env-configuration#onedrive) and check out the [SharePoint Guide](/tutorials/integrations/onedrive-sharepoint/). -- 📊 **Production Observability with OpenTelemetry**: Built-in OpenTelemetry support for comprehensive monitoring with traces, metrics, and logs export to your existing observability stack (Prometheus, Grafana, Jaeger, etc.), enabling production-grade monitoring and debugging. [See Observability Config](/getting-started/env-configuration/#opentelemetry-configuration). +- 📊 **Production Observability with OpenTelemetry**: Built-in OpenTelemetry support for comprehensive monitoring with traces, metrics, and logs export to your existing observability stack (Prometheus, Grafana, Jaeger, etc.), enabling production-grade monitoring and debugging. [See Observability Config](/reference/env-configuration/#opentelemetry-configuration). -- 🔒 **Encrypted Database Support**: Optional at-rest encryption for SQLite databases using SQLCipher, providing enhanced security for sensitive data in smaller deployments without requiring PostgreSQL infrastructure. [See Database Encryption](/getting-started/env-configuration#encrypted-sqlite-with-sqlcipher). +- 🔒 **Encrypted Database Support**: Optional at-rest encryption for SQLite databases using SQLCipher, providing enhanced security for sensitive data in smaller deployments without requiring PostgreSQL infrastructure. [See Database Encryption](/reference/env-configuration#encrypted-sqlite-with-sqlcipher). - ⚖️ **Horizontal Scalability for Production**: Redis-backed session management and WebSocket support enabling multi-worker and multi-node deployments behind load balancers for high-availability production environments. [See Advanced Topics](/getting-started/advanced-topics) and our [Multi-Replica Guide](/troubleshooting/multi-replica). @@ -73,9 +73,9 @@ import { TopBanners } from "@site/src/components/TopBanners"; ### 🔧 Pipelines Support -- 🔧 **Pipelines Framework**: Seamlessly integrate and customize your Open WebUI experience with our modular plugin framework for enhanced customization and functionality (https://github.com/open-webui/pipelines). Our framework allows for the easy addition of custom logic and integration of Python libraries, from AI agents to home automation APIs. Perfect for plugin and tool development, as well as creating custom functions and filters. [Learn more about Pipelines](/features/pipelines). +- 🔧 **Pipelines Framework**: Seamlessly integrate and customize your Open WebUI experience with our modular plugin framework for enhanced customization and functionality (https://github.com/open-webui/pipelines). Our framework allows for the easy addition of custom logic and integration of Python libraries, from AI agents to home automation APIs. Perfect for plugin and tool development, as well as creating custom functions and filters. [Learn more about Pipelines](/features/extensibility/pipelines). -- �️ **Native Python Function Calling**: Access the power of Python directly within Open WebUI with native function calling. Easily integrate custom code to build unique features like custom RAG pipelines, web search tools, and even agent-like actions via a built-in code editor to seamlessly develop and integrate function code within the `Tools` and `Functions` workspace. [Learn more about Tools](/features/plugin/tools). +- �️ **Native Python Function Calling**: Access the power of Python directly within Open WebUI with native function calling. Easily integrate custom code to build unique features like custom RAG pipelines, web search tools, and even agent-like actions via a built-in code editor to seamlessly develop and integrate function code within the `Tools` and `Functions` workspace. [Learn more about Tools](/features/extensibility/plugin/tools). - �📥 **Upload Pipeline**: Pipelines can be uploaded directly from the `Admin Panel` > `Settings` > `Pipelines` menu, streamlining the pipeline management process. @@ -122,7 +122,7 @@ import { TopBanners } from "@site/src/components/TopBanners"; - 🖼️ **Custom Background Support**: Set a custom background from Settings > Interface to personalize your experience. -- 📝 **Rich Banners with Markdown**: Create visually engaging announcements with markdown support in banners, enabling richer and more dynamic content. [See Banners Documentation](/features/interface/banners). +- 📝 **Rich Banners with Markdown**: Create visually engaging announcements with markdown support in banners, enabling richer and more dynamic content. [See Banners Documentation](/features/access-security/interface/banners). - 💻 **Code Syntax Highlighting**: Our syntax highlighting feature enhances code readability, providing a clear and concise view of your code. @@ -168,11 +168,11 @@ import { TopBanners } from "@site/src/components/TopBanners"; - 🔔 **Chat Completion Notifications**: Stay updated with instant in-UI notifications when a chat finishes in a non-active tab, ensuring you never miss a completed response. -- 📝 **Message Queue**: Continue composing messages while the AI is generating a response. Your messages are queued and automatically sent together when the current response completes. Edit, delete, or send queued messages immediately. [Learn about Message Queue](/features/chat-features/message-queue). +- 📝 **Message Queue**: Continue composing messages while the AI is generating a response. Your messages are queued and automatically sent together when the current response completes. Edit, delete, or send queued messages immediately. [Learn about Message Queue](/features/chat-conversations/chat-features/message-queue). -- 🌐 **Notification Webhook Integration**: Receive timely updates for long-running chats or external integration needs with configurable webhook notifications, even when your tab is closed. [Learn more about Webhooks](/features/interface/webhooks). +- 🌐 **Notification Webhook Integration**: Receive timely updates for long-running chats or external integration needs with configurable webhook notifications, even when your tab is closed. [Learn more about Webhooks](/features/access-security/interface/webhooks). -- 📚 **Channels (Beta)**: Explore real-time collaboration between users and AIs with Discord/Slack-style chat rooms, build bots for channels, and unlock asynchronous communication for proactive multi-agent workflows. [See Channels](/features/channels). +- 📚 **Channels (Beta)**: Explore real-time collaboration between users and AIs with Discord/Slack-style chat rooms, build bots for channels, and unlock asynchronous communication for proactive multi-agent workflows. [See Channels](/features/ai-knowledge/channels). - 🖊️ **Typing Indicators in Channels**: Enhance collaboration with real-time typing indicators in channels, keeping everyone engaged and informed. @@ -238,7 +238,7 @@ import { TopBanners } from "@site/src/components/TopBanners"; - Please note that the `{{USER_LOCATION}}` prompt variable requires a secure connection over HTTPS. To utilize this particular prompt variable, please ensure that `{{USER_LOCATION}}` is toggled on from the `Settings` > `Interface` menu. - Please note that the `{{CLIPBOARD}}` prompt variables requires access to your device's clipboard. -- 🧠 **Memory Feature & Tools (Experimental)**: Manage information you want your LLMs to remember via `Settings` > `Personalization` > `Memory`. Capable models can now use `add_memory`, `search_memories`, and `replace_memory_content` tools to dynamically store, retrieve, and update facts about you during chat sessions. [Learn more about Memory](/features/memory). +- 🧠 **Memory Feature & Tools (Experimental)**: Manage information you want your LLMs to remember via `Settings` > `Personalization` > `Memory`. Capable models can now use `add_memory`, `search_memories`, and `replace_memory_content` tools to dynamically store, retrieve, and update facts about you during chat sessions. [Learn more about Memory](/features/chat-conversations/memory). --- @@ -288,7 +288,7 @@ import { TopBanners } from "@site/src/components/TopBanners"; ### 👥 Collaboration -- 🗨️ **Local Chat Sharing**: Generate and share chat links between users in an efficient and seamless manner. Includes a **centralized management interface** in Settings to view, copy links, or unshare conversations at any time. [Learn more about Chat Sharing](/features/chat-features/chatshare). +- 🗨️ **Local Chat Sharing**: Generate and share chat links between users in an efficient and seamless manner. Includes a **centralized management interface** in Settings to view, copy links, or unshare conversations at any time. [Learn more about Chat Sharing](/features/chat-conversations/chat-features/chatshare). - 👍👎 **RLHF Annotation**: Enhance the impact of your messages by rating them with either a thumbs up or thumbs down AMD provide a rating for the response on a scale of 1-10, 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. @@ -301,7 +301,7 @@ import { TopBanners } from "@site/src/components/TopBanners"; - ⚔️ **Model Evaluation Arena**: Conduct blind A/B testing of models directly from the Admin Settings for a true side-by-side comparison, making it easier to find the best model for your needs. -- 🎯 **Topic-Based Rankings**: Discover more accurate rankings with our experimental topic-based re-ranking system, which adjusts leaderboard standings based on tag similarity in feedback. [Learn more about Evaluation](/features/evaluation). +- 🎯 **Topic-Based Rankings**: Discover more accurate rankings with our experimental topic-based re-ranking system, which adjusts leaderboard standings based on tag similarity in feedback. [Learn more about Evaluation](/features/access-security/evaluation). - 📂 **Unified and Collaborative Workspace** : Access and manage all your model files, prompts, documents, tools, and functions in one convenient location, while also enabling multiple users to collaborate and contribute to models, knowledge, prompts, or tools, streamlining your workflow and enhancing teamwork. @@ -428,17 +428,17 @@ import { TopBanners } from "@site/src/components/TopBanners"; - 👥 **Active Users Indicator**: Monitor the number of active users and which models are being utilized by whom to assist in gauging when performance may be impacted due to a high number of users. -- 📊 **Analytics Dashboard**: Comprehensive usage insights for administrators including message volume, token consumption, user activity, and model performance metrics with interactive time-series charts and detailed breakdowns. Track costs, identify trends, and make data-driven decisions about resource allocation. [Learn more about Analytics](/features/analytics). +- 📊 **Analytics Dashboard**: Comprehensive usage insights for administrators including message volume, token consumption, user activity, and model performance metrics with interactive time-series charts and detailed breakdowns. Track costs, identify trends, and make data-driven decisions about resource allocation. [Learn more about Analytics](/features/access-security/analytics). - 🔒 **Default Sign-Up Role**: Specify the default role for new sign-ups to `pending`, `user`, or `admin`, providing flexibility in managing user permissions and access levels for new users. -- 🤖 **Bulk Model Management & Filtering**: Administrators can effortlessly manage large model collections from external providers with tools to bulk enable/disable models and filter the admin list by status (Enabled, Disabled, Hidden, etc.) to maintain a clean workspace. [Learn about Admin Models](/features/workspace/models#global-model-management-admin). +- 🤖 **Bulk Model Management & Filtering**: Administrators can effortlessly manage large model collections from external providers with tools to bulk enable/disable models and filter the admin list by status (Enabled, Disabled, Hidden, etc.) to maintain a clean workspace. [Learn about Admin Models](/features/ai-knowledge/models#global-model-management-admin). - 🔒 **Prevent New Sign-Ups**: Enable the option to disable new user sign-ups, restricting access to the platform and maintaining a fixed number of users. - 🔒 **Prevent Chat Deletion**: Ability for admins to toggle a setting that prevents all users from deleting their chat messages, ensuring that all chat messages are retained for audit or compliance purposes. -- 🔗 **Webhook Integration**: Subscribe to new user sign-up events via webhook (compatible with `Discord`, `Google Chat`, `Slack` and `Microsoft Teams`), providing real-time notifications and automation capabilities. [See Webhook Guide](/features/interface/webhooks). +- 🔗 **Webhook Integration**: Subscribe to new user sign-up events via webhook (compatible with `Discord`, `Google Chat`, `Slack` and `Microsoft Teams`), providing real-time notifications and automation capabilities. [See Webhook Guide](/features/access-security/interface/webhooks). - 📣 **Configurable Notification Banners**: Admins can create customizable banners with persistence in config.json, featuring options for content, background color (`info`, `warning`, `error`, or `success`), and dismissibility. Banners are accessible only to logged-in users, ensuring the confidentiality of sensitive information. @@ -462,9 +462,9 @@ import { TopBanners } from "@site/src/components/TopBanners"; - 🔐 **Group-Based Access Control**: Set granular access to models, knowledge, prompts, and tools based on user groups, allowing for more controlled and secure environments. -- 🛠️ **Granular User Permissions**: Easily manage workspace permissions, including file uploads, deletions, edits, and temporary chats, as well as model, knowledge, prompt, and tool creation. [See User Permissions Config](/getting-started/env-configuration/#user-permissions). +- 🛠️ **Granular User Permissions**: Easily manage workspace permissions, including file uploads, deletions, edits, and temporary chats, as well as model, knowledge, prompt, and tool creation. [See User Permissions Config](/reference/env-configuration/#user-permissions). -- 🔑 **LDAP Authentication**: Enhance security and scalability with LDAP support for user management. [Learn more about LDAP](/features/auth/ldap). +- 🔑 **LDAP Authentication**: Enhance security and scalability with LDAP support for user management. [Learn more about LDAP](/features/access-security/auth/ldap). - 🔐 **SCIM 2.0 Provisioning**: Automate user and group lifecycle management through SCIM 2.0 protocol integration with identity providers like Okta, Azure AD, and Google Workspace, reducing administrative overhead and ensuring synchronized user management across systems. diff --git a/docs/features/media-generation/_category_.json b/docs/features/media-generation/_category_.json new file mode 100644 index 0000000000..11dc1d667a --- /dev/null +++ b/docs/features/media-generation/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "🎨 Media & Generation", + "position": 50, + "collapsible": true, + "collapsed": true +} diff --git a/docs/features/audio/_category_.json b/docs/features/media-generation/audio/_category_.json similarity index 100% rename from docs/features/audio/_category_.json rename to docs/features/media-generation/audio/_category_.json diff --git a/docs/features/audio/speech-to-text/_category_.json b/docs/features/media-generation/audio/speech-to-text/_category_.json similarity index 100% rename from docs/features/audio/speech-to-text/_category_.json rename to docs/features/media-generation/audio/speech-to-text/_category_.json diff --git a/docs/features/audio/speech-to-text/env-variables.md b/docs/features/media-generation/audio/speech-to-text/env-variables.md similarity index 99% rename from docs/features/audio/speech-to-text/env-variables.md rename to docs/features/media-generation/audio/speech-to-text/env-variables.md index ee16d5b1a3..d9efb9df09 100644 --- a/docs/features/audio/speech-to-text/env-variables.md +++ b/docs/features/media-generation/audio/speech-to-text/env-variables.md @@ -7,7 +7,7 @@ title: "Environment Variables" :::info -For a complete list of all Open WebUI environment variables, see the [Environment Variable Configuration](https://docs.openwebui.com/getting-started/env-configuration) page. +For a complete list of all Open WebUI environment variables, see the [Environment Variable Configuration](https://docs.openwebui.com/reference/env-configuration) page. ::: diff --git a/docs/features/audio/speech-to-text/mistral-voxtral-integration.md b/docs/features/media-generation/audio/speech-to-text/mistral-voxtral-integration.md similarity index 100% rename from docs/features/audio/speech-to-text/mistral-voxtral-integration.md rename to docs/features/media-generation/audio/speech-to-text/mistral-voxtral-integration.md diff --git a/docs/features/audio/speech-to-text/openai-stt-integration.md b/docs/features/media-generation/audio/speech-to-text/openai-stt-integration.md similarity index 98% rename from docs/features/audio/speech-to-text/openai-stt-integration.md rename to docs/features/media-generation/audio/speech-to-text/openai-stt-integration.md index 12dc9e60fb..ab1d59d810 100644 --- a/docs/features/audio/speech-to-text/openai-stt-integration.md +++ b/docs/features/media-generation/audio/speech-to-text/openai-stt-integration.md @@ -8,7 +8,7 @@ title: "OpenAI STT Integration" This guide covers how to use OpenAI's Whisper API for Speech-to-Text with Open WebUI. This provides cloud-based transcription without needing local GPU resources. :::tip Looking for TTS? -See the companion guide: [Using OpenAI for Text-to-Speech](/features/audio/text-to-speech/openai-tts-integration) +See the companion guide: [Using OpenAI for Text-to-Speech](/features/media-generation/audio/text-to-speech/openai-tts-integration) ::: ## Requirements diff --git a/docs/features/audio/speech-to-text/stt-config.md b/docs/features/media-generation/audio/speech-to-text/stt-config.md similarity index 92% rename from docs/features/audio/speech-to-text/stt-config.md rename to docs/features/media-generation/audio/speech-to-text/stt-config.md index 11117a3650..67de9fa3e2 100644 --- a/docs/features/audio/speech-to-text/stt-config.md +++ b/docs/features/media-generation/audio/speech-to-text/stt-config.md @@ -15,9 +15,9 @@ The following speech-to-text providers are supported: | Service | API Key Required | Guide | |---------|------------------|-------| -| Local Whisper (default) | ❌ | Built-in, see [Environment Variables](/features/audio/speech-to-text/env-variables) | -| OpenAI (Whisper API) | ✅ | [OpenAI STT Guide](/features/audio/speech-to-text/openai-stt-integration) | -| Mistral (Voxtral) | ✅ | [Mistral Voxtral Guide](/features/audio/speech-to-text/mistral-voxtral-integration) | +| Local Whisper (default) | ❌ | Built-in, see [Environment Variables](/features/media-generation/audio/speech-to-text/env-variables) | +| OpenAI (Whisper API) | ✅ | [OpenAI STT Guide](/features/media-generation/audio/speech-to-text/openai-stt-integration) | +| Mistral (Voxtral) | ✅ | [Mistral Voxtral Guide](/features/media-generation/audio/speech-to-text/mistral-voxtral-integration) | | Deepgram | ✅ | — | | Azure | ✅ | — | diff --git a/docs/features/audio/text-to-speech/Kokoro-FastAPI-integration.md b/docs/features/media-generation/audio/text-to-speech/Kokoro-FastAPI-integration.md similarity index 100% rename from docs/features/audio/text-to-speech/Kokoro-FastAPI-integration.md rename to docs/features/media-generation/audio/text-to-speech/Kokoro-FastAPI-integration.md diff --git a/docs/features/audio/text-to-speech/_category_.json b/docs/features/media-generation/audio/text-to-speech/_category_.json similarity index 100% rename from docs/features/audio/text-to-speech/_category_.json rename to docs/features/media-generation/audio/text-to-speech/_category_.json diff --git a/docs/features/audio/text-to-speech/chatterbox-tts-api-integration.md b/docs/features/media-generation/audio/text-to-speech/chatterbox-tts-api-integration.md similarity index 97% rename from docs/features/audio/text-to-speech/chatterbox-tts-api-integration.md rename to docs/features/media-generation/audio/text-to-speech/chatterbox-tts-api-integration.md index c65bf61868..33ccc43264 100644 --- a/docs/features/audio/text-to-speech/chatterbox-tts-api-integration.md +++ b/docs/features/media-generation/audio/text-to-speech/chatterbox-tts-api-integration.md @@ -244,7 +244,7 @@ Chatterbox has higher memory requirements than other TTS solutions: - **Recommended:** 8GB+ RAM - **GPU:** NVIDIA CUDA or Apple M-series (MPS) recommended -If you experience memory issues, consider using a lighter alternative like [OpenAI Edge TTS](/features/audio/text-to-speech/openai-edge-tts-integration) or [Kokoro-FastAPI](/features/audio/text-to-speech/Kokoro-FastAPI-integration). +If you experience memory issues, consider using a lighter alternative like [OpenAI Edge TTS](/features/media-generation/audio/text-to-speech/openai-edge-tts-integration) or [Kokoro-FastAPI](/features/media-generation/audio/text-to-speech/Kokoro-FastAPI-integration). ### Docker Networking diff --git a/docs/features/audio/text-to-speech/kokoro-web-integration.md b/docs/features/media-generation/audio/text-to-speech/kokoro-web-integration.md similarity index 100% rename from docs/features/audio/text-to-speech/kokoro-web-integration.md rename to docs/features/media-generation/audio/text-to-speech/kokoro-web-integration.md diff --git a/docs/features/audio/text-to-speech/openai-edge-tts-integration.md b/docs/features/media-generation/audio/text-to-speech/openai-edge-tts-integration.md similarity index 100% rename from docs/features/audio/text-to-speech/openai-edge-tts-integration.md rename to docs/features/media-generation/audio/text-to-speech/openai-edge-tts-integration.md diff --git a/docs/features/audio/text-to-speech/openai-tts-integration.md b/docs/features/media-generation/audio/text-to-speech/openai-tts-integration.md similarity index 95% rename from docs/features/audio/text-to-speech/openai-tts-integration.md rename to docs/features/media-generation/audio/text-to-speech/openai-tts-integration.md index ec6958009c..0a4450d0ba 100644 --- a/docs/features/audio/text-to-speech/openai-tts-integration.md +++ b/docs/features/media-generation/audio/text-to-speech/openai-tts-integration.md @@ -8,7 +8,7 @@ title: "OpenAI TTS Integration" This guide covers how to use OpenAI's official Text-to-Speech API with Open WebUI. This is the simplest setup if you already have an OpenAI API key. :::tip Looking for STT? -See the companion guide: [Using OpenAI for Speech-to-Text](/features/audio/speech-to-text/openai-stt-integration) +See the companion guide: [Using OpenAI for Speech-to-Text](/features/media-generation/audio/speech-to-text/openai-stt-integration) ::: ## Requirements @@ -158,5 +158,5 @@ For more troubleshooting, see the [Audio Troubleshooting Guide](/troubleshooting OpenAI charges per character for TTS. See [OpenAI Pricing](https://platform.openai.com/docs/pricing) for current rates. Note that `tts-1-hd` costs more than `tts-1`. :::info -For a free alternative, consider [OpenAI Edge TTS](/features/audio/text-to-speech/openai-edge-tts-integration) which uses Microsoft's free Edge browser TTS. +For a free alternative, consider [OpenAI Edge TTS](/features/media-generation/audio/text-to-speech/openai-edge-tts-integration) which uses Microsoft's free Edge browser TTS. ::: diff --git a/docs/features/audio/text-to-speech/openedai-speech-integration.md b/docs/features/media-generation/audio/text-to-speech/openedai-speech-integration.md similarity index 99% rename from docs/features/audio/text-to-speech/openedai-speech-integration.md rename to docs/features/media-generation/audio/text-to-speech/openedai-speech-integration.md index f866fe605f..d3e3681f45 100644 --- a/docs/features/audio/text-to-speech/openedai-speech-integration.md +++ b/docs/features/media-generation/audio/text-to-speech/openedai-speech-integration.md @@ -236,7 +236,7 @@ The configuration files, which define the available voices and their properties, ## Additional Resources -For more information on configuring Open WebUI to use `openedai-speech`, including setting environment variables, see the [Open WebUI documentation](https://docs.openwebui.com/getting-started/env-configuration#text-to-speech). +For more information on configuring Open WebUI to use `openedai-speech`, including setting environment variables, see the [Open WebUI documentation](https://docs.openwebui.com/reference/env-configuration#text-to-speech). For more information about `openedai-speech`, please visit the [GitHub repository](https://github.com/matatonic/openedai-speech). diff --git a/docs/features/image-generation-and-editing/_category_.json b/docs/features/media-generation/image-generation-and-editing/_category_.json similarity index 100% rename from docs/features/image-generation-and-editing/_category_.json rename to docs/features/media-generation/image-generation-and-editing/_category_.json diff --git a/docs/features/image-generation-and-editing/automatic1111.md b/docs/features/media-generation/image-generation-and-editing/automatic1111.md similarity index 100% rename from docs/features/image-generation-and-editing/automatic1111.md rename to docs/features/media-generation/image-generation-and-editing/automatic1111.md diff --git a/docs/features/image-generation-and-editing/comfyui.md b/docs/features/media-generation/image-generation-and-editing/comfyui.md similarity index 100% rename from docs/features/image-generation-and-editing/comfyui.md rename to docs/features/media-generation/image-generation-and-editing/comfyui.md diff --git a/docs/features/image-generation-and-editing/gemini.mdx b/docs/features/media-generation/image-generation-and-editing/gemini.mdx similarity index 100% rename from docs/features/image-generation-and-editing/gemini.mdx rename to docs/features/media-generation/image-generation-and-editing/gemini.mdx diff --git a/docs/features/image-generation-and-editing/image-router.md b/docs/features/media-generation/image-generation-and-editing/image-router.md similarity index 100% rename from docs/features/image-generation-and-editing/image-router.md rename to docs/features/media-generation/image-generation-and-editing/image-router.md diff --git a/docs/features/image-generation-and-editing/openai.md b/docs/features/media-generation/image-generation-and-editing/openai.md similarity index 100% rename from docs/features/image-generation-and-editing/openai.md rename to docs/features/media-generation/image-generation-and-editing/openai.md diff --git a/docs/features/image-generation-and-editing/usage.md b/docs/features/media-generation/image-generation-and-editing/usage.md similarity index 96% rename from docs/features/image-generation-and-editing/usage.md rename to docs/features/media-generation/image-generation-and-editing/usage.md index aea079cc5b..019da5a121 100644 --- a/docs/features/image-generation-and-editing/usage.md +++ b/docs/features/media-generation/image-generation-and-editing/usage.md @@ -15,7 +15,7 @@ Before you can use image generation, you must ensure that the **Image Generation ## Native Tool-Based Generation (Agentic) -If your model is configured with **Native Function Calling** (see the [**Central Tool Calling Guide**](/features/plugin/tools#tool-calling-modes-default-vs-native)), it can invoke image generation directly as a tool. +If your model is configured with **Native Function Calling** (see the [**Central Tool Calling Guide**](/features/extensibility/plugin/tools#tool-calling-modes-default-vs-native)), it can invoke image generation directly as a tool. ### How it works: - **Requirements**: diff --git a/docs/features/workspace/files.md b/docs/features/workspace/files.md deleted file mode 100644 index b5ecbf6b89..0000000000 --- a/docs/features/workspace/files.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -sidebar_position: 5 -title: "📁 File Management" ---- - -Open WebUI provides a comprehensive file management system that allows you to upload, organize, and utilize your documents across various features like Knowledge Bases and RAG. - -## Centralized File Manager - -The **Centralized File Manager** provides a unified interface to view, search, and manage every file you have uploaded to your Open WebUI instance, whether it was uploaded directly to a chat or into a Knowledge Base. - -### Accessing the File Manager - -1. Click on your **profile name** or avatar in the bottom-left corner. -2. Select **Settings** from the menu. -3. Navigate to the **Data Controls** tab. -4. Locate the **Manage Files** row and click the **Manage** button. - -### Key Features - -The File Manager modal offers several powerful tools for maintaining your data: - -- **Universal Search**: Quickly find any file by its filename using the integrated search bar. -- **Advanced Sorting**: Organize your file list by: - - **Filename**: Sort alphabetically to find specific documents. - - **Created At**: See your most recent uploads or find older files. -- **File Details**: View important information at a glance, including: - - **File Size**: See how much space each document occupies (e.g., KB, MB). - - **Upload Date**: Track when each file was added to your instance. -- **Built-in Viewer**: Click on any file to open the **File Item Viewer**, which displays the file's metadata and specific details (such as size and type). -- **Safe Deletion**: Easily remove files you no longer need. - - :::info **Knowledge Base Cleanup** - When you delete a file through the File Manager, Open WebUI automatically performs a deep cleanup. It removes the file from all associated Knowledge Bases and deletes its corresponding vector embeddings, ensuring your database stays clean and efficient. - ::: - -## Using Files in Open WebUI - -Files are at the heart of the platform's advanced capabilities: - -### 1. Retrieval Augmented Generation (RAG) -By uploading documents (PDFs, Word docs, text files, etc.), you can ground your AI's responses in your own data. -- **Chat Uploads**: Simply drag and drop files into a chat or use the upload icon. -- **Knowledge Bases**: Add files to structured collections for more permanent and organized retrieval. - -### 2. File Metadata -Every file carries metadata that helps both you and the AI understand its context. This includes content type, original filename, and size. - -## Best Practices - -- **Naming Conventions**: Use clear, descriptive filenames. This improves the accuracy of the File Manager's search and helps you identify specific documents. -- **Regular Audits**: Periodically use the **Manage Files** dashboard to delete old or redundant documents. This saves disk/database space and improves the performance of your system by ensuring only relevant data is retained. - -## FAQ - -**Q: If I delete a file, is it gone from my chats?** -**A:** Yes. Deleting a file via the File Manager removes it from the system entirely. Any chat that referenced that file using RAG will no longer be able to pull information from it. - -**Q: Can I download my files back from the File Manager?** -**A:** Currently, the File Manager focuses on viewing metadata and management (deletion). To download a file, you should typically access it from the original chat or Knowledge Base where it was used. - -**Q: Are there limits on the number of files I can manage?** -**A:** There is no hard-coded limit in Open WebUI. The scalability depends on your storage (disk/S3) and your Vector Database (e.g., ChromaDB, PGVector). - -**Q: Does managing files require Admin privileges?** -**A:** Regular users can manage their *own* uploaded files. Administrators have additional tools to manage global files and configuration via the Admin Panel. diff --git a/docs/features/workspace/index.mdx b/docs/features/workspace/index.mdx deleted file mode 100644 index 8ff8d81f75..0000000000 --- a/docs/features/workspace/index.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 1 -title: "Workspace" ---- - -The Workspace in Open WebUI provides a comprehensive environment for managing your AI interactions and configurations. It consists of several key components: - -## Resources - -- [🤖 Models](./models.md) - Create and manage custom models tailored to specific purposes -- [🧠 Knowledge](./knowledge.md) - Manage your knowledge bases for retrieval augmented generation -- [📚 Prompts](./prompts.md) - Create and organize reusable prompts -- [📁 Files](./files.md) - Centralized management for all your uploaded documents -- [📝 Skills](./skills.md) - Reusable markdown instruction sets for guiding model behavior - -Each section of the Workspace is designed to give you fine-grained control over your Open WebUI experience, allowing for customization and optimization of your AI interactions. diff --git a/docs/getting-started/advanced-topics/index.mdx b/docs/getting-started/advanced-topics/index.mdx index 1895ef3558..534ea829df 100644 --- a/docs/getting-started/advanced-topics/index.mdx +++ b/docs/getting-started/advanced-topics/index.mdx @@ -5,32 +5,6 @@ title: "Advanced Topics" # 📚 Advanced Topics -Explore deeper concepts and advanced configurations of Open WebUI to enhance your setup. - ---- - -## 🛠️ Development -Understand the development setup and contribute to Open WebUI. -[Development Guide](/getting-started/advanced-topics/development) - ---- - ## 📝 Logging Learn how to configure and manage logs for troubleshooting your system. [Logging Guide](/getting-started/advanced-topics/logging) - ---- - -## 🔒 HTTPS Encryption -Ensure secure communication by implementing HTTPS encryption in your deployment. -[HTTPS Encryption Guide](/getting-started/advanced-topics/https-encryption) - ---- - -## 🔑 API Keys & Monitoring -Learn how to set up API keys for programmatic access, and monitor your Open WebUI instance with health checks and response testing. -[API Keys & Monitoring Guide](/getting-started/advanced-topics/monitoring) - ---- - -Looking for installation instructions? Head over to our [Quick Start Guide](/getting-started/quick-start). diff --git a/docs/getting-started/advanced-topics/development.md b/docs/getting-started/development.md similarity index 99% rename from docs/getting-started/advanced-topics/development.md rename to docs/getting-started/development.md index a327133624..1ef0e4b3e5 100644 --- a/docs/getting-started/advanced-topics/development.md +++ b/docs/getting-started/development.md @@ -1,5 +1,5 @@ --- -sidebar_position: 1 +sidebar_position: 3 title: "Local Development Guide" --- @@ -310,7 +310,7 @@ If you find that **icons or other static assets are failing to load**, it is oft **Solution:** You need to configure the `CORS_ALLOW_ORIGIN` environment variable in your backend. -- Check the [Environment Configuration](../env-configuration.mdx#cors_allow_origin) guide for details on how to set `CORS_ALLOW_ORIGIN` to allow requests from your frontend's URL (e.g., `http://localhost:5173`). +- Check the [Environment Configuration](/reference/env-configuration#cors_allow_origin) guide for details on how to set `CORS_ALLOW_ORIGIN` to allow requests from your frontend's URL (e.g., `http://localhost:5173`). - In a development environment, you can often set this in your `backend/dev.sh` script or your `.env` file. ## Contributing to Open WebUI diff --git a/docs/getting-started/quick-start/connect-a-provider/_category_.json b/docs/getting-started/quick-start/connect-a-provider/_category_.json new file mode 100644 index 0000000000..4124758c27 --- /dev/null +++ b/docs/getting-started/quick-start/connect-a-provider/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Connect a Provider", + "position": 10, + "collapsible": true, + "collapsed": true +} diff --git a/docs/getting-started/quick-start/starting-with-functions.mdx b/docs/getting-started/quick-start/connect-a-provider/starting-with-functions.mdx similarity index 89% rename from docs/getting-started/quick-start/starting-with-functions.mdx rename to docs/getting-started/quick-start/connect-a-provider/starting-with-functions.mdx index a949e1decc..1281633f6b 100644 --- a/docs/getting-started/quick-start/starting-with-functions.mdx +++ b/docs/getting-started/quick-start/connect-a-provider/starting-with-functions.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 6 -title: "Getting Started with Functions" +title: "Functions" --- ## Overview @@ -100,11 +100,11 @@ Some functions need credentials (like Anthropic’s API key): Ready to build your own? Check out our detailed development guides: -* **[Functions Overview](../../features/plugin/functions/index.mdx)**: Learn the basics of the Functions system. -* **[Pipes Guide](../../features/plugin/functions/pipe.mdx)**: Create custom model providers and logic pipelines. -* **[Filters Guide](../../features/plugin/functions/filter.mdx)**: Intercept and modify messages (Input/Output guards). -* **[Actions Guide](../../features/plugin/functions/action.mdx)**: Add buttons/actions to messages. -* **[Tools Guide](../../features/plugin/tools/index.mdx)**: Build tools for LLMs to use (RAG, APIs). +* **[Functions Overview](/features/extensibility/plugin/functions/)**: Learn the basics of the Functions system. +* **[Pipes Guide](/features/extensibility/plugin/functions/pipe)**: Create custom model providers and logic pipelines. +* **[Filters Guide](/features/extensibility/plugin/functions/filter)**: Intercept and modify messages (Input/Output guards). +* **[Actions Guide](/features/extensibility/plugin/functions/action)**: Add buttons/actions to messages. +* **[Tools Guide](/features/extensibility/plugin/tools/)**: Build tools for LLMs to use (RAG, APIs). * **[Community Registry](https://openwebui.com/search)**: Browse hundreds of community-made functions. diff --git a/docs/getting-started/quick-start/starting-with-llama-cpp.mdx b/docs/getting-started/quick-start/connect-a-provider/starting-with-llama-cpp.mdx similarity index 97% rename from docs/getting-started/quick-start/starting-with-llama-cpp.mdx rename to docs/getting-started/quick-start/connect-a-provider/starting-with-llama-cpp.mdx index b838e8f7ac..705397609c 100644 --- a/docs/getting-started/quick-start/starting-with-llama-cpp.mdx +++ b/docs/getting-started/quick-start/connect-a-provider/starting-with-llama-cpp.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 3 -title: "Starting with Llama.cpp" +title: "Llama.cpp" --- ## Overview @@ -89,7 +89,7 @@ http://127.0.0.1:10000 ``` :::tip -Open WebUI also supports the experimental [Open Responses](/getting-started/quick-start/starting-with-open-responses) specification for providers that implement it. +Open WebUI also supports the experimental [Open Responses](/getting-started/quick-start/connect-a-provider/starting-with-open-responses) specification for providers that implement it. ::: --- diff --git a/docs/getting-started/quick-start/starting-with-ollama.mdx b/docs/getting-started/quick-start/connect-a-provider/starting-with-ollama.mdx similarity index 94% rename from docs/getting-started/quick-start/starting-with-ollama.mdx rename to docs/getting-started/quick-start/connect-a-provider/starting-with-ollama.mdx index debccd319f..9c1f5d0c8e 100644 --- a/docs/getting-started/quick-start/starting-with-ollama.mdx +++ b/docs/getting-started/quick-start/connect-a-provider/starting-with-ollama.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 1 -title: "Starting With Ollama" +title: "Ollama" --- ## Overview @@ -15,7 +15,7 @@ Open WebUI is designed to be **Protocol-Oriented**. This means that when we refe While some tools may offer basic compatibility, this connection type is optimized for the unique features of the Ollama service, such as native model management and pulling directly through the Admin UI. -If your backend is primarily based on the OpenAI standard (like LocalAI or Docker Model Runner), we recommend using the [OpenAI-Compatible Server Guide](/getting-started/quick-start/starting-with-openai-compatible) for the best experience. +If your backend is primarily based on the OpenAI standard (like LocalAI or Docker Model Runner), we recommend using the [OpenAI-Compatible Server Guide](/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible) for the best experience. --- @@ -92,7 +92,7 @@ ollama serve --reasoning-parser deepseek_r1 This ensures that thinking blocks are properly separated from the final answer and displayed in a collapsible section in Open WebUI. :::tip -The `deepseek_r1` parser works for most reasoning models, including Qwen3. If you encounter issues, see our [Reasoning & Thinking Models Guide](/features/chat-features/reasoning-models) for alternative parsers and detailed troubleshooting steps. +The `deepseek_r1` parser works for most reasoning models, including Qwen3. If you encounter issues, see our [Reasoning & Thinking Models Guide](/features/chat-conversations/chat-features/reasoning-models) for alternative parsers and detailed troubleshooting steps. ::: --- diff --git a/docs/getting-started/quick-start/starting-with-open-responses.mdx b/docs/getting-started/quick-start/connect-a-provider/starting-with-open-responses.mdx similarity index 98% rename from docs/getting-started/quick-start/starting-with-open-responses.mdx rename to docs/getting-started/quick-start/connect-a-provider/starting-with-open-responses.mdx index 5438485276..237f3159a3 100644 --- a/docs/getting-started/quick-start/starting-with-open-responses.mdx +++ b/docs/getting-started/quick-start/connect-a-provider/starting-with-open-responses.mdx @@ -1,7 +1,6 @@ --- - sidebar_position: 7 -title: "Starting With Open Responses" +title: "Open Responses" --- diff --git a/docs/getting-started/quick-start/starting-with-openai-compatible.mdx b/docs/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible.mdx similarity index 96% rename from docs/getting-started/quick-start/starting-with-openai-compatible.mdx rename to docs/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible.mdx index daa20ed51f..954fa49911 100644 --- a/docs/getting-started/quick-start/starting-with-openai-compatible.mdx +++ b/docs/getting-started/quick-start/connect-a-provider/starting-with-openai-compatible.mdx @@ -1,7 +1,6 @@ --- - sidebar_position: 5 -title: "Starting with OpenAI-Compatible Servers" +title: "OpenAI-Compatible" --- @@ -20,7 +19,7 @@ This means that while Open WebUI handles the **interface and tools**, it expects - **We Support Protocols**: Any provider that follows widely adopted API standards (like Groq, OpenRouter, OpenAI, Mistral, Perplexity and many more) is natively supported. We also have experimental support for **[Open Responses](https://www.openresponses.org/)**. - **We Avoid Proprietary APIs**: We do not implement provider-specific, non-standard APIs in the core to maintain a universal, maintainable codebase. For unsupported providers, use a pipe or middleware proxy. -If you are using a provider that requires a proprietary API, we recommend using a **[pipe](/features/plugin/functions/pipe)** (browse [community pipes](https://openwebui.com/)) or a middleware proxy like LiteLLM or OpenRouter to bridge them to a supported protocol. +If you are using a provider that requires a proprietary API, we recommend using a **[pipe](/features/extensibility/plugin/functions/pipe)** (browse [community pipes](https://openwebui.com/)) or a middleware proxy like LiteLLM or OpenRouter to bridge them to a supported protocol. For a detailed explanation of why we've made this architectural decision, see our **[FAQ: Why doesn't Open WebUI natively support proprietary APIs?](/faq#q-why-doesnt-open-webui-natively-support-provider-xs-proprietary-api)** diff --git a/docs/getting-started/quick-start/starting-with-openai.mdx b/docs/getting-started/quick-start/connect-a-provider/starting-with-openai.mdx similarity index 99% rename from docs/getting-started/quick-start/starting-with-openai.mdx rename to docs/getting-started/quick-start/connect-a-provider/starting-with-openai.mdx index 4829a254a8..9a44ecccde 100644 --- a/docs/getting-started/quick-start/starting-with-openai.mdx +++ b/docs/getting-started/quick-start/connect-a-provider/starting-with-openai.mdx @@ -1,7 +1,6 @@ --- - sidebar_position: 2 -title: "Starting With OpenAI" +title: "OpenAI" --- diff --git a/docs/getting-started/quick-start/starting-with-vllm.mdx b/docs/getting-started/quick-start/connect-a-provider/starting-with-vllm.mdx similarity index 92% rename from docs/getting-started/quick-start/starting-with-vllm.mdx rename to docs/getting-started/quick-start/connect-a-provider/starting-with-vllm.mdx index adf2ba41ee..7388996398 100644 --- a/docs/getting-started/quick-start/starting-with-vllm.mdx +++ b/docs/getting-started/quick-start/connect-a-provider/starting-with-vllm.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 4 -title: "Starting With vLLM" +title: "vLLM" --- ## Overview @@ -8,7 +8,7 @@ title: "Starting With vLLM" vLLM provides an **OpenAI-compatible API** (Chat Completions), making it easy to connect to Open WebUI. This guide will show you how to connect your vLLM server. :::tip -Open WebUI also supports the experimental [Open Responses](/getting-started/quick-start/starting-with-open-responses) specification for providers that implement it. +Open WebUI also supports the experimental [Open Responses](/getting-started/quick-start/connect-a-provider/starting-with-open-responses) specification for providers that implement it. ::: --- diff --git a/docs/getting-started/quick-start/index.mdx b/docs/getting-started/quick-start/index.mdx index c0e4f4f7e5..5b0d7b378a 100644 --- a/docs/getting-started/quick-start/index.mdx +++ b/docs/getting-started/quick-start/index.mdx @@ -167,10 +167,10 @@ After installing, visit: You are now ready to start using Open WebUI! ## Using Open WebUI with Ollama -If you're using Open WebUI with Ollama, be sure to check out our [Starting with Ollama Guide](/getting-started/quick-start/starting-with-ollama) to learn how to manage your Ollama instances with Open WebUI. +If you're using Open WebUI with Ollama, be sure to check out our [Starting with Ollama Guide](/getting-started/quick-start/connect-a-provider/starting-with-ollama) to learn how to manage your Ollama instances with Open WebUI. ## Experimental: Open Responses -Open WebUI has experimental support for the [Open Responses](https://www.openresponses.org/) specification. See the [Starting with Open Responses Guide](/getting-started/quick-start/starting-with-open-responses) to learn how to enable it. +Open WebUI has experimental support for the [Open Responses](https://www.openresponses.org/) specification. See the [Starting with Open Responses Guide](/getting-started/quick-start/connect-a-provider/starting-with-open-responses) to learn how to enable it. ## Help Us Improve Open WebUI 🧪 diff --git a/docs/getting-started/quick-start/tab-docker/DockerSwarm.md b/docs/getting-started/quick-start/tab-docker/DockerSwarm.md index bd4644d672..62c32c60d5 100644 --- a/docs/getting-started/quick-start/tab-docker/DockerSwarm.md +++ b/docs/getting-started/quick-start/tab-docker/DockerSwarm.md @@ -3,7 +3,7 @@ This installation method requires knowledge on Docker Swarms, as it utilizes a stack file to deploy 3 seperate containers as services in a Docker Swarm. It includes isolated containers of ChromaDB, Ollama, and OpenWebUI. -Additionally, there are pre-filled [Environment Variables](https://docs.openwebui.com/getting-started/env-configuration) to further illustrate the setup. +Additionally, there are pre-filled [Environment Variables](https://docs.openwebui.com/reference/env-configuration) to further illustrate the setup. Choose the appropriate command based on your hardware setup: diff --git a/docs/getting-started/quick-start/tab-kubernetes/Helm.md b/docs/getting-started/quick-start/tab-kubernetes/Helm.md index e665db93a1..811c513c6b 100644 --- a/docs/getting-started/quick-start/tab-kubernetes/Helm.md +++ b/docs/getting-started/quick-start/tab-kubernetes/Helm.md @@ -32,7 +32,7 @@ Helm helps you manage Kubernetes applications. :::warning If you intend to scale Open WebUI using multiple nodes/pods/workers in a clustered environment, you need to setup a NoSQL key-value database. -There are some [environment variables](https://docs.openwebui.com/getting-started/env-configuration/) that need to be set to the same value for all service-instances, otherwise consistency problems, faulty sessions and other issues will occur! +There are some [environment variables](https://docs.openwebui.com/reference/env-configuration/) that need to be set to the same value for all service-instances, otherwise consistency problems, faulty sessions and other issues will occur! ::: diff --git a/docs/getting-started/updating.mdx b/docs/getting-started/updating.mdx index fa36527c52..e41755569f 100644 --- a/docs/getting-started/updating.mdx +++ b/docs/getting-started/updating.mdx @@ -213,7 +213,7 @@ volumes: - Keep the same key across updates to maintain sessions ::: -For complete environment variable documentation, see [Environment Configuration](https://docs.openwebui.com/getting-started/env-configuration#security-variables). +For complete environment variable documentation, see [Environment Configuration](https://docs.openwebui.com/reference/env-configuration#security-variables). ## Automated Update Tools @@ -504,7 +504,7 @@ docker run --rm -v open-webui:/data alpine ls -lah /data 1. Stop Open WebUI: `docker stop open-webui` 2. Backup volume: `docker run --rm -v open-webui:/data -v $(pwd):/backup alpine tar czf /backup/openwebui-backup.tar.gz /data` 3. Restore from backup if needed -4. Check [Manual Migration Guide](../troubleshooting/manual-database-migration.md) for database issues +4. Check [Manual Migration Guide](/troubleshooting/manual-database-migration.md) for database issues ### Watchtower Updates Too Frequently @@ -629,7 +629,7 @@ If the interface looks broken or old after updating: ## Additional Resources - [Open WebUI GitHub Releases](https://github.com/open-webui/open-webui/releases) - Version history and changelogs -- [Environment Configuration Guide](https://docs.openwebui.com/getting-started/env-configuration) - All environment variables -- [Manual Database Migration](../troubleshooting/manual-database-migration.md) - Fix database issues after updates +- [Environment Configuration Guide](https://docs.openwebui.com/reference/env-configuration) - All environment variables +- [Manual Database Migration](/troubleshooting/manual-database-migration.md) - Fix database issues after updates - [Watchtower Documentation](https://watchtower.nickfedor.com/) - Advanced Watchtower configuration - [WUD Documentation](https://getwud.github.io/wud/) - What's Up Docker setup guide diff --git a/docs/intro.mdx b/docs/intro.mdx index 02c3de0a84..a08cc6824b 100644 --- a/docs/intro.mdx +++ b/docs/intro.mdx @@ -11,7 +11,7 @@ import { SponsorList } from "@site/src/components/SponsorList"; # Open WebUI -**Open WebUI is an [extensible](https://docs.openwebui.com/features/plugin/), feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline.** It is built around universal standards, supporting **Ollama** and **OpenAI-compatible Protocols** (specifically Chat Completions). This protocol-first approach makes it a powerful, provider-agnostic AI deployment solution for both local and cloud-based models. +**Open WebUI is an [extensible](https://docs.openwebui.com/features/extensibility/plugin/), feature-rich, and user-friendly self-hosted AI platform designed to operate entirely offline.** It is built around universal standards, supporting **Ollama** and **OpenAI-compatible Protocols** (specifically Chat Completions). This protocol-first approach makes it a powerful, provider-agnostic AI deployment solution for both local and cloud-based models. [![Open WebUI Banner](/images/banner.png)](https://openwebui.com) @@ -134,7 +134,7 @@ docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui --r :::note Alternative: Local Development Setup -If Docker doesn't work for your environment, you can also run the latest development code using the [Local Development Guide](/getting-started/advanced-topics/development). Conversely, if you prefer Docker over a local setup, the dev image is the easiest way to test. +If Docker doesn't work for your environment, you can also run the latest development code using the [Local Development Guide](/getting-started/development). Conversely, if you prefer Docker over a local setup, the dev image is the easiest way to test. ::: diff --git a/docs/reference/_category_.json b/docs/reference/_category_.json new file mode 100644 index 0000000000..b6df479d90 --- /dev/null +++ b/docs/reference/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "📖 Reference", + "position": 150, + "link": { + "type": "generated-index" + } +} diff --git a/docs/getting-started/api-endpoints.md b/docs/reference/api-endpoints.md similarity index 89% rename from docs/getting-started/api-endpoints.md rename to docs/reference/api-endpoints.md index 7ec3f89b5a..5ae2367e11 100644 --- a/docs/getting-started/api-endpoints.md +++ b/docs/reference/api-endpoints.md @@ -1,538 +1,600 @@ ---- -sidebar_position: 400 -title: "API Endpoints" ---- - -This guide provides essential information on how to interact with the API endpoints effectively to achieve seamless integration and automation using our models. Please note that this is an experimental setup and may undergo future updates for enhancement. - -## Authentication - -To ensure secure access to the API, authentication is required 🛡️. You can authenticate your API requests using the Bearer Token mechanism. Obtain your API key from **Settings > Account** in the Open WebUI, or alternatively, use a JWT (JSON Web Token) for authentication. - -## Swagger Documentation Links - -:::important - -Make sure to set the `ENV` environment variable to `dev` in order to access the Swagger documentation for any of these services. Without this configuration, the documentation will not be available. - -::: - -Access detailed API documentation for different services provided by Open WebUI: - -| Application | Documentation Path | -|-------------|-------------------------| -| Main | `/docs` | - -## Notable API Endpoints - -### 📜 Retrieve All Models - -- **Endpoint**: `GET /api/models` -- **Description**: Fetches all models created or added via Open WebUI. -- **Example**: - - ```bash - curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:3000/api/models - ``` - -### 💬 Chat Completions - -- **Endpoint**: `POST /api/chat/completions` -- **Description**: Serves as an OpenAI API compatible chat completion endpoint for models on Open WebUI including Ollama models, OpenAI models, and Open WebUI Function models. - -- **Curl Example**: - - ```bash - curl -X POST http://localhost:3000/api/chat/completions \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "model": "llama3.1", - "messages": [ - { - "role": "user", - "content": "Why is the sky blue?" - } - ] - }' - ``` - -- **Python Example**: - - ```python - import requests - - def chat_with_model(token): - url = 'http://localhost:3000/api/chat/completions' - headers = { - 'Authorization': f'Bearer {token}', - 'Content-Type': 'application/json' - } - data = { - "model": "granite3.1-dense:8b", - "messages": [ - { - "role": "user", - "content": "Why is the sky blue?" - } - ] - } - response = requests.post(url, headers=headers, json=data) - return response.json() - ``` - -### 🔧 Filter and Function Behavior with API Requests - -When using the API endpoints directly, filters (Functions) behave differently than when requests come from the web interface. - -:::info Authentication Note -Open WebUI accepts both **API keys** (prefixed with `sk-`) and **JWT tokens** for API authentication. This is intentional—the web interface uses JWT tokens internally for the same API endpoints. Both authentication methods provide equivalent API access. -::: - -#### Filter Execution - -| Filter Function | WebUI Request | Direct API Request | -|----------------|--------------|-------------------| -| `inlet()` | ✅ Runs | ✅ Runs | -| `stream()` | ✅ Runs | ✅ Runs | -| `outlet()` | ✅ Runs | ❌ **Does NOT run** | - -The `inlet()` function always executes, making it ideal for: -- **Rate limiting** - Track and limit requests per user -- **Request logging** - Log all API usage for monitoring -- **Input validation** - Reject invalid requests before they reach the model - -#### Triggering Outlet Processing - -The `outlet()` function only runs when the WebUI calls `/api/chat/completed` after a chat finishes. For direct API requests, you must call this endpoint yourself if you need outlet processing: - -- **Endpoint**: `POST /api/chat/completed` -- **Description**: Triggers outlet filter processing for a completed chat - -- **Curl Example**: - - ```bash - curl -X POST http://localhost:3000/api/chat/completed \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "model": "llama3.1", - "messages": [ - {"role": "user", "content": "Hello"}, - {"role": "assistant", "content": "Hi! How can I help you today?"} - ], - "chat_id": "optional-uuid", - "session_id": "optional-session-id" - }' - ``` - -- **Python Example**: - - ```python - import requests - - def complete_chat_with_outlet(token, model, messages, chat_id=None): - """ - Call after receiving the full response from /api/chat/completions - to trigger outlet filter processing. - """ - url = 'http://localhost:3000/api/chat/completed' - headers = { - 'Authorization': f'Bearer {token}', - 'Content-Type': 'application/json' - } - payload = { - 'model': model, - 'messages': messages # Include the full conversation with assistant response - } - if chat_id: - payload['chat_id'] = chat_id - - response = requests.post(url, headers=headers, json=payload) - return response.json() - ``` - -:::tip -For more details on writing filters that work with API requests, see the [Filter Function documentation](/features/plugin/functions/filter#-filter-behavior-with-api-requests). -::: - -### 🦙 Ollama API Proxy Support - -If you want to interact directly with Ollama models—including for embedding generation or raw prompt streaming—Open WebUI offers a transparent passthrough to the native Ollama API via a proxy route. - -- **Base URL**: `/ollama/` -- **Reference**: [Ollama API Documentation](https://github.com/ollama/ollama/blob/main/docs/api.md) - -#### 🔁 Generate Completion (Streaming) - -```bash -curl http://localhost:3000/ollama/api/generate \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "model": "llama3.2", - "prompt": "Why is the sky blue?" -}' -``` - -#### 📦 List Available Models - -```bash -curl http://localhost:3000/ollama/api/tags \ - -H "Authorization: Bearer YOUR_API_KEY" -``` - -#### 🧠 Generate Embeddings - -```bash -curl -X POST http://localhost:3000/ollama/api/embed \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "model": "llama3.2", - "input": ["Open WebUI is great!", "Let'\''s generate embeddings."] -}' -``` - -:::info -When using the Ollama Proxy endpoints, you **must** include the `Content-Type: application/json` header for POST requests, or the API may fail to parse the body. Authorization headers are also required if your instance is secured. -::: - -This is ideal for building search indexes, retrieval systems, or custom pipelines using Ollama models behind the Open WebUI. - -### 🧩 Retrieval Augmented Generation (RAG) - -The Retrieval Augmented Generation (RAG) feature allows you to enhance responses by incorporating data from external sources. Below, you will find the methods for managing files and knowledge collections via the API, and how to use them in chat completions effectively. - -#### Uploading Files - -To utilize external data in RAG responses, you first need to upload the files. The content of the uploaded file is automatically extracted and stored in a vector database. - -- **Endpoint**: `POST /api/v1/files/` -- **Query Parameters**: - - `process` (boolean, default: `true`): Whether to extract content and compute embeddings - - `process_in_background` (boolean, default: `true`): Whether to process asynchronously -- **Curl Example**: - - ```bash - curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Accept: application/json" \ - -F "file=@/path/to/your/file" http://localhost:3000/api/v1/files/ - ``` - -- **Python Example**: - - ```python - import requests - - def upload_file(token, file_path): - url = 'http://localhost:3000/api/v1/files/' - headers = { - 'Authorization': f'Bearer {token}', - 'Accept': 'application/json' - } - files = {'file': open(file_path, 'rb')} - response = requests.post(url, headers=headers, files=files) - return response.json() - ``` - -:::warning Async Processing and Race Conditions - -By default, file uploads are processed **asynchronously**. The upload endpoint returns immediately with a file ID, but content extraction and embedding computation continue in the background. - -If you attempt to add the file to a knowledge base before processing completes, you will receive a `400` error: - -``` -The content provided is empty. Please ensure that there is text or data present before proceeding. -``` - -**You must wait for file processing to complete before adding files to knowledge bases.** See the [Checking File Processing Status](#checking-file-processing-status) section below. - -::: - -#### Checking File Processing Status - -Before adding a file to a knowledge base, verify that processing has completed using the status endpoint. - -- **Endpoint**: `GET /api/v1/files/{id}/process/status` -- **Query Parameters**: - - `stream` (boolean, default: `false`): If `true`, returns a Server-Sent Events (SSE) stream - -**Status Values:** -| Status | Description | -|--------|-------------| -| `pending` | File is still being processed | -| `completed` | Processing finished successfully | -| `failed` | Processing failed (check `error` field for details) | - -- **Python Example** (Polling): - - ```python - import requests - import time - - def wait_for_file_processing(token, file_id, timeout=300, poll_interval=2): - """ - Wait for a file to finish processing. - - Returns: - dict: Final status with 'status' key ('completed' or 'failed') - - Raises: - TimeoutError: If processing doesn't complete within timeout - """ - url = f'http://localhost:3000/api/v1/files/{file_id}/process/status' - headers = {'Authorization': f'Bearer {token}'} - - start_time = time.time() - while time.time() - start_time < timeout: - response = requests.get(url, headers=headers) - result = response.json() - status = result.get('status') - - if status == 'completed': - return result - elif status == 'failed': - raise Exception(f"File processing failed: {result.get('error')}") - - time.sleep(poll_interval) - - raise TimeoutError(f"File processing did not complete within {timeout} seconds") - ``` - -- **Python Example** (SSE Streaming): - - ```python - import requests - import json - - def wait_for_file_processing_stream(token, file_id): - """ - Wait for file processing using Server-Sent Events stream. - More efficient than polling for long-running operations. - """ - url = f'http://localhost:3000/api/v1/files/{file_id}/process/status?stream=true' - headers = {'Authorization': f'Bearer {token}'} - - with requests.get(url, headers=headers, stream=True) as response: - for line in response.iter_lines(): - if line: - line = line.decode('utf-8') - if line.startswith('data: '): - data = json.loads(line[6:]) - status = data.get('status') - - if status == 'completed': - return data - elif status == 'failed': - raise Exception(f"File processing failed: {data.get('error')}") - - raise Exception("Stream ended unexpectedly") - ``` - -#### Adding Files to Knowledge Collections - -After uploading, you can group files into a knowledge collection or reference them individually in chats. - -:::important -**Always wait for file processing to complete before adding files to a knowledge base.** Files that are still processing will have empty content, causing a `400` error. Use the status endpoint described above to verify the file status is `completed`. -::: - -- **Endpoint**: `POST /api/v1/knowledge/{id}/file/add` -- **Curl Example**: - - ```bash - curl -X POST http://localhost:3000/api/v1/knowledge/{knowledge_id}/file/add \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{"file_id": "your-file-id-here"}' - ``` - -- **Python Example**: - - ```python - import requests - - def add_file_to_knowledge(token, knowledge_id, file_id): - url = f'http://localhost:3000/api/v1/knowledge/{knowledge_id}/file/add' - headers = { - 'Authorization': f'Bearer {token}', - 'Content-Type': 'application/json' - } - data = {'file_id': file_id} - response = requests.post(url, headers=headers, json=data) - return response.json() - ``` - -#### Complete Workflow Example - -Here's a complete example that uploads a file, waits for processing, and adds it to a knowledge base: - -```python -import requests -import time - -WEBUI_URL = 'http://localhost:3000' -TOKEN = 'your-api-key-here' - -def upload_and_add_to_knowledge(file_path, knowledge_id, timeout=300): - """ - Upload a file and add it to a knowledge base. - Properly waits for processing to complete before adding. - """ - headers = { - 'Authorization': f'Bearer {TOKEN}', - 'Accept': 'application/json' - } - - # Step 1: Upload the file - with open(file_path, 'rb') as f: - response = requests.post( - f'{WEBUI_URL}/api/v1/files/', - headers=headers, - files={'file': f} - ) - - if response.status_code != 200: - raise Exception(f"Upload failed: {response.text}") - - file_data = response.json() - file_id = file_data['id'] - print(f"File uploaded with ID: {file_id}") - - # Step 2: Wait for processing to complete - print("Waiting for file processing...") - start_time = time.time() - - while time.time() - start_time < timeout: - status_response = requests.get( - f'{WEBUI_URL}/api/v1/files/{file_id}/process/status', - headers=headers - ) - status_data = status_response.json() - status = status_data.get('status') - - if status == 'completed': - print("File processing completed!") - break - elif status == 'failed': - raise Exception(f"Processing failed: {status_data.get('error')}") - - time.sleep(2) # Poll every 2 seconds - else: - raise TimeoutError("File processing timed out") - - # Step 3: Add to knowledge base - add_response = requests.post( - f'{WEBUI_URL}/api/v1/knowledge/{knowledge_id}/file/add', - headers={**headers, 'Content-Type': 'application/json'}, - json={'file_id': file_id} - ) - - if add_response.status_code != 200: - raise Exception(f"Failed to add to knowledge: {add_response.text}") - - print(f"File successfully added to knowledge base!") - return add_response.json() - -# Usage -result = upload_and_add_to_knowledge('/path/to/document.pdf', 'your-knowledge-id') -``` - -#### Using Files and Collections in Chat Completions - -You can reference both individual files or entire collections in your RAG queries for enriched responses. - -##### Using an Individual File in Chat Completions - -This method is beneficial when you want to focus the chat model's response on the content of a specific file. - -- **Endpoint**: `POST /api/chat/completions` -- **Curl Example**: - - ```bash - curl -X POST http://localhost:3000/api/chat/completions \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "model": "gpt-4-turbo", - "messages": [ - {"role": "user", "content": "Explain the concepts in this document."} - ], - "files": [ - {"type": "file", "id": "your-file-id-here"} - ] - }' - ``` - -- **Python Example**: - - ```python - import requests - - def chat_with_file(token, model, query, file_id): - url = 'http://localhost:3000/api/chat/completions' - headers = { - 'Authorization': f'Bearer {token}', - 'Content-Type': 'application/json' - } - payload = { - 'model': model, - 'messages': [{'role': 'user', 'content': query}], - 'files': [{'type': 'file', 'id': file_id}] - } - response = requests.post(url, headers=headers, json=payload) - return response.json() - ``` - -##### Using a Knowledge Collection in Chat Completions - -Leverage a knowledge collection to enhance the response when the inquiry may benefit from a broader context or multiple documents. - -- **Endpoint**: `POST /api/chat/completions` -- **Curl Example**: - - ```bash - curl -X POST http://localhost:3000/api/chat/completions \ - -H "Authorization: Bearer YOUR_API_KEY" \ - -H "Content-Type: application/json" \ - -d '{ - "model": "gpt-4-turbo", - "messages": [ - {"role": "user", "content": "Provide insights on the historical perspectives covered in the collection."} - ], - "files": [ - {"type": "collection", "id": "your-collection-id-here"} - ] - }' - ``` - -- **Python Example**: - - ```python - import requests - - def chat_with_collection(token, model, query, collection_id): - url = 'http://localhost:3000/api/chat/completions' - headers = { - 'Authorization': f'Bearer {token}', - 'Content-Type': 'application/json' - } - payload = { - 'model': model, - 'messages': [{'role': 'user', 'content': query}], - 'files': [{'type': 'collection', 'id': collection_id}] - } - response = requests.post(url, headers=headers, json=payload) - return response.json() - ``` - -These methods enable effective utilization of external knowledge via uploaded files and curated knowledge collections, enhancing chat applications' capabilities using the Open WebUI API. Whether using files individually or within collections, you can customize the integration based on your specific needs. - -## Advantages of Using Open WebUI as a Unified LLM Provider - -Open WebUI offers a myriad of benefits, making it an essential tool for developers and businesses alike: - -- **Unified Interface**: Simplify your interactions with different LLMs through a single, integrated platform. -- **Ease of Implementation**: Quick start integration with comprehensive documentation and community support. - -By following these guidelines, you can swiftly integrate and begin utilizing the Open WebUI API. Should you encounter any issues or have questions, feel free to reach out through our Discord Community or consult the FAQs. Happy coding! 🌟 +--- +sidebar_position: 400 +title: "API Endpoints" +--- + +This guide provides essential information on how to interact with the API endpoints effectively to achieve seamless integration and automation using our models. Please note that this is an experimental setup and may undergo future updates for enhancement. + +## Authentication + +To ensure secure access to the API, authentication is required 🛡️. You can authenticate your API requests using the Bearer Token mechanism. Obtain your API key from **Settings > Account** in the Open WebUI, or alternatively, use a JWT (JSON Web Token) for authentication. + +## Swagger Documentation Links + +:::important + +Make sure to set the `ENV` environment variable to `dev` in order to access the Swagger documentation for any of these services. Without this configuration, the documentation will not be available. + +::: + +Access detailed API documentation for different services provided by Open WebUI: + +| Application | Documentation Path | +|-------------|-------------------------| +| Main | `/docs` | + +## Notable API Endpoints + +### 📜 Retrieve All Models + +- **Endpoint**: `GET /api/models` +- **Description**: Fetches all models created or added via Open WebUI. +- **Example**: + + ```bash + curl -H "Authorization: Bearer YOUR_API_KEY" http://localhost:3000/api/models + ``` + +### 💬 Chat Completions + +- **Endpoint**: `POST /api/chat/completions` +- **Description**: Serves as an OpenAI API compatible chat completion endpoint for models on Open WebUI including Ollama models, OpenAI models, and Open WebUI Function models. + +- **Curl Example**: + + ```bash + curl -X POST http://localhost:3000/api/chat/completions \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "llama3.1", + "messages": [ + { + "role": "user", + "content": "Why is the sky blue?" + } + ] + }' + ``` + +- **Python Example**: + + ```python + import requests + + def chat_with_model(token): + url = 'http://localhost:3000/api/chat/completions' + headers = { + 'Authorization': f'Bearer {token}', + 'Content-Type': 'application/json' + } + data = { + "model": "granite3.1-dense:8b", + "messages": [ + { + "role": "user", + "content": "Why is the sky blue?" + } + ] + } + response = requests.post(url, headers=headers, json=data) + return response.json() + ``` + +### 🔄 OpenResponses + +- **Endpoint**: `POST /api/responses` +- **Description**: Proxies requests to the [OpenResponses API](https://openresponses.org). Automatically routes to the correct upstream backend based on the `model` field, including Azure OpenAI deployments. Supports both streaming (SSE) and non-streaming responses. + +- **Curl Example**: + + ```bash + curl -X POST http://localhost:3000/api/responses \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "gpt-4.1", + "input": "Explain quantum entanglement in simple terms." + }' + ``` + +- **Python Example**: + + ```python + import requests + + def create_response(token, model, input_text): + url = 'http://localhost:3000/api/responses' + headers = { + 'Authorization': f'Bearer {token}', + 'Content-Type': 'application/json' + } + data = { + "model": model, + "input": input_text + } + response = requests.post(url, headers=headers, json=data) + return response.json() + ``` + +- **Streaming Example**: + + ```python + import requests + + def stream_response(token, model, input_text): + url = 'http://localhost:3000/api/responses' + headers = { + 'Authorization': f'Bearer {token}', + 'Content-Type': 'application/json' + } + data = { + "model": model, + "input": input_text, + "stream": True + } + response = requests.post(url, headers=headers, json=data, stream=True) + for line in response.iter_lines(): + if line: + print(line.decode('utf-8')) + ``` + +:::info +The Responses API endpoint supports the same model-based routing as Chat Completions. If you have multiple OpenAI-compatible backends configured, the request is automatically routed based on which backend hosts the specified model. Azure OpenAI deployments are also supported with appropriate API version handling. +::: + +### 🔧 Filter and Function Behavior with API Requests + +When using the API endpoints directly, filters (Functions) behave differently than when requests come from the web interface. + +:::info Authentication Note +Open WebUI accepts both **API keys** (prefixed with `sk-`) and **JWT tokens** for API authentication. This is intentional—the web interface uses JWT tokens internally for the same API endpoints. Both authentication methods provide equivalent API access. +::: + +#### Filter Execution + +| Filter Function | WebUI Request | Direct API Request | +|----------------|--------------|-------------------| +| `inlet()` | ✅ Runs | ✅ Runs | +| `stream()` | ✅ Runs | ✅ Runs | +| `outlet()` | ✅ Runs | ❌ **Does NOT run** | + +The `inlet()` function always executes, making it ideal for: +- **Rate limiting** - Track and limit requests per user +- **Request logging** - Log all API usage for monitoring +- **Input validation** - Reject invalid requests before they reach the model + +#### Triggering Outlet Processing + +The `outlet()` function only runs when the WebUI calls `/api/chat/completed` after a chat finishes. For direct API requests, you must call this endpoint yourself if you need outlet processing: + +- **Endpoint**: `POST /api/chat/completed` +- **Description**: Triggers outlet filter processing for a completed chat + +- **Curl Example**: + + ```bash + curl -X POST http://localhost:3000/api/chat/completed \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "llama3.1", + "messages": [ + {"role": "user", "content": "Hello"}, + {"role": "assistant", "content": "Hi! How can I help you today?"} + ], + "chat_id": "optional-uuid", + "session_id": "optional-session-id" + }' + ``` + +- **Python Example**: + + ```python + import requests + + def complete_chat_with_outlet(token, model, messages, chat_id=None): + """ + Call after receiving the full response from /api/chat/completions + to trigger outlet filter processing. + """ + url = 'http://localhost:3000/api/chat/completed' + headers = { + 'Authorization': f'Bearer {token}', + 'Content-Type': 'application/json' + } + payload = { + 'model': model, + 'messages': messages # Include the full conversation with assistant response + } + if chat_id: + payload['chat_id'] = chat_id + + response = requests.post(url, headers=headers, json=payload) + return response.json() + ``` + +:::tip +For more details on writing filters that work with API requests, see the [Filter Function documentation](/features/extensibility/plugin/functions/filter#-filter-behavior-with-api-requests). +::: + +### 🦙 Ollama API Proxy Support + +If you want to interact directly with Ollama models—including for embedding generation or raw prompt streaming—Open WebUI offers a transparent passthrough to the native Ollama API via a proxy route. + +- **Base URL**: `/ollama/` +- **Reference**: [Ollama API Documentation](https://github.com/ollama/ollama/blob/main/docs/api.md) + +#### 🔁 Generate Completion (Streaming) + +```bash +curl http://localhost:3000/ollama/api/generate \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "llama3.2", + "prompt": "Why is the sky blue?" +}' +``` + +#### 📦 List Available Models + +```bash +curl http://localhost:3000/ollama/api/tags \ + -H "Authorization: Bearer YOUR_API_KEY" +``` + +#### 🧠 Generate Embeddings + +```bash +curl -X POST http://localhost:3000/ollama/api/embed \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "llama3.2", + "input": ["Open WebUI is great!", "Let'\''s generate embeddings."] +}' +``` + +:::info +When using the Ollama Proxy endpoints, you **must** include the `Content-Type: application/json` header for POST requests, or the API may fail to parse the body. Authorization headers are also required if your instance is secured. +::: + +This is ideal for building search indexes, retrieval systems, or custom pipelines using Ollama models behind the Open WebUI. + +### 🧩 Retrieval Augmented Generation (RAG) + +The Retrieval Augmented Generation (RAG) feature allows you to enhance responses by incorporating data from external sources. Below, you will find the methods for managing files and knowledge collections via the API, and how to use them in chat completions effectively. + +#### Uploading Files + +To utilize external data in RAG responses, you first need to upload the files. The content of the uploaded file is automatically extracted and stored in a vector database. + +- **Endpoint**: `POST /api/v1/files/` +- **Query Parameters**: + - `process` (boolean, default: `true`): Whether to extract content and compute embeddings + - `process_in_background` (boolean, default: `true`): Whether to process asynchronously +- **Curl Example**: + + ```bash + curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Accept: application/json" \ + -F "file=@/path/to/your/file" http://localhost:3000/api/v1/files/ + ``` + +- **Python Example**: + + ```python + import requests + + def upload_file(token, file_path): + url = 'http://localhost:3000/api/v1/files/' + headers = { + 'Authorization': f'Bearer {token}', + 'Accept': 'application/json' + } + files = {'file': open(file_path, 'rb')} + response = requests.post(url, headers=headers, files=files) + return response.json() + ``` + +:::warning Async Processing and Race Conditions + +By default, file uploads are processed **asynchronously**. The upload endpoint returns immediately with a file ID, but content extraction and embedding computation continue in the background. + +If you attempt to add the file to a knowledge base before processing completes, you will receive a `400` error: + +``` +The content provided is empty. Please ensure that there is text or data present before proceeding. +``` + +**You must wait for file processing to complete before adding files to knowledge bases.** See the [Checking File Processing Status](#checking-file-processing-status) section below. + +::: + +#### Checking File Processing Status + +Before adding a file to a knowledge base, verify that processing has completed using the status endpoint. + +- **Endpoint**: `GET /api/v1/files/{id}/process/status` +- **Query Parameters**: + - `stream` (boolean, default: `false`): If `true`, returns a Server-Sent Events (SSE) stream + +**Status Values:** +| Status | Description | +|--------|-------------| +| `pending` | File is still being processed | +| `completed` | Processing finished successfully | +| `failed` | Processing failed (check `error` field for details) | + +- **Python Example** (Polling): + + ```python + import requests + import time + + def wait_for_file_processing(token, file_id, timeout=300, poll_interval=2): + """ + Wait for a file to finish processing. + + Returns: + dict: Final status with 'status' key ('completed' or 'failed') + + Raises: + TimeoutError: If processing doesn't complete within timeout + """ + url = f'http://localhost:3000/api/v1/files/{file_id}/process/status' + headers = {'Authorization': f'Bearer {token}'} + + start_time = time.time() + while time.time() - start_time < timeout: + response = requests.get(url, headers=headers) + result = response.json() + status = result.get('status') + + if status == 'completed': + return result + elif status == 'failed': + raise Exception(f"File processing failed: {result.get('error')}") + + time.sleep(poll_interval) + + raise TimeoutError(f"File processing did not complete within {timeout} seconds") + ``` + +- **Python Example** (SSE Streaming): + + ```python + import requests + import json + + def wait_for_file_processing_stream(token, file_id): + """ + Wait for file processing using Server-Sent Events stream. + More efficient than polling for long-running operations. + """ + url = f'http://localhost:3000/api/v1/files/{file_id}/process/status?stream=true' + headers = {'Authorization': f'Bearer {token}'} + + with requests.get(url, headers=headers, stream=True) as response: + for line in response.iter_lines(): + if line: + line = line.decode('utf-8') + if line.startswith('data: '): + data = json.loads(line[6:]) + status = data.get('status') + + if status == 'completed': + return data + elif status == 'failed': + raise Exception(f"File processing failed: {data.get('error')}") + + raise Exception("Stream ended unexpectedly") + ``` + +#### Adding Files to Knowledge Collections + +After uploading, you can group files into a knowledge collection or reference them individually in chats. + +:::important +**Always wait for file processing to complete before adding files to a knowledge base.** Files that are still processing will have empty content, causing a `400` error. Use the status endpoint described above to verify the file status is `completed`. +::: + +- **Endpoint**: `POST /api/v1/knowledge/{id}/file/add` +- **Curl Example**: + + ```bash + curl -X POST http://localhost:3000/api/v1/knowledge/{knowledge_id}/file/add \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{"file_id": "your-file-id-here"}' + ``` + +- **Python Example**: + + ```python + import requests + + def add_file_to_knowledge(token, knowledge_id, file_id): + url = f'http://localhost:3000/api/v1/knowledge/{knowledge_id}/file/add' + headers = { + 'Authorization': f'Bearer {token}', + 'Content-Type': 'application/json' + } + data = {'file_id': file_id} + response = requests.post(url, headers=headers, json=data) + return response.json() + ``` + +#### Complete Workflow Example + +Here's a complete example that uploads a file, waits for processing, and adds it to a knowledge base: + +```python +import requests +import time + +WEBUI_URL = 'http://localhost:3000' +TOKEN = 'your-api-key-here' + +def upload_and_add_to_knowledge(file_path, knowledge_id, timeout=300): + """ + Upload a file and add it to a knowledge base. + Properly waits for processing to complete before adding. + """ + headers = { + 'Authorization': f'Bearer {TOKEN}', + 'Accept': 'application/json' + } + + # Step 1: Upload the file + with open(file_path, 'rb') as f: + response = requests.post( + f'{WEBUI_URL}/api/v1/files/', + headers=headers, + files={'file': f} + ) + + if response.status_code != 200: + raise Exception(f"Upload failed: {response.text}") + + file_data = response.json() + file_id = file_data['id'] + print(f"File uploaded with ID: {file_id}") + + # Step 2: Wait for processing to complete + print("Waiting for file processing...") + start_time = time.time() + + while time.time() - start_time < timeout: + status_response = requests.get( + f'{WEBUI_URL}/api/v1/files/{file_id}/process/status', + headers=headers + ) + status_data = status_response.json() + status = status_data.get('status') + + if status == 'completed': + print("File processing completed!") + break + elif status == 'failed': + raise Exception(f"Processing failed: {status_data.get('error')}") + + time.sleep(2) # Poll every 2 seconds + else: + raise TimeoutError("File processing timed out") + + # Step 3: Add to knowledge base + add_response = requests.post( + f'{WEBUI_URL}/api/v1/knowledge/{knowledge_id}/file/add', + headers={**headers, 'Content-Type': 'application/json'}, + json={'file_id': file_id} + ) + + if add_response.status_code != 200: + raise Exception(f"Failed to add to knowledge: {add_response.text}") + + print(f"File successfully added to knowledge base!") + return add_response.json() + +# Usage +result = upload_and_add_to_knowledge('/path/to/document.pdf', 'your-knowledge-id') +``` + +#### Using Files and Collections in Chat Completions + +You can reference both individual files or entire collections in your RAG queries for enriched responses. + +##### Using an Individual File in Chat Completions + +This method is beneficial when you want to focus the chat model's response on the content of a specific file. + +- **Endpoint**: `POST /api/chat/completions` +- **Curl Example**: + + ```bash + curl -X POST http://localhost:3000/api/chat/completions \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "gpt-4-turbo", + "messages": [ + {"role": "user", "content": "Explain the concepts in this document."} + ], + "files": [ + {"type": "file", "id": "your-file-id-here"} + ] + }' + ``` + +- **Python Example**: + + ```python + import requests + + def chat_with_file(token, model, query, file_id): + url = 'http://localhost:3000/api/chat/completions' + headers = { + 'Authorization': f'Bearer {token}', + 'Content-Type': 'application/json' + } + payload = { + 'model': model, + 'messages': [{'role': 'user', 'content': query}], + 'files': [{'type': 'file', 'id': file_id}] + } + response = requests.post(url, headers=headers, json=payload) + return response.json() + ``` + +##### Using a Knowledge Collection in Chat Completions + +Leverage a knowledge collection to enhance the response when the inquiry may benefit from a broader context or multiple documents. + +- **Endpoint**: `POST /api/chat/completions` +- **Curl Example**: + + ```bash + curl -X POST http://localhost:3000/api/chat/completions \ + -H "Authorization: Bearer YOUR_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "model": "gpt-4-turbo", + "messages": [ + {"role": "user", "content": "Provide insights on the historical perspectives covered in the collection."} + ], + "files": [ + {"type": "collection", "id": "your-collection-id-here"} + ] + }' + ``` + +- **Python Example**: + + ```python + import requests + + def chat_with_collection(token, model, query, collection_id): + url = 'http://localhost:3000/api/chat/completions' + headers = { + 'Authorization': f'Bearer {token}', + 'Content-Type': 'application/json' + } + payload = { + 'model': model, + 'messages': [{'role': 'user', 'content': query}], + 'files': [{'type': 'collection', 'id': collection_id}] + } + response = requests.post(url, headers=headers, json=payload) + return response.json() + ``` + +These methods enable effective utilization of external knowledge via uploaded files and curated knowledge collections, enhancing chat applications' capabilities using the Open WebUI API. Whether using files individually or within collections, you can customize the integration based on your specific needs. + +## Advantages of Using Open WebUI as a Unified LLM Provider + +Open WebUI offers a myriad of benefits, making it an essential tool for developers and businesses alike: + +- **Unified Interface**: Simplify your interactions with different LLMs through a single, integrated platform. +- **Ease of Implementation**: Quick start integration with comprehensive documentation and community support. + +By following these guidelines, you can swiftly integrate and begin utilizing the Open WebUI API. Should you encounter any issues or have questions, feel free to reach out through our Discord Community or consult the FAQs. Happy coding! 🌟 diff --git a/docs/getting-started/env-configuration.mdx b/docs/reference/env-configuration.mdx similarity index 99% rename from docs/getting-started/env-configuration.mdx rename to docs/reference/env-configuration.mdx index d119419fa8..358bf9987c 100644 --- a/docs/getting-started/env-configuration.mdx +++ b/docs/reference/env-configuration.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 4 +sidebar_position: 1 title: "Environment Variable Configuration" --- @@ -158,7 +158,7 @@ After the admin account is created, sign-up is automatically disabled for securi :::danger -This should **only** ever be set to `False` when [ENABLE_OAUTH_SIGNUP](https://docs.openwebui.com/getting-started/env-configuration/#enable_oauth_signup) +This should **only** ever be set to `False` when [ENABLE_OAUTH_SIGNUP](https://docs.openwebui.com/reference/env-configuration/#enable_oauth_signup) is also being used and set to `True`. **Never disable this if OAUTH/SSO is not being used.** Failure to do so will result in the inability to login. ::: @@ -249,7 +249,7 @@ is also being used and set to `True`. **Never disable this if OAUTH/SSO is not b - Type: `bool` - Default: `True` -- Description: Enables or disables the [memory feature](/features/memory), allowing models to store and retrieve long-term information about users. +- Description: Enables or disables the [memory feature](/features/chat-conversations/memory), allowing models to store and retrieve long-term information about users. - Persistence: This environment variable is a `PersistentConfig` variable. #### `WEBHOOK_URL` @@ -274,7 +274,7 @@ is also being used and set to `True`. **Never disable this if OAUTH/SSO is not b - Type: `bool` - Default: `True` -- Description: When disabled, admin users are treated like regular users for workspace access (models, knowledge, prompts and tools) and only see items they have **explicit permission to access** through the existing access control system. This also applies to the visibility of models in the model selector - admins will be treated as regular users: base models and custom models they do not have **explicit permission to access**, will be hidden. If set to `True` (Default), admins have access to **all created items** in the workspace area and all models in the model selector, **regardless of access permissions**. This environment variable deprecates `ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS`. If you are still using `ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS` you should switch to `BYPASS_ADMIN_ACCESS_CONTROL`. +- Description: When disabled, admin users are treated like regular users for workspace access (models, knowledge, prompts, tools, and notes) and only see items they have **explicit permission to access** through the existing access control system. This also applies to the visibility of models in the model selector - admins will be treated as regular users: base models and custom models they do not have **explicit permission to access**, will be hidden. If set to `True` (Default), admins have access to **all created items** in the workspace area (including other users' notes) and all models in the model selector, **regardless of access permissions**. This environment variable deprecates `ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS`. If you are still using `ENABLE_ADMIN_WORKSPACE_CONTENT_ACCESS` you should switch to `BYPASS_ADMIN_ACCESS_CONTROL`. #### `ENABLE_USER_WEBHOOKS` @@ -1237,7 +1237,7 @@ For API Key creation (and the API keys themselves) to work, you need **both**: 1. Enable API keys globally using this setting (`ENABLE_API_KEYS`) 2. Grant the "API Keys" permission to users via Default Permissions or User Groups -**Note:** Administrators are not exempt—they must also be granted the permission via a User Group to use API keys. See the [Authentication Setup for API Key](/getting-started/advanced-topics/monitoring#authentication-setup-for-api-key-) guide for detailed setup instructions. +**Note:** Administrators are not exempt—they must also be granted the permission via a User Group to use API keys. See the [Authentication Setup for API Key](/reference/monitoring#authentication-setup-for-api-key-) guide for detailed setup instructions. ::: @@ -1359,7 +1359,7 @@ If enabled, the following headers are forwarded: - `X-OpenWebUI-Chat-Id` - `X-OpenWebUI-Message-Id` -This enables per-user authorization, auditing, rate limiting, and request tracing on external services. The chat and message ID headers are also required for [external tool event emitting](/features/plugin/development/events#-external-tool-events). +This enables per-user authorization, auditing, rate limiting, and request tracing on external services. The chat and message ID headers are also required for [external tool event emitting](/features/extensibility/plugin/development/events#-external-tool-events). #### `FORWARD_USER_INFO_HEADER_USER_NAME` @@ -1395,7 +1395,7 @@ This enables per-user authorization, auditing, rate limiting, and request tracin - Type: `str` - Default: `X-OpenWebUI-Message-Id` -- Description: Customizes the header name used to forward the current message ID. This header is required for [external tool event emitting](/features/plugin/development/events#-external-tool-events). +- Description: Customizes the header name used to forward the current message ID. This header is required for [external tool event emitting](/features/extensibility/plugin/development/events#-external-tool-events). :::tip Custom Header Prefix Use these variables when integrating with services that require specific header naming conventions. For example, AWS Bedrock AgentCore requires headers prefixed with `X-Amzn-Bedrock-AgentCore-Runtime-Custom-`: @@ -1607,7 +1607,7 @@ If `OFFLINE_MODE` is enabled, this `ENABLE_VERSION_UPDATE_CHECK` flag is always - OAuth authentication providers - Web search and RAG with external APIs -Read more about `offline mode` in the [offline mode guide](/tutorials/offline-mode). +Read more about `offline mode` in the [offline mode guide](/tutorials/maintenance/offline-mode). ::: @@ -2751,7 +2751,7 @@ Provide a clear and direct response to the user's query, including inline citati - Type: `int` - Default: `0` -- Description: Chunks smaller than this threshold will be intelligently merged with neighboring chunks when possible. This helps prevent tiny, low-quality fragments that can hurt retrieval performance and waste embedding resources. This feature only works when `ENABLE_MARKDOWN_HEADER_TEXT_SPLITTER` is enabled. Set to `0` to disable merging. For more information on the benefits and configuration, see the [RAG guide](/features/rag#chunking-configuration). +- Description: Chunks smaller than this threshold will be intelligently merged with neighboring chunks when possible. This helps prevent tiny, low-quality fragments that can hurt retrieval performance and waste embedding resources. This feature only works when `ENABLE_MARKDOWN_HEADER_TEXT_SPLITTER` is enabled. Set to `0` to disable merging. For more information on the benefits and configuration, see the [RAG guide](/features/chat-conversations/rag#chunking-configuration). - Persistence: This environment variable is a `PersistentConfig` variable. #### `RAG_TEXT_SPLITTER` @@ -3401,7 +3401,7 @@ the search query. Example: `http://searxng.local/search?q=` :::info -Brave's free tier enforces a rate limit of 1 request per second. Open WebUI automatically retries requests that receive HTTP 429 rate limit errors after a 1-second delay. For free tier users, set `WEB_SEARCH_CONCURRENT_REQUESTS` to `1` to ensure sequential request processing. See the [Brave web search documentation](/features/web-search/brave) for more details. +Brave's free tier enforces a rate limit of 1 request per second. Open WebUI automatically retries requests that receive HTTP 429 rate limit errors after a 1-second delay. For free tier users, set `WEB_SEARCH_CONCURRENT_REQUESTS` to `1` to ensure sequential request processing. See the [Brave web search documentation](/features/chat-conversations/web-search/providers/brave) for more details. ::: @@ -4239,7 +4239,7 @@ Strictly return in JSON format: :::tip -For a detailed setup guide and example configuration, please refer to the [Gemini Image Generation Guide](/features/image-generation-and-editing/gemini). +For a detailed setup guide and example configuration, please refer to the [Gemini Image Generation Guide](/features/media-generation/image-generation-and-editing/gemini). ::: @@ -4614,18 +4614,18 @@ In any production environment running more than one instance of Open WebUI (e.g. #### `WEBUI_AUTH_TRUSTED_EMAIL_HEADER` - Type: `str` -- Description: Defines the trusted request header for authentication. See [SSO docs](/features/auth/sso). +- Description: Defines the trusted request header for authentication. See [SSO docs](/features/access-security/auth/sso). #### `WEBUI_AUTH_TRUSTED_NAME_HEADER` - Type: `str` - Description: Defines the trusted request header for the username of anyone registering with the -`WEBUI_AUTH_TRUSTED_EMAIL_HEADER` header. See [SSO docs](/features/auth/sso). +`WEBUI_AUTH_TRUSTED_EMAIL_HEADER` header. See [SSO docs](/features/access-security/auth/sso). #### `WEBUI_AUTH_TRUSTED_GROUPS_HEADER` - Type: `str` -- Description: Defines the trusted request header containing a comma-separated list of group memberships for the user when using trusted header authentication. See [SSO docs](/features/auth/sso). +- Description: Defines the trusted request header containing a comma-separated list of group memberships for the user when using trusted header authentication. See [SSO docs](/features/access-security/auth/sso). ### Google @@ -5090,6 +5090,12 @@ This is useful when you need a JWT access token for downstream validation or whe - Description: Sets the bearer token for SCIM authentication. This token must be provided by identity providers when making SCIM API requests. Generate a secure random token (e.g., using `openssl rand -base64 32`) and configure it in both Open WebUI and your identity provider. - Persistence: This environment variable is a `PersistentConfig` variable. +#### `SCIM_AUTH_PROVIDER` + +- Type: `str` +- Default: `""` +- Description: Specifies the OAuth provider name to associate with SCIM `externalId` values (e.g., `microsoft`, `oidc`). When set, SCIM operations store and look up `externalId` under this provider key in the user's `scim` JSON field, enabling account linking between SCIM-provisioned identities and OAuth logins. A warning is logged on startup if SCIM is enabled but this variable is not set. + ## User Permissions ### Chat Permissions @@ -5240,7 +5246,7 @@ This is useful when you need a JWT access token for downstream validation or whe - Type: `str` - Default: `True` -- Description: Enables or disables user permission to use the [memory feature](/features/memory). +- Description: Enables or disables user permission to use the [memory feature](/features/chat-conversations/memory). - Persistence: This environment variable is a `PersistentConfig` variable. #### `USER_PERMISSIONS_FEATURES_FOLDERS` @@ -5277,7 +5283,7 @@ For API Key creation (and the API keys themselves) to work, you need **both**: 1. Grant the "API Keys" permission to users via this setting or User Groups 2. Enable API keys globally using `ENABLE_API_KEYS` -**Note:** Administrators are not exempt—they must also be granted the permission via a User Group to use API keys. See the [Authentication Setup for API Key](/getting-started/advanced-topics/monitoring#authentication-setup-for-api-key-) guide for detailed setup instructions. +**Note:** Administrators are not exempt—they must also be granted the permission via a User Group to use API keys. See the [Authentication Setup for API Key](/reference/monitoring#authentication-setup-for-api-key-) guide for detailed setup instructions. ::: diff --git a/docs/getting-started/advanced-topics/https-encryption.md b/docs/reference/https-encryption.md similarity index 79% rename from docs/getting-started/advanced-topics/https-encryption.md rename to docs/reference/https-encryption.md index 7937e9404e..432ac8604a 100644 --- a/docs/getting-started/advanced-topics/https-encryption.md +++ b/docs/reference/https-encryption.md @@ -28,9 +28,9 @@ The best method depends on your infrastructure. ### 🏠 For Local/Docker Users If you are running Open WebUI with Docker, the standard approach is to use a **Reverse Proxy**. This sits in front of Open WebUI and handles the SSL encryption. -* **[Nginx](../../tutorials/https/nginx.md)**: The industry standard. Highly configurable, great performance. -* **[Caddy](../../tutorials/https/caddy.md)**: **Easiest option**. Automatically obtains and renews Let's Encrypt certificates with minimal config. -* **[HAProxy](../../tutorials/https/haproxy.md)**: Robust choice for advanced load balancing needs. +* **[Nginx](/tutorials/https/nginx)**: The industry standard. Highly configurable, great performance. +* **[Caddy](/tutorials/https/caddy)**: **Easiest option**. Automatically obtains and renews Let's Encrypt certificates with minimal config. +* **[HAProxy](/tutorials/https/haproxy)**: Robust choice for advanced load balancing needs. ### ☁️ For Cloud Deployments * **Cloud Load Balancers**: (AWS ALB, Google Cloud Load Balancing) often handle SSL termination natively. @@ -45,17 +45,17 @@ Ready to set it up? Check out our dedicated tutorial category for step-by-step c
- +

Nginx Setup

Manual control and high performance.

- +

Caddy Setup

Zero-config automatic HTTPS.

- +

📂 View All HTTPS Tutorials

Browse the full category of guides.

diff --git a/docs/getting-started/advanced-topics/monitoring/index.md b/docs/reference/monitoring/index.md similarity index 97% rename from docs/getting-started/advanced-topics/monitoring/index.md rename to docs/reference/monitoring/index.md index 5e0a097f39..2a7402dbc6 100644 --- a/docs/getting-started/advanced-topics/monitoring/index.md +++ b/docs/reference/monitoring/index.md @@ -69,7 +69,7 @@ To go beyond basic availability, you can monitor the `/api/models` endpoint. Thi **API Endpoint Details:** -See the [Open WebUI API documentation](https://docs.openwebui.com/getting-started/api-endpoints/#-retrieve-all-models) for full details about the `/api/models` endpoint and its response structure. +See the [Open WebUI API documentation](https://docs.openwebui.com/reference/api-endpoints/#-retrieve-all-models) for full details about the `/api/models` endpoint and its response structure. **How to Test with `curl` (Authenticated):** @@ -180,8 +180,8 @@ This approach limits the potential impact if the monitoring API key is compromis If you don't see the API key generation option in your account settings: -- **Check global setting**: Verify that an administrator has enabled API keys globally under **Admin Panel** > **Settings** > **General** > **Enable API Keys**. See [`ENABLE_API_KEYS`](/getting-started/env-configuration#enable_api_keys). -- **Check your permissions**: Verify that your user account or group has been granted the "API Keys" feature permission under **Features Permissions**. See [`USER_PERMISSIONS_FEATURES_API_KEYS`](/getting-started/env-configuration#user_permissions_features_api_keys). +- **Check global setting**: Verify that an administrator has enabled API keys globally under **Admin Panel** > **Settings** > **General** > **Enable API Keys**. See [`ENABLE_API_KEYS`](/reference/env-configuration#enable_api_keys). +- **Check your permissions**: Verify that your user account or group has been granted the "API Keys" feature permission under **Features Permissions**. See [`USER_PERMISSIONS_FEATURES_API_KEYS`](/reference/env-configuration#user_permissions_features_api_keys). ### Using Uptime Kuma for Model Connectivity Monitoring 🐻 diff --git a/docs/getting-started/advanced-topics/monitoring/otel.md b/docs/reference/monitoring/otel.md similarity index 100% rename from docs/getting-started/advanced-topics/monitoring/otel.md rename to docs/reference/monitoring/otel.md diff --git a/docs/getting-started/advanced-topics/network-diagrams.mdx b/docs/reference/network-diagrams.mdx similarity index 100% rename from docs/getting-started/advanced-topics/network-diagrams.mdx rename to docs/reference/network-diagrams.mdx diff --git a/docs/troubleshooting/audio.mdx b/docs/troubleshooting/audio.mdx index cee60d187b..52df8a58bd 100644 --- a/docs/troubleshooting/audio.mdx +++ b/docs/troubleshooting/audio.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 3 -title: "Audio Troubleshooting" +title: "Audio" --- import { TopBanners } from "@site/src/components/TopBanners"; @@ -99,7 +99,7 @@ services: - AUDIO_TTS_OPENAI_API_KEY=not-needed ``` -→ See full guide: [OpenAI Edge TTS](/features/audio/text-to-speech/openai-edge-tts-integration) +→ See full guide: [OpenAI Edge TTS](/features/media-generation/audio/text-to-speech/openai-edge-tts-integration) ### Browser-Only Setup (No Backend Config Needed) @@ -191,7 +191,7 @@ docker exec open-webui bash -lc "pip show datasets" ``` :::tip -Consider using an external TTS service like [OpenAI Edge TTS](/features/audio/text-to-speech/openai-edge-tts-integration) or [Kokoro](/features/audio/text-to-speech/Kokoro-FastAPI-integration) instead of local Transformers TTS to avoid these dependency conflicts. +Consider using an external TTS service like [OpenAI Edge TTS](/features/media-generation/audio/text-to-speech/openai-edge-tts-integration) or [Kokoro](/features/media-generation/audio/text-to-speech/Kokoro-FastAPI-integration) instead of local Transformers TTS to avoid these dependency conflicts. ::: #### 2. Using External TTS Instead of Local @@ -423,7 +423,7 @@ curl http://your-tts-service:port/health | `AUDIO_STT_OPENAI_API_KEY` | API key for OpenAI-compatible STT | | `DEEPGRAM_API_KEY` | Deepgram API key | -For a complete list of audio environment variables, see [Environment Variable Configuration](/getting-started/env-configuration#audio). +For a complete list of audio environment variables, see [Environment Variable Configuration](/reference/env-configuration#audio). --- diff --git a/docs/troubleshooting/connection-error.mdx b/docs/troubleshooting/connection-error.mdx index a49b32c969..6d1af6ee3d 100644 --- a/docs/troubleshooting/connection-error.mdx +++ b/docs/troubleshooting/connection-error.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 0 -title: "Server Connectivity Issues" +title: "Connection Errors" --- We're here to help you get everything set up and running smoothly. Below, you'll find step-by-step instructions tailored for different scenarios to solve common connection issues. @@ -269,7 +269,7 @@ Manual database manipulation should be a last resort. Always back up your databa | `RESET_CONFIG_ON_START` | `false` | Reset database config to env var values on startup | | `ENABLE_PERSISTENT_CONFIG` | `true` | Whether database config takes precedence over env vars | -See the [Environment Configuration](/getting-started/env-configuration#aiohttp_client_timeout_model_list) documentation for more details. +See the [Environment Configuration](/reference/env-configuration#aiohttp_client_timeout_model_list) documentation for more details. ## 🐢 Slow Performance or Timeouts on Low-Spec Hardware @@ -287,7 +287,7 @@ Disable database session sharing: DATABASE_ENABLE_SESSION_SHARING=false ``` -For PostgreSQL on adequate hardware, enabling this setting may improve performance. See the [DATABASE_ENABLE_SESSION_SHARING](/getting-started/env-configuration#database_enable_session_sharing) documentation for details. +For PostgreSQL on adequate hardware, enabling this setting may improve performance. See the [DATABASE_ENABLE_SESSION_SHARING](/reference/env-configuration#database_enable_session_sharing) documentation for details. ## 🔒 SSL Connection Issue with Hugging Face @@ -355,7 +355,7 @@ If you are having trouble connecting to MCP tools (e.g. "Failed to connect to MC * **Authentication**: Ensure you aren't using "Bearer" without a token. * **Filters**: Try adding a comma to the Function Name Filter List. -See the [MCP Feature Documentation](/features/mcp#troubleshooting) for detailed troubleshooting steps. +See the [MCP Feature Documentation](/features/extensibility/mcp#troubleshooting) for detailed troubleshooting steps. ## 🔐 SSL/TLS Errors with Web Search diff --git a/docs/troubleshooting/image-generation.md b/docs/troubleshooting/image-generation.md index 40796d26ec..9debb96284 100644 --- a/docs/troubleshooting/image-generation.md +++ b/docs/troubleshooting/image-generation.md @@ -64,8 +64,8 @@ For advanced configuration, you can set the following environment variables. **Gemini** - `IMAGES_GEMINI_API_KEY`: API Key for Gemini. -- [View Gemini Configuration Guide](/features/image-generation-and-editing/gemini) +- [View Gemini Configuration Guide](/features/media-generation/image-generation-and-editing/gemini) :::tip -For a complete list of environment variables and detailed configuration options, please refer to the [Environment Configuration Guide](/getting-started/env-configuration). +For a complete list of environment variables and detailed configuration options, please refer to the [Environment Configuration Guide](/reference/env-configuration). ::: diff --git a/docs/troubleshooting/index.mdx b/docs/troubleshooting/index.mdx index 046c3056ee..eaaefa7fee 100644 --- a/docs/troubleshooting/index.mdx +++ b/docs/troubleshooting/index.mdx @@ -11,7 +11,7 @@ import { TopBanners } from "@site/src/components/TopBanners"; Encountering issues? Don't worry, we're here to help! 😊 Start with this important step: - 🔄 Make sure you're using the **latest version** of the software. -- 💾 **Check for Configuration Persistence:** Open WebUI prioritizes settings stored in its internal database over environment variables for certain settings (marked as `PersistentConfig`). If your environment changes (like `ENABLE_SIGNUP=True`) seem to be ignored, see the **[Environment Variable Configuration](/getting-started/env-configuration#important-note-on-persistentconfig-environment-variables)** page for how to force updates or manually edit the database. +- 💾 **Check for Configuration Persistence:** Open WebUI prioritizes settings stored in its internal database over environment variables for certain settings (marked as `PersistentConfig`). If your environment changes (like `ENABLE_SIGNUP=True`) seem to be ignored, see the **[Environment Variable Configuration](/reference/env-configuration#important-note-on-persistentconfig-environment-variables)** page for how to force updates or manually edit the database. With this project constantly evolving, updates and fixes are regularly added. Keeping your software up-to-date is crucial to take advantage of all the enhancements and fixes, ensuring the best possible experience. 🚀 diff --git a/docs/troubleshooting/manual-database-migration.md b/docs/troubleshooting/manual-database-migration.md index 16861ef700..c173740fbd 100644 --- a/docs/troubleshooting/manual-database-migration.md +++ b/docs/troubleshooting/manual-database-migration.md @@ -1,6 +1,6 @@ --- sidebar_position: 900 -title: Manual Alembic Database Migration +title: "Database Migration" sidebar_label: Manual Migration description: Complete guide for manually running Alembic database migrations when Open WebUI's automatic migration fails or requires direct intervention. keywords: [alembic, migration, database, troubleshooting, sqlite, postgresql, docker] @@ -481,7 +481,7 @@ There are three ways to resolve this, listed from safest to most lossy: #### Option 1: Restore from Backup (Recommended) -Restore your database from the backup you created in [Step 1](#step-1-backup-your-database), then run `alembic upgrade head` on the clean backup. This guarantees the full migration — including all data backfills — completes correctly. +Restore your database from the backup you created in [Step 1](#step-1-create-and-verify-backup), then run `alembic upgrade head` on the clean backup. This guarantees the full migration — including all data backfills — completes correctly. #### Option 2: Drop the Table and Re-Run diff --git a/docs/troubleshooting/multi-replica.mdx b/docs/troubleshooting/multi-replica.mdx index a3f18fa1de..5be1572461 100644 --- a/docs/troubleshooting/multi-replica.mdx +++ b/docs/troubleshooting/multi-replica.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 10 -title: "Multi-Replica / High Availability / Concurrency" +title: "Scaling & HA" --- # Multi-Replica, High Availability & Concurrency Troubleshooting @@ -11,12 +11,12 @@ This guide addresses common issues encountered when deploying Open WebUI in **mu Before troubleshooting specific errors, ensure your deployment meets these **absolute requirements** for a multi-replica setup. Missing any of these will cause instability, login loops, or data loss. -1. **Shared Secret Key:** [`WEBUI_SECRET_KEY`](/getting-started/env-configuration#webui_secret_key) **MUST** be identical on all replicas. -2. **External Database:** You **MUST** use an external PostgreSQL database (see [`DATABASE_URL`](/getting-started/env-configuration#database_url)). SQLite is **NOT** supported for multiple instances. -3. **Redis for WebSockets:** [`ENABLE_WEBSOCKET_SUPPORT=True`](/getting-started/env-configuration#enable_websocket_support) and [`WEBSOCKET_MANAGER=redis`](/getting-started/env-configuration#websocket_manager) with a valid [`WEBSOCKET_REDIS_URL`](/getting-started/env-configuration#websocket_redis_url) are required. +1. **Shared Secret Key:** [`WEBUI_SECRET_KEY`](/reference/env-configuration#webui_secret_key) **MUST** be identical on all replicas. +2. **External Database:** You **MUST** use an external PostgreSQL database (see [`DATABASE_URL`](/reference/env-configuration#database_url)). SQLite is **NOT** supported for multiple instances. +3. **Redis for WebSockets:** [`ENABLE_WEBSOCKET_SUPPORT=True`](/reference/env-configuration#enable_websocket_support) and [`WEBSOCKET_MANAGER=redis`](/reference/env-configuration#websocket_manager) with a valid [`WEBSOCKET_REDIS_URL`](/reference/env-configuration#websocket_redis_url) are required. 4. **Shared Storage:** A persistent volume (RWX / ReadWriteMany if possible, or ensuring all replicas map to the same underlying storage for `data/`) is critical for RAG (uploads/vectors) and generated images. -5. **External Vector Database (Recommended):** While embedded Chroma works with shared storage, using a dedicated external Vector DB (e.g., [PGVector](/getting-started/env-configuration#pgvector_db_url), Milvus, Qdrant) is **highly recommended** to avoid file locking issues and improve performance. -6. **Database Session Sharing (Optional):** For PostgreSQL deployments with adequate resources, consider enabling [`DATABASE_ENABLE_SESSION_SHARING=True`](/getting-started/env-configuration#database_enable_session_sharing) to improve performance under high concurrency. +5. **External Vector Database (Recommended):** While embedded Chroma works with shared storage, using a dedicated external Vector DB (e.g., [PGVector](/reference/env-configuration#pgvector_db_url), Milvus, Qdrant) is **highly recommended** to avoid file locking issues and improve performance. +6. **Database Session Sharing (Optional):** For PostgreSQL deployments with adequate resources, consider enabling [`DATABASE_ENABLE_SESSION_SHARING=True`](/reference/env-configuration#database_enable_session_sharing) to improve performance under high concurrency. --- @@ -54,7 +54,7 @@ env: - **Missing Redis:** WebSockets are defaulting to in-memory, so events on Replica A (e.g., LLM generation finish) are not broadcast to the user connected to Replica B. **Solution:** -1. **Configure CORS:** Ensure [`CORS_ALLOW_ORIGIN`](/getting-started/env-configuration#cors_allow_origin) includes your public domain *and* http/https variations. +1. **Configure CORS:** Ensure [`CORS_ALLOW_ORIGIN`](/reference/env-configuration#cors_allow_origin) includes your public domain *and* http/https variations. If you see logs like `engineio.base_server:_log_error_once:354 - https://yourdomain.com is not an accepted origin`, you must update this variable. It accepts a **semicolon-separated list** of allowed origins. @@ -143,7 +143,7 @@ Enabling session sharing can improve performance under high concurrency: DATABASE_ENABLE_SESSION_SHARING=true ``` -See [DATABASE_ENABLE_SESSION_SHARING](/getting-started/env-configuration#database_enable_session_sharing) for details. +See [DATABASE_ENABLE_SESSION_SHARING](/reference/env-configuration#database_enable_session_sharing) for details. #### Connection Pool Sizing @@ -172,7 +172,7 @@ For example, with `DATABASE_POOL_SIZE=15`, `DATABASE_POOL_MAX_OVERFLOW=20`, 3 re ::: -See [DATABASE_POOL_SIZE](/getting-started/env-configuration#database_pool_size) for details. +See [DATABASE_POOL_SIZE](/reference/env-configuration#database_pool_size) for details. --- @@ -213,7 +213,7 @@ While Open WebUI is designed to be stateless with proper Redis configuration, en ## Related Documentation -- [Environment Variable Configuration](/getting-started/env-configuration) +- [Environment Variable Configuration](/reference/env-configuration) - [Optimization, Performance & RAM Usage](/troubleshooting/performance) - [Troubleshooting Connection Errors](/troubleshooting/connection-error) - [Logging Configuration](/getting-started/advanced-topics/logging) diff --git a/docs/troubleshooting/performance.md b/docs/troubleshooting/performance.md index 678eb956d2..9fe16ffe39 100644 --- a/docs/troubleshooting/performance.md +++ b/docs/troubleshooting/performance.md @@ -1,6 +1,6 @@ --- sidebar_position: 15 -title: "Optimization, Performance & RAM Usage" +title: "Performance & RAM" --- # Optimization, Performance & RAM Usage @@ -91,7 +91,7 @@ By default, Open WebUI saves chats **after generation is complete**. While savin - **Env Var**: `ENABLE_REALTIME_CHAT_SAVE=False` (Default) - **Effect**: Chats are saved only when the generation is complete (or periodically). -- **Recommendation**: **DO NOT ENABLE `ENABLE_REALTIME_CHAT_SAVE` in production.** It is highly recommended to keep this `False` to prevent database connection exhaustion and severe performance degradation under concurrent load. See the [Environment Variable Configuration](/getting-started/env-configuration#enable_realtime_chat_save) for details. +- **Recommendation**: **DO NOT ENABLE `ENABLE_REALTIME_CHAT_SAVE` in production.** It is highly recommended to keep this `False` to prevent database connection exhaustion and severe performance degradation under concurrent load. See the [Environment Variable Configuration](/reference/env-configuration#enable_realtime_chat_save) for details. ### Database Session Sharing @@ -367,22 +367,22 @@ If resource usage is critical, disable automated features that constantly trigge ## 🔗 Environment Variable References -For detailed information on all available variables, see the [Environment Configuration](/getting-started/env-configuration) guide. +For detailed information on all available variables, see the [Environment Configuration](/reference/env-configuration) guide. | Variable | Description & Link | | :--- | :--- | -| `TASK_MODEL` | [Task Model (Local)](/getting-started/env-configuration#task_model) | -| `TASK_MODEL_EXTERNAL` | [Task Model (External)](/getting-started/env-configuration#task_model_external) | -| `ENABLE_BASE_MODELS_CACHE` | [Cache Model List](/getting-started/env-configuration#enable_base_models_cache) | -| `MODELS_CACHE_TTL` | [Model Cache TTL](/getting-started/env-configuration#models_cache_ttl) | -| `ENABLE_QUERIES_CACHE` | [Queries Cache](/getting-started/env-configuration#enable_queries_cache) | -| `DATABASE_URL` | [Database URL](/getting-started/env-configuration#database_url) | -| `ENABLE_REALTIME_CHAT_SAVE` | [Realtime Chat Save](/getting-started/env-configuration#enable_realtime_chat_save) | -| `CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE` | [Streaming Chunk Size](/getting-started/env-configuration#chat_response_stream_delta_chunk_size) | -| `THREAD_POOL_SIZE` | [Thread Pool Size](/getting-started/env-configuration#thread_pool_size) | -| `RAG_EMBEDDING_ENGINE` | [Embedding Engine](/getting-started/env-configuration#rag_embedding_engine) | -| `AUDIO_STT_ENGINE` | [STT Engine](/getting-started/env-configuration#audio_stt_engine) | -| `ENABLE_IMAGE_GENERATION` | [Image Generation](/getting-started/env-configuration#enable_image_generation) | -| `ENABLE_AUTOCOMPLETE_GENERATION` | [Autocomplete](/getting-started/env-configuration#enable_autocomplete_generation) | -| `RAG_SYSTEM_CONTEXT` | [RAG System Context](/getting-started/env-configuration#rag_system_context) | -| `DATABASE_ENABLE_SESSION_SHARING` | [Database Session Sharing](/getting-started/env-configuration#database_enable_session_sharing) | +| `TASK_MODEL` | [Task Model (Local)](/reference/env-configuration#task_model) | +| `TASK_MODEL_EXTERNAL` | [Task Model (External)](/reference/env-configuration#task_model_external) | +| `ENABLE_BASE_MODELS_CACHE` | [Cache Model List](/reference/env-configuration#enable_base_models_cache) | +| `MODELS_CACHE_TTL` | [Model Cache TTL](/reference/env-configuration#models_cache_ttl) | +| `ENABLE_QUERIES_CACHE` | [Queries Cache](/reference/env-configuration#enable_queries_cache) | +| `DATABASE_URL` | [Database URL](/reference/env-configuration#database_url) | +| `ENABLE_REALTIME_CHAT_SAVE` | [Realtime Chat Save](/reference/env-configuration#enable_realtime_chat_save) | +| `CHAT_RESPONSE_STREAM_DELTA_CHUNK_SIZE` | [Streaming Chunk Size](/reference/env-configuration#chat_response_stream_delta_chunk_size) | +| `THREAD_POOL_SIZE` | [Thread Pool Size](/reference/env-configuration#thread_pool_size) | +| `RAG_EMBEDDING_ENGINE` | [Embedding Engine](/reference/env-configuration#rag_embedding_engine) | +| `AUDIO_STT_ENGINE` | [STT Engine](/reference/env-configuration#audio_stt_engine) | +| `ENABLE_IMAGE_GENERATION` | [Image Generation](/reference/env-configuration#enable_image_generation) | +| `ENABLE_AUTOCOMPLETE_GENERATION` | [Autocomplete](/reference/env-configuration#enable_autocomplete_generation) | +| `RAG_SYSTEM_CONTEXT` | [RAG System Context](/reference/env-configuration#rag_system_context) | +| `DATABASE_ENABLE_SESSION_SHARING` | [Database Session Sharing](/reference/env-configuration#database_enable_session_sharing) | diff --git a/docs/troubleshooting/rag.mdx b/docs/troubleshooting/rag.mdx index 9a0aa66f9d..5488c75f16 100644 --- a/docs/troubleshooting/rag.mdx +++ b/docs/troubleshooting/rag.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 3 -title: "Troubleshooting RAG (Retrieval-Augmented Generation)" +title: "RAG" --- Retrieval-Augmented Generation (RAG) enables language models to reason over external content—documents, knowledge bases, and more—by retrieving relevant info and feeding it into the model. But when things don't work as expected (e.g., the model "hallucinates" or misses relevant info), it's often not the model's fault—it's a context issue. @@ -144,7 +144,7 @@ Open WebUI implements various limits to ensure system stability and prevent abus * **Max File Size:** Controlled by `RAG_FILE_MAX_SIZE` (default: Unlimited). Configurable in **Admin Panel > Settings > Documents > General > Max Upload Size**. * **Max File Count:** Controlled by `RAG_FILE_MAX_COUNT` (default: Unlimited). Configurable in **Admin Panel > Settings > Documents > General > Max Upload Count**. * **Allowed File Extensions:** Controlled by `RAG_ALLOWED_FILE_EXTENSIONS` (default: All). Configurable in **Admin Panel > Settings > Documents > General > Allowed File Extensions**. -* **Folder Uploads:** Subject to the `FOLDER_MAX_FILE_COUNT` [environment variable](/getting-started/env-configuration/#folder_max_file_count) (defaults to 100). This limit applies to the number of files directly associated with a folder. +* **Folder Uploads:** Subject to the `FOLDER_MAX_FILE_COUNT` [environment variable](/reference/env-configuration/#folder_max_file_count) (defaults to 100). This limit applies to the number of files directly associated with a folder. * **Knowledge Base Uploads:** * **File Limit:** Subject to the same `RAG_FILE_MAX_SIZE` limit as chats, but **not** subject to the `RAG_FILE_MAX_COUNT` limit, allowing for unlimited file uploads. * **RAG Enforcement:** All files uploaded to a Knowledge Base are automatically indexed. However, similar to chat uploads, Knowledge Bases can also be used in **Full Context Mode** (accessible in chat settings), which feeds the full document content to the model instead of using vector search retrieval. @@ -238,7 +238,7 @@ def wait_for_processing(token, file_id, timeout=300): | `failed` | Processing failed (check error field) | :::tip -For complete API workflow examples including proper status checking, see the [API Endpoints documentation](/getting-started/api-endpoints#checking-file-processing-status). +For complete API workflow examples including proper status checking, see the [API Endpoints documentation](/reference/api-endpoints#checking-file-processing-status). ::: --- @@ -353,7 +353,7 @@ If you are running a version with this fix and still experiencing worker death, RAG_EMBEDDING_MODEL=nomic-embed-text ``` -4. **Optionally set a safety timeout** via [`RAG_EMBEDDING_TIMEOUT`](/getting-started/env-configuration#rag_embedding_timeout) to abort abnormally long embedding operations (does not affect health checks). +4. **Optionally set a safety timeout** via [`RAG_EMBEDDING_TIMEOUT`](/reference/env-configuration#rag_embedding_timeout) to abort abnormally long embedding operations (does not affect health checks). --- diff --git a/docs/troubleshooting/sso.mdx b/docs/troubleshooting/sso.mdx index c100790753..36d4a71104 100644 --- a/docs/troubleshooting/sso.mdx +++ b/docs/troubleshooting/sso.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 4 -title: "Troubleshooting OAUTH / SSO Issues" +title: "SSO & OAuth" --- OAUTH or Single Sign-On (SSO) lets you secure Open WebUI with modern authentication, but when users encounter login problems, the solution is often simple—if you know where to look. Most of the time, one of these key issues below is the culprit. Here's how to hunt them down and fix SSO headaches fast! 🚦 @@ -62,7 +62,7 @@ ENABLE_OAUTH_SIGNUP=true ``` ✅ Solutions: -- **Always reference the official [environment configuration documentation](https://docs.openwebui.com/getting-started/env-configuration/)** for exact variable names +- **Always reference the official [environment configuration documentation](https://docs.openwebui.com/reference/env-configuration/)** for exact variable names - Double-check your deployment environment: - Ensure all required environment variables are set exactly as documented - If self-hosting, confirm these variables are present in your Docker Compose, Kubernetes manifest, or `.env` file diff --git a/docs/troubleshooting/web-search.mdx b/docs/troubleshooting/web-search.mdx index 2e95e6e0f1..b2e963e3cb 100644 --- a/docs/troubleshooting/web-search.mdx +++ b/docs/troubleshooting/web-search.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 4 -title: "Troubleshooting Web Search" +title: "Web Search" --- Web Search in Open WebUI allows language models to access real-time information from the internet. When things don't work as expected, this guide will help you diagnose and fix common issues. @@ -23,7 +23,7 @@ This happens because the web content fetcher doesn't use your `http_proxy`/`http 2. Enable **Trust Proxy Environment** 3. Save changes -Alternatively, set the environment variable [`WEB_SEARCH_TRUST_ENV`](../getting-started/env-configuration#web_search_trust_env): +Alternatively, set the environment variable [`WEB_SEARCH_TRUST_ENV`](/reference/env-configuration#web_search_trust_env): ```bash WEB_SEARCH_TRUST_ENV=True @@ -90,7 +90,7 @@ If web searches are timing out: ## Environment Variables Reference -For a comprehensive list of all web search environment variables, see the [Environment Configuration documentation](../getting-started/env-configuration#web-search). +For a comprehensive list of all web search environment variables, see the [Environment Configuration documentation](/reference/env-configuration#web-search). Key variables: @@ -111,4 +111,4 @@ If you're still experiencing problems: 1. Check the Open WebUI logs for detailed error messages 2. Verify your search engine configuration is correct 3. Test connectivity from the Open WebUI container to your search engine -4. Review all [Web Search environment variables](../getting-started/env-configuration#web-search) for additional configuration options +4. Review all [Web Search environment variables](/reference/env-configuration#web-search) for additional configuration options diff --git a/docs/tutorials/deployment/index.mdx b/docs/tutorials/deployment/index.mdx index 6d25ec9bc6..a9c0afb420 100644 --- a/docs/tutorials/deployment/index.mdx +++ b/docs/tutorials/deployment/index.mdx @@ -1,6 +1,6 @@ --- -sidebar_position: 1000 -title: "Deployment & Community Guides" +sidebar_position: 5 +title: "Community Guides" --- import { TopBanners } from "@site/src/components/TopBanners"; diff --git a/docs/tutorials/https/_category_.json b/docs/tutorials/https/_category_.json index 254b95d438..c143f474cf 100644 --- a/docs/tutorials/https/_category_.json +++ b/docs/tutorials/https/_category_.json @@ -1,6 +1,6 @@ { "label": "HTTPS", - "position": 200, + "position": 10, "link": { "type": "generated-index" } diff --git a/docs/tutorials/https/caddy.md b/docs/tutorials/https/caddy.md index b1431a15c5..8d2a39d373 100644 --- a/docs/tutorials/https/caddy.md +++ b/docs/tutorials/https/caddy.md @@ -56,7 +56,7 @@ cd ~/open-webui ### Installing OpenWebUI -Create a `docker-compose.yml` file in the `~/open-webui` directory. I've left in a commented section for setting some environment varibles for Qdrant, but you can follow that for any other [environment variables](https://docs.openwebui.com/getting-started/env-configuration) you might need to set. +Create a `docker-compose.yml` file in the `~/open-webui` directory. I've left in a commented section for setting some environment varibles for Qdrant, but you can follow that for any other [environment variables](https://docs.openwebui.com/reference/env-configuration) you might need to set. ```yaml services: diff --git a/docs/tutorials/integrations/_category_.json b/docs/tutorials/integrations/_category_.json index 36497a8d43..c081ec17bd 100644 --- a/docs/tutorials/integrations/_category_.json +++ b/docs/tutorials/integrations/_category_.json @@ -1,6 +1,6 @@ { "label": "Integrations", - "position": 2, + "position": 20, "link": { "type": "generated-index" } diff --git a/docs/tutorials/integrations/auth-identity/_category_.json b/docs/tutorials/integrations/auth-identity/_category_.json new file mode 100644 index 0000000000..a7ddcdab4c --- /dev/null +++ b/docs/tutorials/integrations/auth-identity/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Auth & Identity", + "position": 2, + "collapsible": true, + "collapsed": true +} diff --git a/docs/tutorials/integrations/azure-ad-ds-ldap.mdx b/docs/tutorials/integrations/auth-identity/azure-ad-ds-ldap.mdx similarity index 99% rename from docs/tutorials/integrations/azure-ad-ds-ldap.mdx rename to docs/tutorials/integrations/auth-identity/azure-ad-ds-ldap.mdx index 44218712e2..364a86d418 100644 --- a/docs/tutorials/integrations/azure-ad-ds-ldap.mdx +++ b/docs/tutorials/integrations/auth-identity/azure-ad-ds-ldap.mdx @@ -1,5 +1,5 @@ --- -title: "Azure AD Domain Services (LDAPS) Integration" +title: "Azure AD LDAP" --- :::warning diff --git a/docs/tutorials/tips/dual-oauth-configuration.mdx b/docs/tutorials/integrations/auth-identity/dual-oauth-configuration.mdx similarity index 98% rename from docs/tutorials/tips/dual-oauth-configuration.mdx rename to docs/tutorials/integrations/auth-identity/dual-oauth-configuration.mdx index 9dd3e8caaa..e7ce2eea14 100644 --- a/docs/tutorials/tips/dual-oauth-configuration.mdx +++ b/docs/tutorials/integrations/auth-identity/dual-oauth-configuration.mdx @@ -1,5 +1,5 @@ --- -title: Dual OAuth Configuration (Microsoft & Google) +title: "Dual OAuth Setup" sidebar_label: Dual OAuth Configuration sidebar_position: 100 description: Learn how to configure both Microsoft and Google OAuth providers simultaneously in Open WebUI using an unofficial community workaround. diff --git a/docs/tutorials/integrations/entra-group-name-sync.md b/docs/tutorials/integrations/auth-identity/entra-group-name-sync.md similarity index 93% rename from docs/tutorials/integrations/entra-group-name-sync.md rename to docs/tutorials/integrations/auth-identity/entra-group-name-sync.md index 6aec23f6fe..5c1fdaf996 100644 --- a/docs/tutorials/integrations/entra-group-name-sync.md +++ b/docs/tutorials/integrations/auth-identity/entra-group-name-sync.md @@ -1,6 +1,6 @@ --- sidebar_position: 15 -title: "Microsoft Entra ID Group Name Sync" +title: "Entra ID Group Sync" --- :::warning @@ -17,7 +17,7 @@ This tutorial explains how to configure Microsoft Entra ID to return group **nam ## Prerequisites -- An Open WebUI instance configured with [Microsoft OAuth](/features/auth/sso#microsoft) +- An Open WebUI instance configured with [Microsoft OAuth](/features/access-security/auth/sso#microsoft) - An Azure account with permissions to modify App Registrations - Access to the Microsoft Entra admin center - Basic understanding of Microsoft Entra ID application configuration @@ -30,7 +30,7 @@ To get human-readable group names in Open WebUI, you need to: 2. Modify the application manifest to use `cloud_displayname` 3. Set `groupMembershipClaims` to `ApplicationGroup` only 4. Assign security groups to the Enterprise Application -5. Configure Open WebUI environment variables for [OAuth Group Management](/features/auth/sso#oauth-group-management) +5. Configure Open WebUI environment variables for [OAuth Group Management](/features/access-security/auth/sso#oauth-group-management) :::info Key Requirement @@ -140,7 +140,7 @@ Ensure your App Registration has the required Microsoft Graph permissions: ## Step 5: Configure Open WebUI Environment Variables -Configure the following environment variables for your Open WebUI deployment. For more details on each variable, see the [environment variable documentation](/getting-started/env-configuration). +Configure the following environment variables for your Open WebUI deployment. For more details on each variable, see the [environment variable documentation](/reference/env-configuration). ```bash # Required: Your public WebUI address @@ -201,9 +201,9 @@ Admin users' group memberships are **not** automatically updated via OAuth group ## Additional Resources -- [SSO (OAuth, OIDC, Trusted Header)](/features/auth/sso) - OAuth configuration overview -- [OAuth Group Management](/features/auth/sso#oauth-group-management) - Group synchronization details -- [Groups](/features/rbac/groups) - Group management in Open WebUI +- [SSO (OAuth, OIDC, Trusted Header)](/features/access-security/auth/sso) - OAuth configuration overview +- [OAuth Group Management](/features/access-security/auth/sso#oauth-group-management) - Group synchronization details +- [Groups](/features/access-security/rbac/groups) - Group management in Open WebUI - [SSO Troubleshooting Guide](/troubleshooting/sso) - Common OAuth issues and solutions -- [Environment Configuration](/getting-started/env-configuration) - All environment variables +- [Environment Configuration](/reference/env-configuration) - All environment variables - [Microsoft Optional Claims Documentation](https://learn.microsoft.com/en-us/entra/identity-platform/optional-claims) - Microsoft's official documentation diff --git a/docs/tutorials/integrations/okta-oidc-sso.md b/docs/tutorials/integrations/auth-identity/okta-oidc-sso.md similarity index 99% rename from docs/tutorials/integrations/okta-oidc-sso.md rename to docs/tutorials/integrations/auth-identity/okta-oidc-sso.md index f5f2e3758a..8cd36e6871 100644 --- a/docs/tutorials/integrations/okta-oidc-sso.md +++ b/docs/tutorials/integrations/auth-identity/okta-oidc-sso.md @@ -214,5 +214,5 @@ Restart your Open WebUI instance after setting these environment variables. * **Groups Not Syncing:** Verify that the `OAUTH_GROUP_CLAIM` environment variable matches the claim name configured in the Okta ID Token settings. Ensure the user has logged out and back in after group changes - a login flow is required to update OIDC. Remember admin groups are not synced. * **Configuration Errors:** Review the Open WebUI server logs for detailed error messages related to OIDC configuration. -* Refer to the official [Open WebUI SSO Documentation](/features/auth/sso). +* Refer to the official [Open WebUI SSO Documentation](/features/access-security/auth/sso). * Consult the [Okta Developer Documentation](https://developer.okta.com/docs/). diff --git a/docs/tutorials/integrations/backend-controlled-ui-compatible-flow.md b/docs/tutorials/integrations/backend-controlled-ui-compatible-flow.md index 054423e248..f6cb1ad972 100644 --- a/docs/tutorials/integrations/backend-controlled-ui-compatible-flow.md +++ b/docs/tutorials/integrations/backend-controlled-ui-compatible-flow.md @@ -1,6 +1,6 @@ --- sidebar_position: 2 -title: "Backend-Controlled, UI-Compatible API Flow" +title: "Backend-Controlled API Flow" --- :::warning diff --git a/docs/tutorials/integrations/custom-ca.md b/docs/tutorials/integrations/custom-ca.md index bb66d20226..ba5773fa34 100644 --- a/docs/tutorials/integrations/custom-ca.md +++ b/docs/tutorials/integrations/custom-ca.md @@ -1,6 +1,6 @@ --- sidebar_position: 14 -title: "Setting up with Custom CA Store" +title: "Custom CA Store" --- :::warning diff --git a/docs/tutorials/integrations/dev-tools/_category_.json b/docs/tutorials/integrations/dev-tools/_category_.json new file mode 100644 index 0000000000..91f73f2f37 --- /dev/null +++ b/docs/tutorials/integrations/dev-tools/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Dev Tools", + "position": 4, + "collapsible": true, + "collapsed": true +} diff --git a/docs/tutorials/integrations/browser-search-engine.md b/docs/tutorials/integrations/dev-tools/browser-search-engine.md similarity index 97% rename from docs/tutorials/integrations/browser-search-engine.md rename to docs/tutorials/integrations/dev-tools/browser-search-engine.md index 173a6519d7..686a7b6c65 100644 --- a/docs/tutorials/integrations/browser-search-engine.md +++ b/docs/tutorials/integrations/dev-tools/browser-search-engine.md @@ -20,7 +20,7 @@ Open WebUI allows you to integrate directly into your web browser. This tutorial Before you begin, ensure that: - You have Chrome or another supported browser installed. -- The `WEBUI_URL` environment variable is set correctly, either using Docker environment variables or in the `.env` file as specified in the [Getting Started](https://docs.openwebui.com/getting-started/env-configuration) guide. +- The `WEBUI_URL` environment variable is set correctly, either using Docker environment variables or in the `.env` file as specified in the [Getting Started](https://docs.openwebui.com/reference/env-configuration) guide. ### Step 1: Set the WEBUI_URL Environment Variable diff --git a/docs/tutorials/integrations/continue-dev.md b/docs/tutorials/integrations/dev-tools/continue-dev.md similarity index 96% rename from docs/tutorials/integrations/continue-dev.md rename to docs/tutorials/integrations/dev-tools/continue-dev.md index d4369af0be..65f610052b 100644 --- a/docs/tutorials/integrations/continue-dev.md +++ b/docs/tutorials/integrations/dev-tools/continue-dev.md @@ -1,6 +1,6 @@ --- sidebar_position: 13 -title: "Continue.dev VS Code Extension with Open WebUI" +title: "Continue.dev" --- :::warning @@ -153,7 +153,7 @@ env: This is a crucial step: you need to direct the continue.dev extension requests to your Open WebUI instance. Either use an actual domain name if the instance is hosted somewhere (e.g., `https://example.com/api`) or your localhost setup (e.g., `http://localhost:3000/api`). -You can find more information about the URLs in the [API Endpoints guide](/getting-started/api-endpoints). +You can find more information about the URLs in the [API Endpoints guide](/reference/api-endpoints). ```yaml apiBase: http://localhost:3000/api @@ -164,7 +164,7 @@ apiBase: http://localhost:3000/api ### API Key To authenticate with your Open WebUI instance, you'll need to generate an API key. -Follow the instructions in [this guide](https://docs.openwebui.com/getting-started/advanced-topics/monitoring#authentication-setup-for-api-key-) to create it. +Follow the instructions in [this guide](https://docs.openwebui.com/reference/monitoring#authentication-setup-for-api-key-) to create it. ```yaml apiKey: YOUR_OPEN_WEBUI_API_KEY diff --git a/docs/tutorials/integrations/firefox-sidebar.md b/docs/tutorials/integrations/dev-tools/firefox-sidebar.md similarity index 95% rename from docs/tutorials/integrations/firefox-sidebar.md rename to docs/tutorials/integrations/dev-tools/firefox-sidebar.md index 882a38a0b5..b7fa38f6ff 100644 --- a/docs/tutorials/integrations/firefox-sidebar.md +++ b/docs/tutorials/integrations/dev-tools/firefox-sidebar.md @@ -1,115 +1,115 @@ ---- -sidebar_position: 4100 -title: "Firefox AI Chatbot Sidebar" ---- - -:::warning - -This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial. - -::: - -## 🦊 Firefox AI Chatbot Sidebar - -# Integrating Open WebUI as a Local AI Chatbot Browser Assistant in Mozilla Firefox - -## Prerequisites - -Before integrating Open WebUI as a AI chatbot browser assistant in Mozilla Firefox, ensure you have: - -- Open WebUI instance URL (local or domain) -- Firefox browser installed - -## Enabling AI Chatbot in Firefox - -1. Click on the hamburger button (three horizontal lines button at the top right corner, just below the `X` button) -2. Open up Firefox settings -3. Click on the `Firefox Labs` section -4. Toggle on `AI Chatbot` - -Alternatively, you can enable AI Chatbot through the `about:config` page (described in the next section). - -## Configuring about:config Settings - -1. Type `about:config` in the Firefox address bar -2. Click `Accept the Risk and Continue` -3. Search for `browser.ml.chat.enabled` and toggle it to `true` if it's not already enabled through Firefox Labs -4. Search for `browser.ml.chat.hideLocalhost` and toggle it to `false` - -### browser.ml.chat.prompts.{#} - -To add custom prompts, follow these steps: - -1. Search for `browser.ml.chat.prompts.{#}` (replace `{#}` with a number, e.g., `0`, `1`, `2`, etc.) -2. Click the `+` button to add a new prompt -3. Enter the prompt label, value, and ID (e.g., `{"id":"My Prompt", "value": "This is my custom prompt.", "label": "My Prompt"}`) -4. Repeat the process to add more prompts as desired - -### browser.ml.chat.provider - -1. Search for `browser.ml.chat.provider` -2. Enter your Open WebUI instance URL, including any optional parameters (e.g., `https://my-open-webui-instance.com/?model=browser-productivity-assistant&temporary-chat=true&tools=jina_web_scrape`) - -## URL Parameters for Open WebUI - -The following URL parameters can be used to customize your Open WebUI instance: - -### Models and Model Selection - -- `models`: Specify multiple models (comma-separated list) for the chat session (e.g., `/?models=model1,model2`) -- `model`: Specify a single model for the chat session (e.g., `/?model=model1`) - -### YouTube Transcription - -- `youtube`: Provide a YouTube video ID to transcribe the video in the chat (e.g., `/?youtube=VIDEO_ID`) - -### Web Search - -- `web-search`: Enable web search functionality by setting this parameter to `true` (e.g., `/?web-search=true`) - -### Tool Selection - -- `tools` or `tool-ids`: Specify a comma-separated list of tool IDs to activate in the chat (e.g., `/?tools=tool1,tool2` or `/?tool-ids=tool1,tool2`) - -### Call Overlay - -- `call`: Enable a video or call overlay in the chat interface by setting this parameter to `true` (e.g., `/?call=true`) - -### Initial Query Prompt - -- `q`: Set an initial query or prompt for the chat (e.g., `/?q=Hello%20there`) - -### Temporary Chat Sessions - -- `temporary-chat`: Mark the chat as a temporary session by setting this parameter to `true` (e.g., `/?temporary-chat=true`) - - *Note: Document processing is frontend-only in temporary chats. Complex files requiring backend parsing may not work.* - -See https://docs.openwebui.com/features/chat-features/url-params for more info on URL parameters and how to use them. - -## Additional about:config Settings - -The following `about:config` settings can be adjusted for further customization: - -- `browser.ml.chat.shortcuts`: Enable custom shortcuts for the AI chatbot sidebar -- `browser.ml.chat.shortcuts.custom`: Enable custom shortcut keys for the AI chatbot sidebar -- `browser.ml.chat.shortcuts.longPress`: Set the long press delay for shortcut keys -- `browser.ml.chat.sidebar`: Enable the AI chatbot sidebar -- `browser.ml.checkForMemory`: Check for available memory before loading models -- `browser.ml.defaultModelMemoryUsage`: Set the default memory usage for models -- `browser.ml.enable`: Enable the machine learning features in Firefox -- `browser.ml.logLevel`: Set the log level for machine learning features -- `browser.ml.maximumMemoryPressure`: Set the maximum memory pressure threshold -- `browser.ml.minimumPhysicalMemory`: Set the minimum physical memory required -- `browser.ml.modelCacheMaxSize`: Set the maximum size of the model cache -- `browser.ml.modelCacheTimeout`: Set the timeout for model cache -- `browser.ml.modelHubRootUrl`: Set the root URL for the model hub -- `browser.ml.modelHubUrlTemplate`: Set the URL template for the model hub -- `browser.ml.queueWaitInterval`: Set the interval for queue wait -- `browser.ml.queueWaitTimeout`: Set the timeout for queue wait - -## Accessing the AI Chatbot Sidebar - -To access the AI chatbot sidebar, use one of the following methods: - -- Press `CTRL+B` to open the bookmarks sidebar and switch to AI Chatbot -- Press `CTRL+Alt+X` to open the AI chatbot sidebar directly +--- +sidebar_position: 4100 +title: "Firefox AI Chatbot Sidebar" +--- + +:::warning + +This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial. + +::: + +## 🦊 Firefox AI Chatbot Sidebar + +# Integrating Open WebUI as a Local AI Chatbot Browser Assistant in Mozilla Firefox + +## Prerequisites + +Before integrating Open WebUI as a AI chatbot browser assistant in Mozilla Firefox, ensure you have: + +- Open WebUI instance URL (local or domain) +- Firefox browser installed + +## Enabling AI Chatbot in Firefox + +1. Click on the hamburger button (three horizontal lines button at the top right corner, just below the `X` button) +2. Open up Firefox settings +3. Click on the `Firefox Labs` section +4. Toggle on `AI Chatbot` + +Alternatively, you can enable AI Chatbot through the `about:config` page (described in the next section). + +## Configuring about:config Settings + +1. Type `about:config` in the Firefox address bar +2. Click `Accept the Risk and Continue` +3. Search for `browser.ml.chat.enabled` and toggle it to `true` if it's not already enabled through Firefox Labs +4. Search for `browser.ml.chat.hideLocalhost` and toggle it to `false` + +### browser.ml.chat.prompts.{#} + +To add custom prompts, follow these steps: + +1. Search for `browser.ml.chat.prompts.{#}` (replace `{#}` with a number, e.g., `0`, `1`, `2`, etc.) +2. Click the `+` button to add a new prompt +3. Enter the prompt label, value, and ID (e.g., `{"id":"My Prompt", "value": "This is my custom prompt.", "label": "My Prompt"}`) +4. Repeat the process to add more prompts as desired + +### browser.ml.chat.provider + +1. Search for `browser.ml.chat.provider` +2. Enter your Open WebUI instance URL, including any optional parameters (e.g., `https://my-open-webui-instance.com/?model=browser-productivity-assistant&temporary-chat=true&tools=jina_web_scrape`) + +## URL Parameters for Open WebUI + +The following URL parameters can be used to customize your Open WebUI instance: + +### Models and Model Selection + +- `models`: Specify multiple models (comma-separated list) for the chat session (e.g., `/?models=model1,model2`) +- `model`: Specify a single model for the chat session (e.g., `/?model=model1`) + +### YouTube Transcription + +- `youtube`: Provide a YouTube video ID to transcribe the video in the chat (e.g., `/?youtube=VIDEO_ID`) + +### Web Search + +- `web-search`: Enable web search functionality by setting this parameter to `true` (e.g., `/?web-search=true`) + +### Tool Selection + +- `tools` or `tool-ids`: Specify a comma-separated list of tool IDs to activate in the chat (e.g., `/?tools=tool1,tool2` or `/?tool-ids=tool1,tool2`) + +### Call Overlay + +- `call`: Enable a video or call overlay in the chat interface by setting this parameter to `true` (e.g., `/?call=true`) + +### Initial Query Prompt + +- `q`: Set an initial query or prompt for the chat (e.g., `/?q=Hello%20there`) + +### Temporary Chat Sessions + +- `temporary-chat`: Mark the chat as a temporary session by setting this parameter to `true` (e.g., `/?temporary-chat=true`) + - *Note: Document processing is frontend-only in temporary chats. Complex files requiring backend parsing may not work.* + +See https://docs.openwebui.com/features/chat-conversations/chat-features/url-params for more info on URL parameters and how to use them. + +## Additional about:config Settings + +The following `about:config` settings can be adjusted for further customization: + +- `browser.ml.chat.shortcuts`: Enable custom shortcuts for the AI chatbot sidebar +- `browser.ml.chat.shortcuts.custom`: Enable custom shortcut keys for the AI chatbot sidebar +- `browser.ml.chat.shortcuts.longPress`: Set the long press delay for shortcut keys +- `browser.ml.chat.sidebar`: Enable the AI chatbot sidebar +- `browser.ml.checkForMemory`: Check for available memory before loading models +- `browser.ml.defaultModelMemoryUsage`: Set the default memory usage for models +- `browser.ml.enable`: Enable the machine learning features in Firefox +- `browser.ml.logLevel`: Set the log level for machine learning features +- `browser.ml.maximumMemoryPressure`: Set the maximum memory pressure threshold +- `browser.ml.minimumPhysicalMemory`: Set the minimum physical memory required +- `browser.ml.modelCacheMaxSize`: Set the maximum size of the model cache +- `browser.ml.modelCacheTimeout`: Set the timeout for model cache +- `browser.ml.modelHubRootUrl`: Set the root URL for the model hub +- `browser.ml.modelHubUrlTemplate`: Set the URL template for the model hub +- `browser.ml.queueWaitInterval`: Set the interval for queue wait +- `browser.ml.queueWaitTimeout`: Set the timeout for queue wait + +## Accessing the AI Chatbot Sidebar + +To access the AI chatbot sidebar, use one of the following methods: + +- Press `CTRL+B` to open the bookmarks sidebar and switch to AI Chatbot +- Press `CTRL+Alt+X` to open the AI chatbot sidebar directly diff --git a/docs/tutorials/integrations/iterm2.md b/docs/tutorials/integrations/dev-tools/iterm2.md similarity index 92% rename from docs/tutorials/integrations/iterm2.md rename to docs/tutorials/integrations/dev-tools/iterm2.md index 55e94854e6..6355e6f42b 100644 --- a/docs/tutorials/integrations/iterm2.md +++ b/docs/tutorials/integrations/dev-tools/iterm2.md @@ -18,7 +18,7 @@ Whenever you forget a command or need a quick bash script for a repetitive task, ## Why connect to your Open WebUI instance? -Open WebUI provides a simple and straightforward way to interact with your LLMs via its [API Endpoints](/getting-started/api-endpoints). This is particularly beneficial if you are running your own LLMs locally. Furthermore, you can leverage all your implemented features, monitoring, and other capabilities. +Open WebUI provides a simple and straightforward way to interact with your LLMs via its [API Endpoints](/reference/api-endpoints). This is particularly beneficial if you are running your own LLMs locally. Furthermore, you can leverage all your implemented features, monitoring, and other capabilities. ## Prerequisites @@ -30,7 +30,7 @@ Unzip the file and move the application into your **Applications** folder. ### 2. Generate your Open WebUI API key To authenticate with your Open WebUI instance, you'll need to generate an API key. -Follow the instructions in [this guide](https://docs.openwebui.com/getting-started/advanced-topics/monitoring#authentication-setup-for-api-key-) to create it. +Follow the instructions in [this guide](https://docs.openwebui.com/reference/monitoring#authentication-setup-for-api-key-) to create it. ## Configuration @@ -92,7 +92,7 @@ Set your preferred amount of tokens here. Typically, your inference tool will al This is a crucial step: you need to direct the iTerm2 AI plugin requests to your Open WebUI instance. Either use an actual domain name if the instance is hosted somewhere (e.g., `https://example.com/api/chat/completions`) or your localhost setup (e.g., `http://localhost:8080/api/chat/completions`). -You can find more information about the URLs in the [API Endpoints guide](/getting-started/api-endpoints). +You can find more information about the URLs in the [API Endpoints guide](/reference/api-endpoints). --- diff --git a/docs/tutorials/integrations/jupyter.md b/docs/tutorials/integrations/dev-tools/jupyter.md similarity index 100% rename from docs/tutorials/integrations/jupyter.md rename to docs/tutorials/integrations/dev-tools/jupyter.md diff --git a/docs/tutorials/integrations/llm-providers/_category_.json b/docs/tutorials/integrations/llm-providers/_category_.json new file mode 100644 index 0000000000..7ffcf70685 --- /dev/null +++ b/docs/tutorials/integrations/llm-providers/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "LLM Providers", + "position": 1, + "collapsible": true, + "collapsed": true +} diff --git a/docs/tutorials/integrations/amazon-bedrock.md b/docs/tutorials/integrations/llm-providers/amazon-bedrock.md similarity index 100% rename from docs/tutorials/integrations/amazon-bedrock.md rename to docs/tutorials/integrations/llm-providers/amazon-bedrock.md diff --git a/docs/tutorials/integrations/azure-openai/azure-cli-auth.mdx b/docs/tutorials/integrations/llm-providers/azure-openai/azure-cli-auth.mdx similarity index 100% rename from docs/tutorials/integrations/azure-openai/azure-cli-auth.mdx rename to docs/tutorials/integrations/llm-providers/azure-openai/azure-cli-auth.mdx diff --git a/docs/tutorials/integrations/azure-openai/index.mdx b/docs/tutorials/integrations/llm-providers/azure-openai/index.mdx similarity index 100% rename from docs/tutorials/integrations/azure-openai/index.mdx rename to docs/tutorials/integrations/llm-providers/azure-openai/index.mdx diff --git a/docs/tutorials/integrations/azure-openai/workload-identity-auth.mdx b/docs/tutorials/integrations/llm-providers/azure-openai/workload-identity-auth.mdx similarity index 100% rename from docs/tutorials/integrations/azure-openai/workload-identity-auth.mdx rename to docs/tutorials/integrations/llm-providers/azure-openai/workload-identity-auth.mdx diff --git a/docs/tutorials/integrations/deepseekr1-dynamic.md b/docs/tutorials/integrations/llm-providers/deepseekr1-dynamic.md similarity index 99% rename from docs/tutorials/integrations/deepseekr1-dynamic.md rename to docs/tutorials/integrations/llm-providers/deepseekr1-dynamic.md index 8666a327e1..2f83a3da1b 100644 --- a/docs/tutorials/integrations/deepseekr1-dynamic.md +++ b/docs/tutorials/integrations/llm-providers/deepseekr1-dynamic.md @@ -1,6 +1,6 @@ --- sidebar_position: 1 -title: "Run DeepSeek R1 Dynamic 1.58-bit with Llama.cpp" +title: "DeepSeek R1 Dynamic" --- A huge shoutout to **UnslothAI** for their incredible efforts! Thanks to their hard work, we can now run the **full DeepSeek-R1** 671B parameter model in its dynamic 1.58-bit quantized form (compressed to just 131GB) on **Llama.cpp**! And the best part? You no longer have to despair about needing massive enterprise-class GPUs or servers — it’s possible to run this model on your personal machine (albeit slowly for most consumer hardware). diff --git a/docs/tutorials/integrations/ipex_llm.md b/docs/tutorials/integrations/llm-providers/ipex_llm.md similarity index 96% rename from docs/tutorials/integrations/ipex_llm.md rename to docs/tutorials/integrations/llm-providers/ipex_llm.md index 52e7a7a3df..cdfd697510 100644 --- a/docs/tutorials/integrations/ipex_llm.md +++ b/docs/tutorials/integrations/llm-providers/ipex_llm.md @@ -1,6 +1,6 @@ --- sidebar_position: 11 -title: "Local LLM Setup with IPEX-LLM on Intel GPU" +title: "IPEX-LLM (Intel GPU)" --- :::warning @@ -11,7 +11,7 @@ This tutorial is a community contribution and is not supported by the Open WebUI :::note -This guide is verified with Open WebUI setup through [Manual Installation](../../getting-started/index.md). +This guide is verified with Open WebUI setup through [Manual Installation](/getting-started/). ::: diff --git a/docs/tutorials/integrations/minimax.md b/docs/tutorials/integrations/llm-providers/minimax.md similarity index 100% rename from docs/tutorials/integrations/minimax.md rename to docs/tutorials/integrations/llm-providers/minimax.md diff --git a/docs/tutorials/integrations/monitoring/_category_.json b/docs/tutorials/integrations/monitoring/_category_.json new file mode 100644 index 0000000000..1acd5a1379 --- /dev/null +++ b/docs/tutorials/integrations/monitoring/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Monitoring", + "position": 3, + "collapsible": true, + "collapsed": true +} diff --git a/docs/tutorials/integrations/helicone.md b/docs/tutorials/integrations/monitoring/helicone.md similarity index 98% rename from docs/tutorials/integrations/helicone.md rename to docs/tutorials/integrations/monitoring/helicone.md index 3f3125fa82..5fd77297e9 100644 --- a/docs/tutorials/integrations/helicone.md +++ b/docs/tutorials/integrations/monitoring/helicone.md @@ -1,5 +1,5 @@ --- -title: "Monitor your LLM requests with Helicone" +title: "Helicone" sidebar_position: 19 --- diff --git a/docs/tutorials/integrations/langfuse.md b/docs/tutorials/integrations/monitoring/langfuse.md similarity index 98% rename from docs/tutorials/integrations/langfuse.md rename to docs/tutorials/integrations/monitoring/langfuse.md index 9754716510..0bd92e4354 100644 --- a/docs/tutorials/integrations/langfuse.md +++ b/docs/tutorials/integrations/monitoring/langfuse.md @@ -1,6 +1,6 @@ --- sidebar_position: 20 -title: "Monitoring and Debugging with Langfuse" +title: "Langfuse" --- ## Langfuse Integration with Open WebUI diff --git a/docs/tutorials/integrations/onedrive-sharepoint.mdx b/docs/tutorials/integrations/onedrive-sharepoint.mdx index 0433ad8727..8ecfcfc441 100644 --- a/docs/tutorials/integrations/onedrive-sharepoint.mdx +++ b/docs/tutorials/integrations/onedrive-sharepoint.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 32 -title: "Integrate with OneDrive & SharePoint" +title: "OneDrive & SharePoint" --- :::info diff --git a/docs/tutorials/integrations/redis.md b/docs/tutorials/integrations/redis.md index 7bdde6268a..afd199aa27 100644 --- a/docs/tutorials/integrations/redis.md +++ b/docs/tutorials/integrations/redis.md @@ -625,7 +625,7 @@ REDIS_KEY_PREFIX="openwebui-dev" - [Redis Documentation](https://redis.io/docs) - [Valkey Documentation](https://valkey.io/docs/) - [Docker Compose Documentation](https://docs.docker.com/compose/overview/) -- [Open WebUI Environment Variables](https://docs.openwebui.com/getting-started/env-configuration/) +- [Open WebUI Environment Variables](https://docs.openwebui.com/reference/env-configuration/) - [sysctl Documentation](https://man7.org/linux/man-pages/man8/sysctl.8.html) ### Getting Help diff --git a/docs/tutorials/maintenance/_category_.json b/docs/tutorials/maintenance/_category_.json index 53e8c37ec6..b1d37c6aae 100644 --- a/docs/tutorials/maintenance/_category_.json +++ b/docs/tutorials/maintenance/_category_.json @@ -1,6 +1,6 @@ { "label": "Maintenance", - "position": 5, + "position": 30, "link": { "type": "generated-index" } diff --git a/docs/tutorials/maintenance/database.mdx b/docs/tutorials/maintenance/database.mdx index 598c365655..0bdaa01511 100644 --- a/docs/tutorials/maintenance/database.mdx +++ b/docs/tutorials/maintenance/database.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 310 -title: "Exporting and Importing Database" +title: "Exporting & Importing DB" --- :::warning diff --git a/docs/tutorials/offline-mode.mdx b/docs/tutorials/maintenance/offline-mode.mdx similarity index 87% rename from docs/tutorials/offline-mode.mdx rename to docs/tutorials/maintenance/offline-mode.mdx index 0e30dae8dd..b3a4a8fefc 100644 --- a/docs/tutorials/offline-mode.mdx +++ b/docs/tutorials/maintenance/offline-mode.mdx @@ -9,7 +9,7 @@ import { TopBanners } from "@site/src/components/TopBanners"; :::warning -This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the [contributing tutorial](../contributing.mdx). +This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the [contributing tutorial](/contributing). ::: @@ -77,7 +77,7 @@ Consider if you need to start the application offline from the beginning of your ### I: Speech-To-Text -The local `whisper` installation does not include the model by default. In this regard, you can follow the [guide](/features/audio/speech-to-text/stt-config.md) only partially if you want to use an external model/provider. To use the local `whisper` application, you must first download the model of your choice (e.g. [Huggingface - Systran](https://huggingface.co/Systran)). +The local `whisper` installation does not include the model by default. In this regard, you can follow the [guide](/features/media-generation/audio/speech-to-text/stt-config) only partially if you want to use an external model/provider. To use the local `whisper` application, you must first download the model of your choice (e.g. [Huggingface - Systran](https://huggingface.co/Systran)). ```python from faster_whisper import WhisperModel @@ -92,7 +92,7 @@ faster_whisper_kwargs = { WhisperModel(**faster_whisper_kwargs) ``` -The contents of the download directory must be copied to `/app/backend/data/cache/whisper/models/` within your Open WebUI deployment. It makes sense to directly declare your `whisper` model via the [environment variable](https://docs.openwebui.com/getting-started/env-configuration#whisper_model), like this: `WHISPER_MODEL=Systran/faster-whisper-large-v3`. +The contents of the download directory must be copied to `/app/backend/data/cache/whisper/models/` within your Open WebUI deployment. It makes sense to directly declare your `whisper` model via the [environment variable](https://docs.openwebui.com/reference/env-configuration#whisper_model), like this: `WHISPER_MODEL=Systran/faster-whisper-large-v3`. ### I: Text-To-Speech @@ -100,7 +100,7 @@ The default local transformer can already handle the text-to-speech function. If ### I: Embedding Model -For various purposes, you will need an embedding model (e.g. [RAG](/features/rag)). You will first have to download such a model of your choice (e.g. [Huggingface - sentence-transformers](https://huggingface.co/sentence-transformers)). +For various purposes, you will need an embedding model (e.g. [RAG](/features/chat-conversations/rag)). You will first have to download such a model of your choice (e.g. [Huggingface - sentence-transformers](https://huggingface.co/sentence-transformers)). ```python from huggingface_hub import snapshot_download @@ -108,7 +108,7 @@ from huggingface_hub import snapshot_download snapshot_download(repo_id="sentence-transformers/all-MiniLM-L6-v2", cache_dir="/path/of/your/choice") ``` -The contents of the download directory must be copied to `/app/backend/data/cache/embedding/models/` within your Open WebUI deployment. It makes sense to directly declare your embedding model via the [environment variable](https://docs.openwebui.com/getting-started/env-configuration#rag_embedding_model), like this: `RAG_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2`. +The contents of the download directory must be copied to `/app/backend/data/cache/embedding/models/` within your Open WebUI deployment. It makes sense to directly declare your embedding model via the [environment variable](https://docs.openwebui.com/reference/env-configuration#rag_embedding_model), like this: `RAG_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2`. ## Approach II diff --git a/docs/tutorials/maintenance/s3-storage.md b/docs/tutorials/maintenance/s3-storage.md index ad5844ec6f..d79a0b7d2c 100644 --- a/docs/tutorials/maintenance/s3-storage.md +++ b/docs/tutorials/maintenance/s3-storage.md @@ -52,7 +52,7 @@ In order to configure this option, you need to gather the following environment For a complete list of the available S3 endpoint URLs, see: [Amazon S3 Regular Endpoints](https://docs.aws.amazon.com/general/latest/gr/s3.html) -See all the `Cloud Storage` configuration options in the [Open-WebUI Cloud Storage Config](https://docs.openwebui.com/getting-started/env-configuration#cloud-storage) documentation. +See all the `Cloud Storage` configuration options in the [Open-WebUI Cloud Storage Config](https://docs.openwebui.com/reference/env-configuration#cloud-storage) documentation. ## 2. Run Open-WebUI diff --git a/docs/tutorials/tips/_category_.json b/docs/tutorials/tips/_category_.json index 9189b71228..51d9d4c60b 100644 --- a/docs/tutorials/tips/_category_.json +++ b/docs/tutorials/tips/_category_.json @@ -1,6 +1,6 @@ { "label": "Tips & Tricks", - "position": 0, + "position": 50, "link": { "type": "generated-index" } diff --git a/docs/tutorials/tips/one-click-ollama-launcher.mdx b/docs/tutorials/tips/one-click-ollama-launcher.mdx index 9dfccde9fd..4a2de17a3c 100644 --- a/docs/tutorials/tips/one-click-ollama-launcher.mdx +++ b/docs/tutorials/tips/one-click-ollama-launcher.mdx @@ -1,6 +1,6 @@ --- sidebar_position: 21 -title: "One-Click Ollama + Open WebUI Launcher" +title: "Ollama Launcher" --- :::warning diff --git a/docs/tutorials/tips/rag-tutorial.md b/docs/tutorials/tips/rag-tutorial.md index ebb119aa18..2264446e98 100644 --- a/docs/tutorials/tips/rag-tutorial.md +++ b/docs/tutorials/tips/rag-tutorial.md @@ -1,6 +1,6 @@ --- sidebar_position: 3 -title: "Open WebUI RAG Tutorial" +title: "RAG Tutorial" --- :::warning diff --git a/docs/tutorials/tips/sqlite-database.md b/docs/tutorials/tips/sqlite-database.md index 5795a78211..818bd17453 100644 --- a/docs/tutorials/tips/sqlite-database.md +++ b/docs/tutorials/tips/sqlite-database.md @@ -1,6 +1,6 @@ --- sidebar_position: 11 -title: "SQLite Database Overview" +title: "Database Schema" --- :::warning @@ -553,6 +553,33 @@ Things to know about the tag table: | settings | JSON | nullable | User preferences | | info | JSON | nullable | Additional user info | | oauth_sub | Text | UNIQUE | OAuth subject identifier | +| scim | JSON | nullable | SCIM provisioning data | + +Things to know about the user table: + +- Uses UUID for primary key +- One-to-One relationship with `auth` table (shared id) +- One-to-One relationship with `oauth_session` table (via `user_id` foreign key) + +The `scim` field's expected structure: + +```python +{ + "": { + "external_id": string, # externalId from the identity provider + }, + # Multiple providers can be stored simultaneously + # Example: + # "microsoft": { "external_id": "abc-123" }, + # "okta": { "external_id": "def-456" } +} +``` + +**Why this column was added:** + +- **SCIM account linking**: Stores per-provider `externalId` values from SCIM provisioning, enabling identity providers (like Azure AD, Okta) to match users by their external identifiers rather than relying solely on email. +- **Multi-provider support**: The per-provider key structure allows a single user to be provisioned from multiple identity providers simultaneously, each storing their own `externalId`. +- **OAuth fallback**: When looking up a user by `externalId`, the system falls back to matching against `oauth_sub` if no `scim` entry is found, enabling seamless linking of SCIM-provisioned and OAuth-authenticated accounts. ## Entity Relationship Diagram @@ -604,6 +631,7 @@ erDiagram json settings json info text oauth_sub + json scim } auth { @@ -867,5 +895,5 @@ To use SQLCipher with existing data, you must either: | `DATABASE_POOL_TIMEOUT` | `30` | Pool connection timeout in seconds | | `DATABASE_POOL_RECYCLE` | `3600` | Pool connection recycle time in seconds | -For more details, see the [Environment Variable Configuration](/getting-started/env-configuration) documentation. +For more details, see the [Environment Variable Configuration](/reference/env-configuration) documentation. diff --git a/sidebars.ts b/sidebars.ts index 16103e5823..0ee09bde36 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -14,26 +14,6 @@ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; const sidebars: SidebarsConfig = { // By default, Docusaurus generates a sidebar from the docs folder structure tutorialSidebar: [{ type: "autogenerated", dirName: "." }], - - // pipelines: [ - // { - // type: "autogenerated", - // dirName: "pipelines", - // }, - // ], - - // But you can create a sidebar manually - /* - tutorialSidebar: [ - 'intro', - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], - */ }; export default sidebars;