diff --git a/docs/features/access-security/_category_.json b/docs/features/access-security/_category_.json new file mode 100644 index 00000000..652816f5 --- /dev/null +++ b/docs/features/access-security/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "🔐 Admin & Security", + "position": 10, + "collapsible": true, + "collapsed": true +} \ No newline at end of file diff --git a/docs/features/analytics/index.mdx b/docs/features/access-security/analytics/index.mdx similarity index 97% rename from docs/features/analytics/index.mdx rename to docs/features/access-security/analytics/index.mdx index 3a23fad9..076a6c44 100644 --- a/docs/features/analytics/index.mdx +++ b/docs/features/access-security/analytics/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/analytics/ sidebar_position: 1050 title: "Analytics" --- @@ -231,7 +232,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/evaluation/) for quality insights ### 3. Cost Management @@ -402,6 +403,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/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/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 99% rename from docs/features/auth/ldap.mdx rename to docs/features/access-security/auth/ldap.mdx index c0dbd407..592c3958 100644 --- a/docs/features/auth/ldap.mdx +++ b/docs/features/access-security/auth/ldap.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/auth/ldap sidebar_position: 2 title: "LDAP Authentication" --- diff --git a/docs/features/auth/scim.mdx b/docs/features/access-security/auth/scim.mdx similarity index 99% rename from docs/features/auth/scim.mdx rename to docs/features/access-security/auth/scim.mdx index 0f04dae7..c13d5191 100644 --- a/docs/features/auth/scim.mdx +++ b/docs/features/access-security/auth/scim.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/auth/scim sidebar_position: 3 title: "SCIM 2.0" --- diff --git a/docs/features/auth/sso/index.mdx b/docs/features/access-security/auth/sso/index.mdx similarity index 99% rename from docs/features/auth/sso/index.mdx rename to docs/features/access-security/auth/sso/index.mdx index ade613f6..ee667d3f 100644 --- a/docs/features/auth/sso/index.mdx +++ b/docs/features/access-security/auth/sso/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/auth/sso/ sidebar_position: 1 title: "SSO (OAuth, OIDC, Trusted Header)" --- diff --git a/docs/features/auth/sso/keycloak.mdx b/docs/features/access-security/auth/sso/keycloak.mdx similarity index 99% rename from docs/features/auth/sso/keycloak.mdx rename to docs/features/access-security/auth/sso/keycloak.mdx index a3d1e761..c7fcc866 100644 --- a/docs/features/auth/sso/keycloak.mdx +++ b/docs/features/access-security/auth/sso/keycloak.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/auth/sso/keycloak title: "Keycloak" --- diff --git a/docs/features/evaluation/index.mdx b/docs/features/access-security/evaluation/index.mdx similarity index 99% rename from docs/features/evaluation/index.mdx rename to docs/features/access-security/evaluation/index.mdx index 88fcea23..027cb1a6 100644 --- a/docs/features/evaluation/index.mdx +++ b/docs/features/access-security/evaluation/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/evaluation/ sidebar_position: 1100 title: "Evaluation" --- 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 97% rename from docs/features/interface/banners.md rename to docs/features/access-security/interface/banners.md index 2ce4e403..3a4f0f04 100644 --- a/docs/features/interface/banners.md +++ b/docs/features/access-security/interface/banners.md @@ -1,77 +1,78 @@ ---- -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. +--- +slug: /features/interface/banners +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 97% rename from docs/features/interface/webhooks.md rename to docs/features/access-security/interface/webhooks.md index b58e2eb0..55323e6c 100644 --- a/docs/features/interface/webhooks.md +++ b/docs/features/access-security/interface/webhooks.md @@ -1,247 +1,248 @@ ---- -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. - -::: +--- +slug: /features/interface/webhooks +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. + +::: diff --git a/docs/features/rbac/groups.md b/docs/features/access-security/rbac/groups.md similarity index 99% rename from docs/features/rbac/groups.md rename to docs/features/access-security/rbac/groups.md index 2f6ae72a..c0529f0a 100644 --- a/docs/features/rbac/groups.md +++ b/docs/features/access-security/rbac/groups.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rbac/groups sidebar_position: 3 title: "Groups" --- diff --git a/docs/features/rbac/index.mdx b/docs/features/access-security/rbac/index.mdx similarity index 98% rename from docs/features/rbac/index.mdx rename to docs/features/access-security/rbac/index.mdx index b06d7e41..7d64e33e 100644 --- a/docs/features/rbac/index.mdx +++ b/docs/features/access-security/rbac/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rbac/ sidebar_position: 100 title: "Role-Based Access Control (RBAC)" --- 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 5bde3c3f..24a3abca 100644 --- a/docs/features/rbac/permissions.md +++ b/docs/features/access-security/rbac/permissions.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rbac/permissions sidebar_position: 3 title: "Permissions" --- @@ -148,4 +149,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](/getting-started/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 97% rename from docs/features/rbac/roles.md rename to docs/features/access-security/rbac/roles.md index d2f646c3..a154941c 100644 --- a/docs/features/rbac/roles.md +++ b/docs/features/access-security/rbac/roles.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rbac/roles sidebar_position: 3 title: "Roles" --- @@ -24,7 +25,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 +159,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](/getting-started/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 00000000..61250596 --- /dev/null +++ b/docs/features/ai-knowledge/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "🧠 Workspace", + "position": 30, + "collapsible": true, + "collapsed": true +} \ No newline at end of file diff --git a/docs/features/channels/index.md b/docs/features/ai-knowledge/channels/index.md similarity index 99% rename from docs/features/channels/index.md rename to docs/features/ai-knowledge/channels/index.md index 63cf63e1..597a2922 100644 --- a/docs/features/channels/index.md +++ b/docs/features/ai-knowledge/channels/index.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/channels/ sidebar_position: 1000 title: "Channels" --- diff --git a/docs/features/workspace/knowledge.md b/docs/features/ai-knowledge/knowledge.md similarity index 99% rename from docs/features/workspace/knowledge.md rename to docs/features/ai-knowledge/knowledge.md index 78793870..c9f4ab13 100644 --- a/docs/features/workspace/knowledge.md +++ b/docs/features/ai-knowledge/knowledge.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/workspace/knowledge sidebar_position: 4 title: "Knowledge" --- diff --git a/docs/features/workspace/models.md b/docs/features/ai-knowledge/models.md similarity index 93% rename from docs/features/workspace/models.md rename to docs/features/ai-knowledge/models.md index e41bd548..2f44f059 100644 --- a/docs/features/workspace/models.md +++ b/docs/features/ai-knowledge/models.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/workspace/models sidebar_position: 2 title: "Models" sidebar_label: "Models" @@ -81,13 +82,13 @@ You can transform a generic model into a specialized agent by toggling specific - **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/rag#file-context-vs-builtin-tools) for details. + - **Code Interpreter**: Enable Python code execution. See [Python Code Execution](/features/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/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/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/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 94% rename from docs/features/notes.md rename to docs/features/ai-knowledge/notes.md index 88ec453a..e17b1511 100644 --- a/docs/features/notes.md +++ b/docs/features/ai-knowledge/notes.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/notes sidebar_position: 1300 title: "Notes" --- @@ -98,6 +99,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](/getting-started/env-configuration#bypass_admin_access_control) for details. +::: + ### Download You can export your notes in standard formats: 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 00ca1241..48c7cc26 100644 --- a/docs/features/workspace/prompts.md +++ b/docs/features/ai-knowledge/prompts.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/workspace/prompts sidebar_position: 3 title: "Prompts" --- diff --git a/docs/features/workspace/skills.md b/docs/features/ai-knowledge/skills.md similarity index 99% rename from docs/features/workspace/skills.md rename to docs/features/ai-knowledge/skills.md index 7f7a10de..a9cddc73 100644 --- a/docs/features/workspace/skills.md +++ b/docs/features/ai-knowledge/skills.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/workspace/skills sidebar_position: 6 title: "Skills" sidebar_label: "Skills" diff --git a/docs/features/chat-conversations/_category_.json b/docs/features/chat-conversations/_category_.json new file mode 100644 index 00000000..a5a5147c --- /dev/null +++ b/docs/features/chat-conversations/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "💬 Chat & Conversations", + "position": 20, + "collapsible": true, + "collapsed": true +} \ No newline at end of file diff --git a/docs/features/chat-features/autocomplete.md b/docs/features/chat-conversations/chat-features/autocomplete.md similarity index 98% rename from docs/features/chat-features/autocomplete.md rename to docs/features/chat-conversations/chat-features/autocomplete.md index bcf1da52..bed83da4 100644 --- a/docs/features/chat-features/autocomplete.md +++ b/docs/features/chat-conversations/chat-features/autocomplete.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/autocomplete sidebar_position: 5 title: "Autocomplete" --- diff --git a/docs/features/chat-features/chat-params.md b/docs/features/chat-conversations/chat-features/chat-params.md similarity index 99% rename from docs/features/chat-features/chat-params.md rename to docs/features/chat-conversations/chat-features/chat-params.md index e0ce7b41..85409f3c 100644 --- a/docs/features/chat-features/chat-params.md +++ b/docs/features/chat-conversations/chat-features/chat-params.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/chat-params sidebar_position: 6 title: "Chat Parameters" --- diff --git a/docs/features/chat-features/chatshare.md b/docs/features/chat-conversations/chat-features/chatshare.md similarity index 99% rename from docs/features/chat-features/chatshare.md rename to docs/features/chat-conversations/chat-features/chatshare.md index e20bf03b..57abc643 100644 --- a/docs/features/chat-features/chatshare.md +++ b/docs/features/chat-conversations/chat-features/chatshare.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/chatshare sidebar_position: 3 title: "Chat Sharing" --- diff --git a/docs/features/chat-features/code-execution/artifacts.md b/docs/features/chat-conversations/chat-features/code-execution/artifacts.md similarity index 99% rename from docs/features/chat-features/code-execution/artifacts.md rename to docs/features/chat-conversations/chat-features/code-execution/artifacts.md index 5d2bcd2f..758733d0 100644 --- a/docs/features/chat-features/code-execution/artifacts.md +++ b/docs/features/chat-conversations/chat-features/code-execution/artifacts.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/code-execution/artifacts sidebar_position: 2 title: "Artifacts" --- diff --git a/docs/features/chat-features/code-execution/index.md b/docs/features/chat-conversations/chat-features/code-execution/index.md similarity index 99% rename from docs/features/chat-features/code-execution/index.md rename to docs/features/chat-conversations/chat-features/code-execution/index.md index 7854587b..641c266c 100644 --- a/docs/features/chat-features/code-execution/index.md +++ b/docs/features/chat-conversations/chat-features/code-execution/index.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/code-execution/ sidebar_position: 1 title: "Code Execution" --- diff --git a/docs/features/chat-features/code-execution/mermaid.md b/docs/features/chat-conversations/chat-features/code-execution/mermaid.md similarity index 98% rename from docs/features/chat-features/code-execution/mermaid.md rename to docs/features/chat-conversations/chat-features/code-execution/mermaid.md index 6f4de5d8..b4dfa9c2 100644 --- a/docs/features/chat-features/code-execution/mermaid.md +++ b/docs/features/chat-conversations/chat-features/code-execution/mermaid.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/code-execution/mermaid sidebar_position: 4 title: "MermaidJS Rendering" --- diff --git a/docs/features/chat-features/code-execution/python.md b/docs/features/chat-conversations/chat-features/code-execution/python.md similarity index 99% rename from docs/features/chat-features/code-execution/python.md rename to docs/features/chat-conversations/chat-features/code-execution/python.md index 4c5e97f7..4c521404 100644 --- a/docs/features/chat-features/code-execution/python.md +++ b/docs/features/chat-conversations/chat-features/code-execution/python.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/code-execution/python sidebar_position: 3 title: "Python Code Execution" --- diff --git a/docs/features/chat-features/conversation-organization.md b/docs/features/chat-conversations/chat-features/conversation-organization.md similarity index 98% rename from docs/features/chat-features/conversation-organization.md rename to docs/features/chat-conversations/chat-features/conversation-organization.md index 23fc1884..18849e81 100644 --- a/docs/features/chat-features/conversation-organization.md +++ b/docs/features/chat-conversations/chat-features/conversation-organization.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/conversation-organization sidebar_position: 4 title: "Folders & Projects" --- diff --git a/docs/features/chat-features/follow-up-prompts.md b/docs/features/chat-conversations/chat-features/follow-up-prompts.md similarity index 97% rename from docs/features/chat-features/follow-up-prompts.md rename to docs/features/chat-conversations/chat-features/follow-up-prompts.md index d2af865f..d73b8476 100644 --- a/docs/features/chat-features/follow-up-prompts.md +++ b/docs/features/chat-conversations/chat-features/follow-up-prompts.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/follow-up-prompts sidebar_position: 9 title: "Follow-Up Prompts" --- diff --git a/docs/features/chat-features/history-search.mdx b/docs/features/chat-conversations/chat-features/history-search.mdx similarity index 98% rename from docs/features/chat-features/history-search.mdx rename to docs/features/chat-conversations/chat-features/history-search.mdx index 17104eae..1232f6e4 100644 --- a/docs/features/chat-features/history-search.mdx +++ b/docs/features/chat-conversations/chat-features/history-search.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/history-search sidebar_position: 10 title: "History & Search" --- diff --git a/docs/features/chat-features/index.mdx b/docs/features/chat-conversations/chat-features/index.mdx similarity index 98% rename from docs/features/chat-features/index.mdx rename to docs/features/chat-conversations/chat-features/index.mdx index 21428972..ab777262 100644 --- a/docs/features/chat-features/index.mdx +++ b/docs/features/chat-conversations/chat-features/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/ sidebar_position: 1 title: "Chat Features" --- diff --git a/docs/features/chat-features/message-queue.mdx b/docs/features/chat-conversations/chat-features/message-queue.mdx similarity index 98% rename from docs/features/chat-features/message-queue.mdx rename to docs/features/chat-conversations/chat-features/message-queue.mdx index 93e9e356..1616cc1f 100644 --- a/docs/features/chat-features/message-queue.mdx +++ b/docs/features/chat-conversations/chat-features/message-queue.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/message-queue sidebar_position: 10 title: "Message Queue" --- diff --git a/docs/features/chat-features/multi-model-chats.mdx b/docs/features/chat-conversations/chat-features/multi-model-chats.mdx similarity index 98% rename from docs/features/chat-features/multi-model-chats.mdx rename to docs/features/chat-conversations/chat-features/multi-model-chats.mdx index 04d6d9e2..50875b5e 100644 --- a/docs/features/chat-features/multi-model-chats.mdx +++ b/docs/features/chat-conversations/chat-features/multi-model-chats.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/multi-model-chats sidebar_position: 2 title: "Multi-Model Chats" --- diff --git a/docs/features/chat-features/reasoning-models.mdx b/docs/features/chat-conversations/chat-features/reasoning-models.mdx similarity index 99% rename from docs/features/chat-features/reasoning-models.mdx rename to docs/features/chat-conversations/chat-features/reasoning-models.mdx index a39a4912..67fb3a68 100644 --- a/docs/features/chat-features/reasoning-models.mdx +++ b/docs/features/chat-conversations/chat-features/reasoning-models.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/reasoning-models sidebar_position: 10 title: "Reasoning & Thinking Models" --- diff --git a/docs/features/chat-features/temporal-awareness.mdx b/docs/features/chat-conversations/chat-features/temporal-awareness.mdx similarity index 97% rename from docs/features/chat-features/temporal-awareness.mdx rename to docs/features/chat-conversations/chat-features/temporal-awareness.mdx index ff47b2f0..e04976ce 100644 --- a/docs/features/chat-features/temporal-awareness.mdx +++ b/docs/features/chat-conversations/chat-features/temporal-awareness.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/temporal-awareness sidebar_position: 11 title: "Temporal Awareness" --- 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 f0cb2c59..3a7c26c0 100644 --- a/docs/features/chat-features/url-params.md +++ b/docs/features/chat-conversations/chat-features/url-params.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/chat-features/url-params sidebar_position: 7 title: "URL Parameters" --- @@ -25,7 +26,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/workspace/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`. diff --git a/docs/features/data-controls/archived-chats.md b/docs/features/chat-conversations/data-controls/archived-chats.md similarity index 97% rename from docs/features/data-controls/archived-chats.md rename to docs/features/chat-conversations/data-controls/archived-chats.md index 1af64bed..8c6c25a3 100644 --- a/docs/features/data-controls/archived-chats.md +++ b/docs/features/chat-conversations/data-controls/archived-chats.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/data-controls/archived-chats sidebar_position: 3 title: "📦 Archived Chats" --- diff --git a/docs/features/data-controls/files.md b/docs/features/chat-conversations/data-controls/files.md similarity index 98% rename from docs/features/data-controls/files.md rename to docs/features/chat-conversations/data-controls/files.md index b5ecbf6b..1311e0ef 100644 --- a/docs/features/data-controls/files.md +++ b/docs/features/chat-conversations/data-controls/files.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/data-controls/files sidebar_position: 5 title: "📁 File Management" --- diff --git a/docs/features/data-controls/import-export.md b/docs/features/chat-conversations/data-controls/import-export.md similarity index 97% rename from docs/features/data-controls/import-export.md rename to docs/features/chat-conversations/data-controls/import-export.md index 30f4063c..f93f9d21 100644 --- a/docs/features/data-controls/import-export.md +++ b/docs/features/chat-conversations/data-controls/import-export.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/data-controls/import-export sidebar_position: 4 title: "💾 Import & Export" --- diff --git a/docs/features/data-controls/index.mdx b/docs/features/chat-conversations/data-controls/index.mdx similarity index 94% rename from docs/features/data-controls/index.mdx rename to docs/features/chat-conversations/data-controls/index.mdx index ab737fb5..c2b6b469 100644 --- a/docs/features/data-controls/index.mdx +++ b/docs/features/chat-conversations/data-controls/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/data-controls/ sidebar_position: 15 title: "Data Controls" --- diff --git a/docs/features/data-controls/shared-chats.md b/docs/features/chat-conversations/data-controls/shared-chats.md similarity index 97% rename from docs/features/data-controls/shared-chats.md rename to docs/features/chat-conversations/data-controls/shared-chats.md index 3382beff..ab62083b 100644 --- a/docs/features/data-controls/shared-chats.md +++ b/docs/features/chat-conversations/data-controls/shared-chats.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/data-controls/shared-chats sidebar_position: 2 title: "🔗 Shared Chats" --- diff --git a/docs/features/experimental/direct-connections.mdx b/docs/features/chat-conversations/direct-connections.mdx similarity index 92% rename from docs/features/experimental/direct-connections.mdx rename to docs/features/chat-conversations/direct-connections.mdx index 7e28993a..2b8be63f 100644 --- a/docs/features/experimental/direct-connections.mdx +++ b/docs/features/chat-conversations/direct-connections.mdx @@ -1,8 +1,13 @@ ---- +--- +slug: /features/experimental/direct-connections 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 99% rename from docs/features/memory.mdx rename to docs/features/chat-conversations/memory.mdx index d34bafe1..dbf43d69 100644 --- a/docs/features/memory.mdx +++ b/docs/features/chat-conversations/memory.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/memory sidebar_position: 700 title: "Memory & Personalization" --- diff --git a/docs/features/rag/document-extraction/apachetika.md b/docs/features/chat-conversations/rag/document-extraction/apachetika.md similarity index 99% rename from docs/features/rag/document-extraction/apachetika.md rename to docs/features/chat-conversations/rag/document-extraction/apachetika.md index 24039f74..57fde3a3 100644 --- a/docs/features/rag/document-extraction/apachetika.md +++ b/docs/features/chat-conversations/rag/document-extraction/apachetika.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rag/document-extraction/apachetika sidebar_position: 2 title: "Apache Tika Extraction" --- diff --git a/docs/features/rag/document-extraction/docling.md b/docs/features/chat-conversations/rag/document-extraction/docling.md similarity index 99% rename from docs/features/rag/document-extraction/docling.md rename to docs/features/chat-conversations/rag/document-extraction/docling.md index 014aa9a3..26714d6b 100644 --- a/docs/features/rag/document-extraction/docling.md +++ b/docs/features/chat-conversations/rag/document-extraction/docling.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rag/document-extraction/docling sidebar_position: 3 title: "Docling Document Extraction" --- diff --git a/docs/features/rag/document-extraction/index.md b/docs/features/chat-conversations/rag/document-extraction/index.md similarity index 97% rename from docs/features/rag/document-extraction/index.md rename to docs/features/chat-conversations/rag/document-extraction/index.md index 74e5e15a..7b528e46 100644 --- a/docs/features/rag/document-extraction/index.md +++ b/docs/features/chat-conversations/rag/document-extraction/index.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rag/document-extraction/ sidebar_position: 1 title: "Document Extraction" --- diff --git a/docs/features/rag/document-extraction/mistral-ocr.md b/docs/features/chat-conversations/rag/document-extraction/mistral-ocr.md similarity index 97% rename from docs/features/rag/document-extraction/mistral-ocr.md rename to docs/features/chat-conversations/rag/document-extraction/mistral-ocr.md index b5d5cdcf..1ed110f8 100644 --- a/docs/features/rag/document-extraction/mistral-ocr.md +++ b/docs/features/chat-conversations/rag/document-extraction/mistral-ocr.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rag/document-extraction/mistral-ocr sidebar_position: 4 title: "Mistral OCR" --- diff --git a/docs/features/rag/index.md b/docs/features/chat-conversations/rag/index.md similarity index 99% rename from docs/features/rag/index.md rename to docs/features/chat-conversations/rag/index.md index ab43f138..c10b6779 100644 --- a/docs/features/rag/index.md +++ b/docs/features/chat-conversations/rag/index.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/rag/ sidebar_position: 1 title: "Retrieval Augmented Generation (RAG)" --- @@ -241,7 +242,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`](/getting-started/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 99% rename from docs/features/web-search/agentic-search.mdx rename to docs/features/chat-conversations/web-search/agentic-search.mdx index 31977e8c..b545283d 100644 --- a/docs/features/web-search/agentic-search.mdx +++ b/docs/features/chat-conversations/web-search/agentic-search.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/agentic-search sidebar_position: 1 title: "Agentic Search & URL Fetching" --- 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 00000000..e59902c0 --- /dev/null +++ b/docs/features/chat-conversations/web-search/providers/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Providers", + "position": 50, + "collapsible": true, + "collapsed": true +} \ No newline at end of file diff --git a/docs/features/web-search/bing.md b/docs/features/chat-conversations/web-search/providers/bing.md similarity index 97% rename from docs/features/web-search/bing.md rename to docs/features/chat-conversations/web-search/providers/bing.md index 76f99d30..b21638c7 100644 --- a/docs/features/web-search/bing.md +++ b/docs/features/chat-conversations/web-search/providers/bing.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/bing sidebar_position: 2 title: "Bing" --- diff --git a/docs/features/web-search/brave.md b/docs/features/chat-conversations/web-search/providers/brave.md similarity index 98% rename from docs/features/web-search/brave.md rename to docs/features/chat-conversations/web-search/providers/brave.md index 8d51bd7d..30218c3f 100644 --- a/docs/features/web-search/brave.md +++ b/docs/features/chat-conversations/web-search/providers/brave.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/brave sidebar_position: 3 title: "Brave" --- diff --git a/docs/features/web-search/ddgs.mdx b/docs/features/chat-conversations/web-search/providers/ddgs.mdx similarity index 97% rename from docs/features/web-search/ddgs.mdx rename to docs/features/chat-conversations/web-search/providers/ddgs.mdx index 8618d052..1211a101 100644 --- a/docs/features/web-search/ddgs.mdx +++ b/docs/features/chat-conversations/web-search/providers/ddgs.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/ddgs sidebar_position: 4 title: "DDGS" --- diff --git a/docs/features/web-search/exa.md b/docs/features/chat-conversations/web-search/providers/exa.md similarity index 99% rename from docs/features/web-search/exa.md rename to docs/features/chat-conversations/web-search/providers/exa.md index 9281ed93..35c533f6 100644 --- a/docs/features/web-search/exa.md +++ b/docs/features/chat-conversations/web-search/providers/exa.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/exa sidebar_position: 5 title: "Exa AI" --- diff --git a/docs/features/web-search/external.md b/docs/features/chat-conversations/web-search/providers/external.md similarity index 99% rename from docs/features/web-search/external.md rename to docs/features/chat-conversations/web-search/providers/external.md index 18c4b6a1..3c2a7c99 100644 --- a/docs/features/web-search/external.md +++ b/docs/features/chat-conversations/web-search/providers/external.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/external sidebar_position: 19 title: "External" --- diff --git a/docs/features/web-search/google-pse.md b/docs/features/chat-conversations/web-search/providers/google-pse.md similarity index 97% rename from docs/features/web-search/google-pse.md rename to docs/features/chat-conversations/web-search/providers/google-pse.md index c1a2f7bb..974714e7 100644 --- a/docs/features/web-search/google-pse.md +++ b/docs/features/chat-conversations/web-search/providers/google-pse.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/google-pse sidebar_position: 6 title: "Google PSE" --- diff --git a/docs/features/web-search/jina.md b/docs/features/chat-conversations/web-search/providers/jina.md similarity index 99% rename from docs/features/web-search/jina.md rename to docs/features/chat-conversations/web-search/providers/jina.md index 73b22552..2458efe6 100644 --- a/docs/features/web-search/jina.md +++ b/docs/features/chat-conversations/web-search/providers/jina.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/jina sidebar_position: 7 title: "Jina" --- diff --git a/docs/features/web-search/kagi.md b/docs/features/chat-conversations/web-search/providers/kagi.md similarity index 95% rename from docs/features/web-search/kagi.md rename to docs/features/chat-conversations/web-search/providers/kagi.md index 1f5c4238..002b114f 100644 --- a/docs/features/web-search/kagi.md +++ b/docs/features/chat-conversations/web-search/providers/kagi.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/kagi sidebar_position: 8 title: "Kagi" --- diff --git a/docs/features/web-search/mojeek.md b/docs/features/chat-conversations/web-search/providers/mojeek.md similarity index 97% rename from docs/features/web-search/mojeek.md rename to docs/features/chat-conversations/web-search/providers/mojeek.md index 3c9a0f5c..7b973b3a 100644 --- a/docs/features/web-search/mojeek.md +++ b/docs/features/chat-conversations/web-search/providers/mojeek.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/mojeek sidebar_position: 9 title: "Mojeek" --- diff --git a/docs/features/web-search/ollama-cloud.mdx b/docs/features/chat-conversations/web-search/providers/ollama-cloud.mdx similarity index 94% rename from docs/features/web-search/ollama-cloud.mdx rename to docs/features/chat-conversations/web-search/providers/ollama-cloud.mdx index c67a8423..92a16df3 100644 --- a/docs/features/web-search/ollama-cloud.mdx +++ b/docs/features/chat-conversations/web-search/providers/ollama-cloud.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/ollama-cloud sidebar_position: 10 title: "Ollama Cloud Web Search" --- diff --git a/docs/features/web-search/perplexity.mdx b/docs/features/chat-conversations/web-search/providers/perplexity.mdx similarity index 96% rename from docs/features/web-search/perplexity.mdx rename to docs/features/chat-conversations/web-search/providers/perplexity.mdx index f0a542b2..6ee6775c 100644 --- a/docs/features/web-search/perplexity.mdx +++ b/docs/features/chat-conversations/web-search/providers/perplexity.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/perplexity sidebar_position: 20 title: "Perplexity" --- diff --git a/docs/features/web-search/perplexity_search.mdx b/docs/features/chat-conversations/web-search/providers/perplexity_search.mdx similarity index 97% rename from docs/features/web-search/perplexity_search.mdx rename to docs/features/chat-conversations/web-search/providers/perplexity_search.mdx index bd778ce0..e9cdc2d8 100644 --- a/docs/features/web-search/perplexity_search.mdx +++ b/docs/features/chat-conversations/web-search/providers/perplexity_search.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/perplexity_search sidebar_position: 21 title: "Perplexity Search" --- diff --git a/docs/features/web-search/searchapi.md b/docs/features/chat-conversations/web-search/providers/searchapi.md similarity index 97% rename from docs/features/web-search/searchapi.md rename to docs/features/chat-conversations/web-search/providers/searchapi.md index 82fa88a7..e782e2f2 100644 --- a/docs/features/web-search/searchapi.md +++ b/docs/features/chat-conversations/web-search/providers/searchapi.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/searchapi sidebar_position: 11 title: "SearchApi" --- diff --git a/docs/features/web-search/searxng.md b/docs/features/chat-conversations/web-search/providers/searxng.md similarity index 99% rename from docs/features/web-search/searxng.md rename to docs/features/chat-conversations/web-search/providers/searxng.md index e3aeefd8..116b2826 100644 --- a/docs/features/web-search/searxng.md +++ b/docs/features/chat-conversations/web-search/providers/searxng.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/searxng sidebar_position: 12 title: "SearXNG" --- diff --git a/docs/features/web-search/serpapi.md b/docs/features/chat-conversations/web-search/providers/serpapi.md similarity index 98% rename from docs/features/web-search/serpapi.md rename to docs/features/chat-conversations/web-search/providers/serpapi.md index 7d4c19a5..5b64c8e2 100644 --- a/docs/features/web-search/serpapi.md +++ b/docs/features/chat-conversations/web-search/providers/serpapi.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/serpapi sidebar_position: 13 title: "SerpApi" --- diff --git a/docs/features/web-search/serper.md b/docs/features/chat-conversations/web-search/providers/serper.md similarity index 95% rename from docs/features/web-search/serper.md rename to docs/features/chat-conversations/web-search/providers/serper.md index 38e71f0c..c9b3b243 100644 --- a/docs/features/web-search/serper.md +++ b/docs/features/chat-conversations/web-search/providers/serper.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/serper sidebar_position: 14 title: "Serper" --- diff --git a/docs/features/web-search/serply.md b/docs/features/chat-conversations/web-search/providers/serply.md similarity index 95% rename from docs/features/web-search/serply.md rename to docs/features/chat-conversations/web-search/providers/serply.md index e15ef669..97b75abc 100644 --- a/docs/features/web-search/serply.md +++ b/docs/features/chat-conversations/web-search/providers/serply.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/serply sidebar_position: 15 title: "Serply" --- diff --git a/docs/features/web-search/serpstack.md b/docs/features/chat-conversations/web-search/providers/serpstack.md similarity index 94% rename from docs/features/web-search/serpstack.md rename to docs/features/chat-conversations/web-search/providers/serpstack.md index bc56e6a5..cee32cfa 100644 --- a/docs/features/web-search/serpstack.md +++ b/docs/features/chat-conversations/web-search/providers/serpstack.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/serpstack sidebar_position: 16 title: "Serpstack" --- diff --git a/docs/features/web-search/tavily.md b/docs/features/chat-conversations/web-search/providers/tavily.md similarity index 99% rename from docs/features/web-search/tavily.md rename to docs/features/chat-conversations/web-search/providers/tavily.md index 8853c1f2..1ec9d77e 100644 --- a/docs/features/web-search/tavily.md +++ b/docs/features/chat-conversations/web-search/providers/tavily.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/tavily sidebar_position: 17 title: "Tavily" --- diff --git a/docs/features/web-search/yacy.md b/docs/features/chat-conversations/web-search/providers/yacy.md similarity index 97% rename from docs/features/web-search/yacy.md rename to docs/features/chat-conversations/web-search/providers/yacy.md index a3bcfd8f..a3b42e71 100644 --- a/docs/features/web-search/yacy.md +++ b/docs/features/chat-conversations/web-search/providers/yacy.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/yacy sidebar_position: 18 title: "Yacy" --- diff --git a/docs/features/web-search/yandex.md b/docs/features/chat-conversations/web-search/providers/yandex.md similarity index 97% rename from docs/features/web-search/yandex.md rename to docs/features/chat-conversations/web-search/providers/yandex.md index 4dc1c9ee..1c7dcf68 100644 --- a/docs/features/web-search/yandex.md +++ b/docs/features/chat-conversations/web-search/providers/yandex.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/yandex sidebar_position: 14 title: "Yandex" --- diff --git a/docs/features/web-search/save-to-knowledge.mdx b/docs/features/chat-conversations/web-search/save-to-knowledge.mdx similarity index 98% rename from docs/features/web-search/save-to-knowledge.mdx rename to docs/features/chat-conversations/web-search/save-to-knowledge.mdx index 9319bdae..ac0bd9a6 100644 --- a/docs/features/web-search/save-to-knowledge.mdx +++ b/docs/features/chat-conversations/web-search/save-to-knowledge.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/web-search/save-to-knowledge sidebar_position: 10 title: "Save Search Results to Knowledge" --- diff --git a/docs/features/extensibility/_category_.json b/docs/features/extensibility/_category_.json new file mode 100644 index 00000000..0cf5d6f1 --- /dev/null +++ b/docs/features/extensibility/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "🔌 Plugins & Extensibility", + "position": 40, + "collapsible": true, + "collapsed": true +} \ No newline at end of file diff --git a/docs/features/mcp.mdx b/docs/features/extensibility/mcp.mdx similarity index 99% rename from docs/features/mcp.mdx rename to docs/features/extensibility/mcp.mdx index cba2b6de..ecab12df 100644 --- a/docs/features/mcp.mdx +++ b/docs/features/extensibility/mcp.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/mcp title: Model Context Protocol (MCP) sidebar_position: 1200 --- diff --git a/docs/features/open-terminal/index.md b/docs/features/extensibility/open-terminal/index.md similarity index 99% rename from docs/features/open-terminal/index.md rename to docs/features/extensibility/open-terminal/index.md index 745bc81d..643bace4 100644 --- a/docs/features/open-terminal/index.md +++ b/docs/features/extensibility/open-terminal/index.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/open-terminal/ sidebar_position: 5 title: "Open Terminal" --- 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 96% rename from docs/features/pipelines/filters.md rename to docs/features/extensibility/pipelines/filters.md index 24c197c0..8c42d876 100644 --- a/docs/features/pipelines/filters.md +++ b/docs/features/extensibility/pipelines/filters.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/pipelines/filters sidebar_position: 2 title: "Filters" --- diff --git a/docs/features/pipelines/index.mdx b/docs/features/extensibility/pipelines/index.mdx similarity index 99% rename from docs/features/pipelines/index.mdx rename to docs/features/extensibility/pipelines/index.mdx index d27376ae..aa330059 100644 --- a/docs/features/pipelines/index.mdx +++ b/docs/features/extensibility/pipelines/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/pipelines/ sidebar_position: 1 title: "Pipelines" --- diff --git a/docs/features/pipelines/pipes.md b/docs/features/extensibility/pipelines/pipes.md similarity index 96% rename from docs/features/pipelines/pipes.md rename to docs/features/extensibility/pipelines/pipes.md index 849b297b..ff504b43 100644 --- a/docs/features/pipelines/pipes.md +++ b/docs/features/extensibility/pipelines/pipes.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/pipelines/pipes sidebar_position: 3 title: "Pipes" --- diff --git a/docs/features/pipelines/tutorials.md b/docs/features/extensibility/pipelines/tutorials.md similarity index 96% rename from docs/features/pipelines/tutorials.md rename to docs/features/extensibility/pipelines/tutorials.md index 9d7302b7..dd22cb20 100644 --- a/docs/features/pipelines/tutorials.md +++ b/docs/features/extensibility/pipelines/tutorials.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/pipelines/tutorials sidebar_position: 5 title: "Tutorials" --- diff --git a/docs/features/pipelines/valves.md b/docs/features/extensibility/pipelines/valves.md similarity index 97% rename from docs/features/pipelines/valves.md rename to docs/features/extensibility/pipelines/valves.md index 05c2abbb..f8f8b6fe 100644 --- a/docs/features/pipelines/valves.md +++ b/docs/features/extensibility/pipelines/valves.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/pipelines/valves sidebar_position: 4 title: "Valves" --- 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 de3b5229..920d1252 100644 --- a/docs/features/plugin/development/events.mdx +++ b/docs/features/extensibility/plugin/development/events.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/development/events sidebar_position: 3 title: "Events" --- diff --git a/docs/features/plugin/development/reserved-args.mdx b/docs/features/extensibility/plugin/development/reserved-args.mdx similarity index 99% rename from docs/features/plugin/development/reserved-args.mdx rename to docs/features/extensibility/plugin/development/reserved-args.mdx index 133381ed..3f41aa20 100644 --- a/docs/features/plugin/development/reserved-args.mdx +++ b/docs/features/extensibility/plugin/development/reserved-args.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/development/reserved-args sidebar_position: 999 title: "Reserved Arguments" --- diff --git a/docs/features/plugin/development/rich-ui.mdx b/docs/features/extensibility/plugin/development/rich-ui.mdx similarity index 99% rename from docs/features/plugin/development/rich-ui.mdx rename to docs/features/extensibility/plugin/development/rich-ui.mdx index 719d6775..e4d11f9f 100644 --- a/docs/features/plugin/development/rich-ui.mdx +++ b/docs/features/extensibility/plugin/development/rich-ui.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/development/rich-ui sidebar_position: 4 title: "Rich UI Embedding" --- diff --git a/docs/features/plugin/development/valves.mdx b/docs/features/extensibility/plugin/development/valves.mdx similarity index 99% rename from docs/features/plugin/development/valves.mdx rename to docs/features/extensibility/plugin/development/valves.mdx index 22c3ccf1..bb6d7919 100644 --- a/docs/features/plugin/development/valves.mdx +++ b/docs/features/extensibility/plugin/development/valves.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/development/valves sidebar_position: 3 title: "Valves" --- diff --git a/docs/features/plugin/functions/action.mdx b/docs/features/extensibility/plugin/functions/action.mdx similarity index 99% rename from docs/features/plugin/functions/action.mdx rename to docs/features/extensibility/plugin/functions/action.mdx index 55cdeded..15b3dfba 100644 --- a/docs/features/plugin/functions/action.mdx +++ b/docs/features/extensibility/plugin/functions/action.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/functions/action sidebar_position: 2 title: "Action Function" --- diff --git a/docs/features/plugin/functions/filter.mdx b/docs/features/extensibility/plugin/functions/filter.mdx similarity index 99% rename from docs/features/plugin/functions/filter.mdx rename to docs/features/extensibility/plugin/functions/filter.mdx index c1815e88..72d66ce8 100644 --- a/docs/features/plugin/functions/filter.mdx +++ b/docs/features/extensibility/plugin/functions/filter.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/functions/filter sidebar_position: 3 title: "Filter Function" --- diff --git a/docs/features/plugin/functions/index.mdx b/docs/features/extensibility/plugin/functions/index.mdx similarity index 99% rename from docs/features/plugin/functions/index.mdx rename to docs/features/extensibility/plugin/functions/index.mdx index f6548f42..a3b9db56 100644 --- a/docs/features/plugin/functions/index.mdx +++ b/docs/features/extensibility/plugin/functions/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/functions/ sidebar_position: 1 title: "Functions" --- diff --git a/docs/features/plugin/functions/pipe.mdx b/docs/features/extensibility/plugin/functions/pipe.mdx similarity index 99% rename from docs/features/plugin/functions/pipe.mdx rename to docs/features/extensibility/plugin/functions/pipe.mdx index 52c573da..06650ae8 100644 --- a/docs/features/plugin/functions/pipe.mdx +++ b/docs/features/extensibility/plugin/functions/pipe.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/functions/pipe sidebar_position: 4 title: "Pipe Function" --- diff --git a/docs/features/plugin/index.mdx b/docs/features/extensibility/plugin/index.mdx similarity index 99% rename from docs/features/plugin/index.mdx rename to docs/features/extensibility/plugin/index.mdx index 20842e2d..ab4aab86 100644 --- a/docs/features/plugin/index.mdx +++ b/docs/features/extensibility/plugin/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/ sidebar_position: 300 title: "Tools & Functions (Plugins)" --- diff --git a/docs/features/plugin/migration/index.mdx b/docs/features/extensibility/plugin/migration/index.mdx similarity index 99% rename from docs/features/plugin/migration/index.mdx rename to docs/features/extensibility/plugin/migration/index.mdx index 8602a54f..123ef40d 100644 --- a/docs/features/plugin/migration/index.mdx +++ b/docs/features/extensibility/plugin/migration/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/migration/ sidebar_position: 9999 title: "Migrating Tools & Functions: 0.4 to 0.5" --- diff --git a/docs/features/plugin/tools/development.mdx b/docs/features/extensibility/plugin/tools/development.mdx similarity index 99% rename from docs/features/plugin/tools/development.mdx rename to docs/features/extensibility/plugin/tools/development.mdx index 789e4372..a966fcfc 100644 --- a/docs/features/plugin/tools/development.mdx +++ b/docs/features/extensibility/plugin/tools/development.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/tools/development sidebar_position: 2 title: "Development" --- diff --git a/docs/features/plugin/tools/index.mdx b/docs/features/extensibility/plugin/tools/index.mdx similarity index 99% rename from docs/features/plugin/tools/index.mdx rename to docs/features/extensibility/plugin/tools/index.mdx index b76a364a..1aa04c8e 100644 --- a/docs/features/plugin/tools/index.mdx +++ b/docs/features/extensibility/plugin/tools/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/tools/ sidebar_position: 1 title: "Tools" --- @@ -345,7 +346,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/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 99% rename from docs/features/plugin/tools/openapi-servers/faq.mdx rename to docs/features/extensibility/plugin/tools/openapi-servers/faq.mdx index 85e77a9f..219c4a34 100644 --- a/docs/features/plugin/tools/openapi-servers/faq.mdx +++ b/docs/features/extensibility/plugin/tools/openapi-servers/faq.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/tools/openapi-servers/faq sidebar_position: 10 title: "FAQ" --- diff --git a/docs/features/plugin/tools/openapi-servers/index.mdx b/docs/features/extensibility/plugin/tools/openapi-servers/index.mdx similarity index 98% rename from docs/features/plugin/tools/openapi-servers/index.mdx rename to docs/features/extensibility/plugin/tools/openapi-servers/index.mdx index 9ab87319..54bdca3b 100644 --- a/docs/features/plugin/tools/openapi-servers/index.mdx +++ b/docs/features/extensibility/plugin/tools/openapi-servers/index.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/tools/openapi-servers/ sidebar_position: 400 title: "OpenAPI Tool Servers" --- diff --git a/docs/features/plugin/tools/openapi-servers/mcp.mdx b/docs/features/extensibility/plugin/tools/openapi-servers/mcp.mdx similarity index 99% rename from docs/features/plugin/tools/openapi-servers/mcp.mdx rename to docs/features/extensibility/plugin/tools/openapi-servers/mcp.mdx index c5174392..d0204dad 100644 --- a/docs/features/plugin/tools/openapi-servers/mcp.mdx +++ b/docs/features/extensibility/plugin/tools/openapi-servers/mcp.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/tools/openapi-servers/mcp sidebar_position: 3 title: "MCP Support" --- 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 99% rename from docs/features/plugin/tools/openapi-servers/open-webui.mdx rename to docs/features/extensibility/plugin/tools/openapi-servers/open-webui.mdx index cc9861c1..489ee77a 100644 --- a/docs/features/plugin/tools/openapi-servers/open-webui.mdx +++ b/docs/features/extensibility/plugin/tools/openapi-servers/open-webui.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/plugin/tools/openapi-servers/open-webui sidebar_position: 1 title: "Open WebUI Integration" --- diff --git a/docs/features/media-generation/_category_.json b/docs/features/media-generation/_category_.json new file mode 100644 index 00000000..da770776 --- /dev/null +++ b/docs/features/media-generation/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "🎨 Media & Generation", + "position": 50, + "collapsible": true, + "collapsed": true +} \ No newline at end of file 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 98% 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 ee16d5b1..6bf21abd 100644 --- a/docs/features/audio/speech-to-text/env-variables.md +++ b/docs/features/media-generation/audio/speech-to-text/env-variables.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/speech-to-text/env-variables sidebar_position: 2 title: "Environment Variables" --- 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 98% 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 index f844d0ec..c1f653ac 100644 --- a/docs/features/audio/speech-to-text/mistral-voxtral-integration.md +++ b/docs/features/media-generation/audio/speech-to-text/mistral-voxtral-integration.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/speech-to-text/mistral-voxtral-integration sidebar_position: 2 title: "Mistral Voxtral STT" --- 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 12dc9e60..a41cfc19 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 @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/speech-to-text/openai-stt-integration sidebar_position: 0 title: "OpenAI STT Integration" --- 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 98% 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 11117a36..fc117d6a 100644 --- a/docs/features/audio/speech-to-text/stt-config.md +++ b/docs/features/media-generation/audio/speech-to-text/stt-config.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/speech-to-text/stt-config sidebar_position: 1 title: "Configuration" --- 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 98% 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 index 248d2c94..94fabafa 100644 --- a/docs/features/audio/text-to-speech/Kokoro-FastAPI-integration.md +++ b/docs/features/media-generation/audio/text-to-speech/Kokoro-FastAPI-integration.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/text-to-speech/Kokoro-FastAPI-integration sidebar_position: 2 title: "Kokoro-FastAPI Using Docker" --- 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 99% 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 c65bf618..24e565ec 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 @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/text-to-speech/chatterbox-tts-api-integration sidebar_position: 3 title: "Chatterbox TTS — Voice Cloning" --- 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 98% 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 index 7c66f61b..acda68dc 100644 --- a/docs/features/audio/text-to-speech/kokoro-web-integration.md +++ b/docs/features/media-generation/audio/text-to-speech/kokoro-web-integration.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/text-to-speech/kokoro-web-integration sidebar_position: 2 title: "Kokoro Web - Effortless TTS for Open WebUI" --- 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 99% 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 index 232a1993..fea433d5 100644 --- 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 @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/text-to-speech/openai-edge-tts-integration sidebar_position: 1 title: "Edge TTS Using Docker" --- 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 98% 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 ec695800..a86d879e 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 @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/text-to-speech/openai-tts-integration sidebar_position: 0 title: "OpenAI TTS Integration" --- 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 f866fe60..2f5d5acd 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 @@ -1,4 +1,5 @@ ---- +--- +slug: /features/audio/text-to-speech/openedai-speech-integration sidebar_position: 2 title: "Openedai-speech Using Docker" --- 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 96% rename from docs/features/image-generation-and-editing/automatic1111.md rename to docs/features/media-generation/image-generation-and-editing/automatic1111.md index ed6a1b65..07ab829a 100644 --- a/docs/features/image-generation-and-editing/automatic1111.md +++ b/docs/features/media-generation/image-generation-and-editing/automatic1111.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/image-generation-and-editing/automatic1111 sidebar_position: 2 title: "AUTOMATIC1111" --- diff --git a/docs/features/image-generation-and-editing/comfyui.md b/docs/features/media-generation/image-generation-and-editing/comfyui.md similarity index 99% rename from docs/features/image-generation-and-editing/comfyui.md rename to docs/features/media-generation/image-generation-and-editing/comfyui.md index e9103a0a..d0f7152e 100644 --- a/docs/features/image-generation-and-editing/comfyui.md +++ b/docs/features/media-generation/image-generation-and-editing/comfyui.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/image-generation-and-editing/comfyui sidebar_position: 3 title: "ComfyUI" --- diff --git a/docs/features/image-generation-and-editing/gemini.mdx b/docs/features/media-generation/image-generation-and-editing/gemini.mdx similarity index 98% rename from docs/features/image-generation-and-editing/gemini.mdx rename to docs/features/media-generation/image-generation-and-editing/gemini.mdx index ea954434..40c412d2 100644 --- a/docs/features/image-generation-and-editing/gemini.mdx +++ b/docs/features/media-generation/image-generation-and-editing/gemini.mdx @@ -1,4 +1,5 @@ ---- +--- +slug: /features/image-generation-and-editing/gemini sidebar_position: 5 title: "Gemini" --- 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 95% rename from docs/features/image-generation-and-editing/image-router.md rename to docs/features/media-generation/image-generation-and-editing/image-router.md index 63865275..cc47508f 100644 --- a/docs/features/image-generation-and-editing/image-router.md +++ b/docs/features/media-generation/image-generation-and-editing/image-router.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/image-generation-and-editing/image-router sidebar_position: 6 title: "Image Router" --- diff --git a/docs/features/image-generation-and-editing/openai.md b/docs/features/media-generation/image-generation-and-editing/openai.md similarity index 98% rename from docs/features/image-generation-and-editing/openai.md rename to docs/features/media-generation/image-generation-and-editing/openai.md index 28d5cc30..de73ae93 100644 --- a/docs/features/image-generation-and-editing/openai.md +++ b/docs/features/media-generation/image-generation-and-editing/openai.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/image-generation-and-editing/openai sidebar_position: 4 title: "OpenAI" --- diff --git a/docs/features/image-generation-and-editing/usage.md b/docs/features/media-generation/image-generation-and-editing/usage.md similarity index 98% rename from docs/features/image-generation-and-editing/usage.md rename to docs/features/media-generation/image-generation-and-editing/usage.md index aea079cc..654c9b8c 100644 --- a/docs/features/image-generation-and-editing/usage.md +++ b/docs/features/media-generation/image-generation-and-editing/usage.md @@ -1,4 +1,5 @@ ---- +--- +slug: /features/image-generation-and-editing/usage sidebar_position: 1 title: "Usage" --- diff --git a/docs/features/workspace/files.md b/docs/features/workspace/files.md deleted file mode 100644 index b5ecbf6b..00000000 --- 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 8ff8d81f..00000000 --- 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 1895ef35..534ea829 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 98% rename from docs/getting-started/advanced-topics/development.md rename to docs/getting-started/development.md index a3271336..ab1a303d 100644 --- a/docs/getting-started/advanced-topics/development.md +++ b/docs/getting-started/development.md @@ -1,5 +1,6 @@ --- -sidebar_position: 1 +slug: /getting-started/advanced-topics/development +sidebar_position: 3 title: "Local Development Guide" --- @@ -310,7 +311,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](/getting-started/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 00000000..dc3056d2 --- /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 88% 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 a949e1de..f3a4f762 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,7 @@ --- +slug: /getting-started/quick-start/starting-with-functions sidebar_position: 6 -title: "Getting Started with Functions" +title: "Functions" --- ## Overview @@ -100,11 +101,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/plugin/functions/)**: Learn the basics of the Functions system. +* **[Pipes Guide](/features/plugin/functions/pipe)**: Create custom model providers and logic pipelines. +* **[Filters Guide](/features/plugin/functions/filter)**: Intercept and modify messages (Input/Output guards). +* **[Actions Guide](/features/plugin/functions/action)**: Add buttons/actions to messages. +* **[Tools Guide](/features/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 98% 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 b838e8f7..9037749a 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,7 @@ --- +slug: /getting-started/quick-start/starting-with-llama-cpp sidebar_position: 3 -title: "Starting with Llama.cpp" +title: "Llama.cpp" --- ## Overview 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 98% 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 debccd31..2e09bb2b 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,7 @@ --- +slug: /getting-started/quick-start/starting-with-ollama sidebar_position: 1 -title: "Starting With Ollama" +title: "Ollama" --- ## Overview 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 97% 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 54384852..93ff090f 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,7 @@ --- - +slug: /getting-started/quick-start/starting-with-open-responses 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 98% 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 daa20ed5..e36ee443 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,7 @@ --- - +slug: /getting-started/quick-start/starting-with-openai-compatible sidebar_position: 5 -title: "Starting with OpenAI-Compatible Servers" +title: "OpenAI-Compatible" --- 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 98% 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 4829a254..04b8e54b 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,7 @@ --- - +slug: /getting-started/quick-start/starting-with-openai 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 96% 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 adf2ba41..4ec38583 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,7 @@ --- +slug: /getting-started/quick-start/starting-with-vllm sidebar_position: 4 -title: "Starting With vLLM" +title: "vLLM" --- ## Overview diff --git a/docs/reference/_category_.json b/docs/reference/_category_.json new file mode 100644 index 00000000..6596dec2 --- /dev/null +++ b/docs/reference/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "📖 Reference", + "position": 150, + "link": { + "type": "generated-index" + } +} \ No newline at end of file diff --git a/docs/getting-started/api-endpoints.md b/docs/reference/api-endpoints.md similarity index 97% rename from docs/getting-started/api-endpoints.md rename to docs/reference/api-endpoints.md index f88e9033..ef769c47 100644 --- a/docs/getting-started/api-endpoints.md +++ b/docs/reference/api-endpoints.md @@ -1,600 +1,601 @@ ---- -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/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! 🌟 +--- +slug: /getting-started/api-endpoints +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/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 3b2d92ca..b14ad89e 100644 --- a/docs/getting-started/env-configuration.mdx +++ b/docs/reference/env-configuration.mdx @@ -1,5 +1,6 @@ --- -sidebar_position: 4 +slug: /getting-started/env-configuration +sidebar_position: 1 title: "Environment Variable Configuration" --- @@ -274,7 +275,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` diff --git a/docs/getting-started/advanced-topics/https-encryption.md b/docs/reference/https-encryption.md similarity index 78% rename from docs/getting-started/advanced-topics/https-encryption.md rename to docs/reference/https-encryption.md index 7937e940..f47f039b 100644 --- a/docs/getting-started/advanced-topics/https-encryption.md +++ b/docs/reference/https-encryption.md @@ -1,4 +1,5 @@ --- +slug: /getting-started/advanced-topics/https-encryption sidebar_position: 6 title: "Enabling HTTPS Encryption" --- @@ -28,9 +29,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 +46,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 99% rename from docs/getting-started/advanced-topics/monitoring/index.md rename to docs/reference/monitoring/index.md index 5e0a097f..55d5c90e 100644 --- a/docs/getting-started/advanced-topics/monitoring/index.md +++ b/docs/reference/monitoring/index.md @@ -1,4 +1,5 @@ --- +slug: /getting-started/advanced-topics/monitoring sidebar_position: 6 title: "API Keys & Monitoring" --- diff --git a/docs/getting-started/advanced-topics/monitoring/otel.md b/docs/reference/monitoring/otel.md similarity index 98% rename from docs/getting-started/advanced-topics/monitoring/otel.md rename to docs/reference/monitoring/otel.md index 01c51f23..640ca74c 100644 --- a/docs/getting-started/advanced-topics/monitoring/otel.md +++ b/docs/reference/monitoring/otel.md @@ -1,4 +1,5 @@ --- +slug: /getting-started/advanced-topics/monitoring/opentelemetry sidebar_position: 7 title: "OpenTelemetry" --- diff --git a/docs/getting-started/advanced-topics/network-diagrams.mdx b/docs/reference/network-diagrams.mdx similarity index 99% rename from docs/getting-started/advanced-topics/network-diagrams.mdx rename to docs/reference/network-diagrams.mdx index d09a30f3..60fcad85 100644 --- a/docs/getting-started/advanced-topics/network-diagrams.mdx +++ b/docs/reference/network-diagrams.mdx @@ -1,4 +1,5 @@ --- +slug: /getting-started/advanced-topics/network-diagrams sidebar_position: 3 title: "Network Diagrams" --- diff --git a/docs/troubleshooting/audio.mdx b/docs/troubleshooting/audio.mdx index cee60d18..8748dbd8 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"; diff --git a/docs/troubleshooting/connection-error.mdx b/docs/troubleshooting/connection-error.mdx index a49b32c9..bb344ae2 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. diff --git a/docs/troubleshooting/manual-database-migration.md b/docs/troubleshooting/manual-database-migration.md index 16861ef7..cedfa5f9 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] diff --git a/docs/troubleshooting/multi-replica.mdx b/docs/troubleshooting/multi-replica.mdx index a3f18fa1..a51e8093 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 diff --git a/docs/troubleshooting/performance.md b/docs/troubleshooting/performance.md index 678eb956..05040fa0 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 diff --git a/docs/troubleshooting/rag.mdx b/docs/troubleshooting/rag.mdx index 9a0aa66f..c818c30d 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. diff --git a/docs/troubleshooting/sso.mdx b/docs/troubleshooting/sso.mdx index c1007907..41efc800 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! 🚦 diff --git a/docs/troubleshooting/web-search.mdx b/docs/troubleshooting/web-search.mdx index 2e95e6e0..1738ec9f 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. diff --git a/docs/tutorials/deployment/index.mdx b/docs/tutorials/deployment/index.mdx index 6d25ec9b..a9c0afb4 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 254b95d4..c4cc5126 100644 --- a/docs/tutorials/https/_category_.json +++ b/docs/tutorials/https/_category_.json @@ -1,7 +1,7 @@ { "label": "HTTPS", - "position": 200, + "position": 10, "link": { "type": "generated-index" } -} +} \ No newline at end of file diff --git a/docs/tutorials/integrations/_category_.json b/docs/tutorials/integrations/_category_.json index 36497a8d..e52d4ec1 100644 --- a/docs/tutorials/integrations/_category_.json +++ b/docs/tutorials/integrations/_category_.json @@ -1,7 +1,7 @@ { "label": "Integrations", - "position": 2, + "position": 20, "link": { "type": "generated-index" } -} +} \ No newline at end of file diff --git a/docs/tutorials/integrations/auth-identity/_category_.json b/docs/tutorials/integrations/auth-identity/_category_.json new file mode 100644 index 00000000..9a3c24ac --- /dev/null +++ b/docs/tutorials/integrations/auth-identity/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Auth & Identity", + "position": 2, + "collapsible": true, + "collapsed": true +} \ No newline at end of file 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 44218712..364a86d4 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 97% rename from docs/tutorials/tips/dual-oauth-configuration.mdx rename to docs/tutorials/integrations/auth-identity/dual-oauth-configuration.mdx index 9dd3e8ca..96f148aa 100644 --- a/docs/tutorials/tips/dual-oauth-configuration.mdx +++ b/docs/tutorials/integrations/auth-identity/dual-oauth-configuration.mdx @@ -1,5 +1,6 @@ --- -title: Dual OAuth Configuration (Microsoft & Google) +slug: /tutorials/tips/dual-oauth-configuration +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 99% rename from docs/tutorials/integrations/entra-group-name-sync.md rename to docs/tutorials/integrations/auth-identity/entra-group-name-sync.md index 6aec23f6..26ac2c04 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 diff --git a/docs/tutorials/integrations/okta-oidc-sso.md b/docs/tutorials/integrations/auth-identity/okta-oidc-sso.md similarity index 100% rename from docs/tutorials/integrations/okta-oidc-sso.md rename to docs/tutorials/integrations/auth-identity/okta-oidc-sso.md diff --git a/docs/tutorials/integrations/backend-controlled-ui-compatible-flow.md b/docs/tutorials/integrations/backend-controlled-ui-compatible-flow.md index 054423e2..f6cb1ad9 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 bb66d202..ba5773fa 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 00000000..b811fdcd --- /dev/null +++ b/docs/tutorials/integrations/dev-tools/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Dev Tools", + "position": 4, + "collapsible": true, + "collapsed": true +} \ No newline at end of file diff --git a/docs/tutorials/integrations/browser-search-engine.md b/docs/tutorials/integrations/dev-tools/browser-search-engine.md similarity index 100% rename from docs/tutorials/integrations/browser-search-engine.md rename to docs/tutorials/integrations/dev-tools/browser-search-engine.md diff --git a/docs/tutorials/integrations/continue-dev.md b/docs/tutorials/integrations/dev-tools/continue-dev.md similarity index 98% rename from docs/tutorials/integrations/continue-dev.md rename to docs/tutorials/integrations/dev-tools/continue-dev.md index d4369af0..bd8fdd5f 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 diff --git a/docs/tutorials/integrations/firefox-sidebar.md b/docs/tutorials/integrations/dev-tools/firefox-sidebar.md similarity index 97% rename from docs/tutorials/integrations/firefox-sidebar.md rename to docs/tutorials/integrations/dev-tools/firefox-sidebar.md index 882a38a0..72d0b706 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-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 100% rename from docs/tutorials/integrations/iterm2.md rename to docs/tutorials/integrations/dev-tools/iterm2.md diff --git a/docs/tutorials/integrations/jupyter.md b/docs/tutorials/integrations/dev-tools/jupyter.md similarity index 99% rename from docs/tutorials/integrations/jupyter.md rename to docs/tutorials/integrations/dev-tools/jupyter.md index da0310bc..b99ea5e9 100644 --- a/docs/tutorials/integrations/jupyter.md +++ b/docs/tutorials/integrations/dev-tools/jupyter.md @@ -1,4 +1,5 @@ --- +slug: /tutorials/integrations/jupyter sidebar_position: 321 title: "Jupyter Notebook Integration" --- diff --git a/docs/tutorials/integrations/llm-providers/_category_.json b/docs/tutorials/integrations/llm-providers/_category_.json new file mode 100644 index 00000000..018057be --- /dev/null +++ b/docs/tutorials/integrations/llm-providers/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "LLM Providers", + "position": 1, + "collapsible": true, + "collapsed": true +} \ No newline at end of file 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 8666a327..2f83a3da 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 52e7a7a3..cdfd6975 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 00000000..c4ec5896 --- /dev/null +++ b/docs/tutorials/integrations/monitoring/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Monitoring", + "position": 3, + "collapsible": true, + "collapsed": true +} \ No newline at end of file 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 3f3125fa..5fd77297 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 97547165..0bd92e43 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 0433ad87..8ecfcfc4 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/maintenance/_category_.json b/docs/tutorials/maintenance/_category_.json index 53e8c37e..f4e65ecb 100644 --- a/docs/tutorials/maintenance/_category_.json +++ b/docs/tutorials/maintenance/_category_.json @@ -1,7 +1,7 @@ { "label": "Maintenance", - "position": 5, + "position": 30, "link": { "type": "generated-index" } -} +} \ No newline at end of file diff --git a/docs/tutorials/maintenance/database.mdx b/docs/tutorials/maintenance/database.mdx index 598c3656..0bdaa015 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 95% rename from docs/tutorials/offline-mode.mdx rename to docs/tutorials/maintenance/offline-mode.mdx index 0e30dae8..5d957e4c 100644 --- a/docs/tutorials/offline-mode.mdx +++ b/docs/tutorials/maintenance/offline-mode.mdx @@ -1,4 +1,5 @@ --- +slug: /tutorials/offline-mode sidebar_position: 300 title: "Offline Mode" --- @@ -9,7 +10,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 +78,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/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 diff --git a/docs/tutorials/tips/_category_.json b/docs/tutorials/tips/_category_.json index 9189b712..60d5e9a0 100644 --- a/docs/tutorials/tips/_category_.json +++ b/docs/tutorials/tips/_category_.json @@ -1,7 +1,7 @@ { "label": "Tips & Tricks", - "position": 0, + "position": 50, "link": { "type": "generated-index" } -} +} \ No newline at end of file diff --git a/docs/tutorials/tips/one-click-ollama-launcher.mdx b/docs/tutorials/tips/one-click-ollama-launcher.mdx index 9dfccde9..4a2de17a 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 ebb119aa..2264446e 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 1925cf67..34fa28a8 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 diff --git a/sidebars.ts b/sidebars.ts index 16103e58..3fb16c1c 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -12,28 +12,9 @@ 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'], - }, - ], - */ + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [{ type: "autogenerated", dirName: "." }], }; export default sidebars; +