Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
348 commits
Select commit Hold shift + click to select a range
fd56086
refac
tjbck Jun 24, 2026
8934bfb
refac
tjbck Jun 24, 2026
f812072
refac
tjbck Jun 25, 2026
1111a3a
refac
tjbck Jun 25, 2026
1457f2d
refac
tjbck Jun 25, 2026
35f8bf9
refac
tjbck Jun 25, 2026
b5c4396
refac
tjbck Jun 25, 2026
47a1bfd
refac
tjbck Jun 25, 2026
7453968
refac
tjbck Jun 25, 2026
5576e6e
refac
tjbck Jun 25, 2026
e124c26
refac
tjbck Jun 25, 2026
7d9b249
refac
tjbck Jun 25, 2026
7b55a63
refac
tjbck Jun 25, 2026
1a8e1a9
refac
tjbck Jun 25, 2026
ede39d8
refac
tjbck Jun 25, 2026
8f890f0
refac
tjbck Jun 25, 2026
7c0b0e4
refac
tjbck Jun 25, 2026
741b64e
refac
tjbck Jun 25, 2026
e3ba698
refac
tjbck Jun 25, 2026
08f64f7
fix(calendar): prevent all-day event date drift on save (#25864)
silentoplayz Jun 25, 2026
7c3802a
refac
tjbck Jun 29, 2026
0b0910b
i18n: update Irish translation (#26360)
aindriu80 Jun 29, 2026
ea3f5f2
refac
tjbck Jun 29, 2026
6729e64
perf: skip re-splitting unchanged text tokens (#26326)
Algorithm5838 Jun 29, 2026
df634bb
refac
tjbck Jun 29, 2026
5aeb1ca
fix: persist control edits across navigation (#26336)
Algorithm5838 Jun 29, 2026
0130b49
refac
tjbck Jun 29, 2026
5160513
refac
tjbck Jun 29, 2026
62ae206
refac
tjbck Jun 29, 2026
518702c
refac
tjbck Jun 29, 2026
464e703
refac
tjbck Jun 29, 2026
c7be666
refac
tjbck Jun 29, 2026
d99ac7d
refac
tjbck Jun 29, 2026
23d03d6
refac
tjbck Jun 29, 2026
3a232f5
refac
tjbck Jun 29, 2026
dd4f43b
refac
tjbck Jun 29, 2026
ef8c9c0
refac
tjbck Jun 29, 2026
cd1ec31
i18n: add pt-BR translations for newly added UI items and consistency…
joaoback Jun 29, 2026
8977a10
refac
tjbck Jun 29, 2026
9790122
refac
tjbck Jun 29, 2026
03a8363
refac
tjbck Jun 29, 2026
5922727
refac
tjbck Jun 29, 2026
6f5f263
fix: ignore IME composition Enter in chat search (#26172) (#26238)
ybnjm1234-source Jun 29, 2026
5b1c42e
refac
tjbck Jun 29, 2026
2560533
refac
tjbck Jun 29, 2026
cfb49c4
refac
tjbck Jun 29, 2026
124c7a3
refac
tjbck Jun 29, 2026
7e13fd7
refac
tjbck Jun 29, 2026
dbdcfd8
refac
tjbck Jun 29, 2026
bc70696
refac
tjbck Jun 29, 2026
7292cee
refac
tjbck Jun 29, 2026
62b1537
perf: skip re-sanitizing unchanged HTML tokens (#26325)
Algorithm5838 Jun 29, 2026
b854eb0
refac
tjbck Jun 29, 2026
b308391
refac
tjbck Jun 29, 2026
368b4a5
solve-valves-icon-disappear-issue (#26256)
alvarellos Jun 29, 2026
1f6336f
fix: strip whitespace from user info headers to prevent MCP connectio…
HrushiYadav Jun 29, 2026
0502494
fix(ui): fix keyboard shortcuts modal Enter key emoji and menu capita…
silentoplayz Jun 29, 2026
7240517
refac
tjbck Jun 29, 2026
89629b8
perf: make ToolCallDisplay parseJSONString iterative (#26146)
Classic298 Jun 29, 2026
ec8e20a
refac
tjbck Jun 29, 2026
452954f
refac
tjbck Jun 29, 2026
9df25b6
refac
tjbck Jun 29, 2026
00924fb
refac
tjbck Jun 29, 2026
8c57cfa
refac
tjbck Jun 29, 2026
1da3b7f
refac
tjbck Jun 29, 2026
da0fd0d
fix(ui): add max height and scroll to chat menu tags section (#26031)
silentoplayz Jun 29, 2026
677e164
feat(permissions): add workspace.skills_import and workspace.skills_e…
silentoplayz Jun 29, 2026
a4f7ec1
Chore: Add a security-reporting link to the issue chooser (#26007)
Classic298 Jun 29, 2026
3730a9e
refac
tjbck Jun 29, 2026
46c1d65
refac
tjbck Jun 29, 2026
b7934e9
refac
tjbck Jun 29, 2026
ce4a323
refac
tjbck Jun 29, 2026
3c67774
fix(auth): enforce settings.interface permission on /user/settings/up…
silentoplayz Jun 29, 2026
c826074
refac
tjbck Jun 29, 2026
f923edc
feat(ui): add Clone option to automations 3-dots menu (#25790)
silentoplayz Jun 29, 2026
b295a20
chore: bump Python backend dependencies, drop unused peewee (#25786)
Classic298 Jun 29, 2026
2a9a023
fix(ui): add Edit option to prompts 3-dots menu (#25789)
silentoplayz Jun 29, 2026
5fd26b7
docs: note pydub/audioop Python 3.13 constraint at the import (#25785)
Classic298 Jun 29, 2026
6050a94
refac
tjbck Jun 29, 2026
e69ce6e
perf(channels): batch N+1 queries for reactions and thread replies (#…
silentoplayz Jun 29, 2026
8a01693
refac(telemetry): drop deprecated semconv SpanAttributes subclass (#2…
Classic298 Jun 29, 2026
c339428
fix: repair Mistral OCR async upload (aiohttp.streams.FilePayload rem…
Classic298 Jun 29, 2026
964a098
fix(chat): use code block language tag to detect Vega-Lite specs for …
silentoplayz Jun 29, 2026
c31694a
chore: Update SECURITY.md (#25773)
Classic298 Jun 29, 2026
342539f
perf(audio): make ML model loading non-blocking with asyncio.to_threa…
silentoplayz Jun 29, 2026
15d96b1
fix: chroma has_collection always returns False (name vs Collection) …
Classic298 Jun 29, 2026
01198ea
Close DNS-rebinding SSRF gap in get_content_from_url probe (#25775)
Classic298 Jun 29, 2026
ff25ccc
feat: add repeat/recurrence dropdown to calendar event modal (#25865)
silentoplayz Jun 29, 2026
914039a
Escape voice-derived attributes in Azure TTS SSML (#25776)
Classic298 Jun 29, 2026
386ac95
fix: scope Socket.IO event-caller to the requesting user's own sessio…
Classic298 Jun 29, 2026
61a2672
refac
tjbck Jun 29, 2026
2308b59
refac
tjbck Jun 29, 2026
71d6212
fix(redis): use await asyncio.sleep() instead of time.sleep() in asyn…
silentoplayz Jun 29, 2026
ac3449c
refac
tjbck Jun 29, 2026
d4d9786
i18n: Update catalan translation.json (#25595)
aleixdorca Jun 29, 2026
6ea5914
perf(images): offload validate_url() DNS resolution with asyncio.to_t…
silentoplayz Jun 29, 2026
2414dfc
fix: mark in-place created chats as read on new chat (#25782)
Classic298 Jun 29, 2026
2bdd2ab
refac
tjbck Jun 29, 2026
36d08fa
fix: request file list/search without extracted content by default (#…
Classic298 Jun 29, 2026
18e6a10
fix(ui): update model share URL to new community post endpoint (#25801)
silentoplayz Jun 29, 2026
6fdf9b4
perf(auth): make password hashing non-blocking and batch CSV user imp…
silentoplayz Jun 29, 2026
b34d6c8
refac
tjbck Jun 29, 2026
525c115
fix(ui): remove unnecessary margin causing scrollbar on About setting…
silentoplayz Jun 29, 2026
5342060
fix: route Account Pending sign out through backend signout flow (#25…
Classic298 Jun 29, 2026
7be0096
refac
tjbck Jun 29, 2026
388f62f
refac
tjbck Jun 29, 2026
462b66b
Update fi-FI translation.json (#25672)
Kylapaallikko Jun 29, 2026
390e200
refac
tjbck Jun 29, 2026
958fdbd
feat: add ariaLabel prop to Switch component (#25230)
macodev00 Jun 29, 2026
4712544
feat(search): add chat context menu to search modal (#25490)
silentoplayz Jun 29, 2026
33cd199
refac
tjbck Jun 29, 2026
c93d4f0
refac
tjbck Jun 29, 2026
6e14e44
fix(api): handle orphaned shared_chat rows when unsharing (#25632)
silentoplayz Jun 29, 2026
5796d44
fix: defer missing-local-embedding error so it can't crash boot (#25683)
Classic298 Jun 29, 2026
78d276b
fix(ui): update groups count to reflect filtered search results (#25689)
silentoplayz Jun 29, 2026
3fd0384
refac
tjbck Jun 29, 2026
70b89d0
feat(ui): add drag-to-reorder for pinned notes in sidebar (#25677)
silentoplayz Jun 29, 2026
f85e906
refac
tjbck Jun 29, 2026
ed2d7d4
fix(i18n): standardize title case for settings toggle labels (#25765)
silentoplayz Jun 29, 2026
9802b0d
refac
tjbck Jun 29, 2026
e98730b
fix: pass web search results to model when embedding & retrieval enab…
Classic298 Jun 29, 2026
58f9170
fix: trim terminal bearer token so whitespace can't break the WebSock…
Classic298 Jun 29, 2026
8bc4ac2
fix: add aria-pressed and aria-label to Web Search and Image Generati…
macodev00 Jun 29, 2026
a8e5f0a
fix(ui): prevent space key from opening file/directory during rename …
silentoplayz Jun 29, 2026
4bc4630
refac
tjbck Jun 29, 2026
a70a658
refac
tjbck Jun 29, 2026
9582374
refac
tjbck Jun 29, 2026
7b1aa74
perf(retrieval): make URL fetch and file hash non-blocking with async…
silentoplayz Jun 29, 2026
a66477b
fix: bind channel thread parent/reply to the URL channel (#25766)
Classic298 Jun 29, 2026
b05be8a
fix(notes): refresh pinned notes sidebar when a note is deleted (#25640)
silentoplayz Jun 29, 2026
ee11069
perf(ollama): offload multi-GB model file I/O with asyncio.to_thread …
silentoplayz Jun 29, 2026
0fc630b
fix: per-user model cache used static key= (cross-user model exposure…
Classic298 Jun 29, 2026
4c05abb
fix: respect model visibility in workspace base model selector (#25668)
Classic298 Jun 29, 2026
33b91bd
refac
tjbck Jun 29, 2026
c4688b9
refac
tjbck Jun 29, 2026
d3676b4
refac
tjbck Jun 29, 2026
b58b0ea
refac
tjbck Jun 29, 2026
ab84bbf
refac
tjbck Jun 29, 2026
ea6d02d
fix(ui): use correct field name for prompt clone title suffix (#25800)
silentoplayz Jun 29, 2026
fd7a59d
refac
tjbck Jun 29, 2026
f8ec632
refac
tjbck Jun 29, 2026
718b226
fix: discover MCP Protected Resource Metadata when server does not re…
AlbertodelaCruz Jun 29, 2026
b617d56
refac
tjbck Jun 29, 2026
f53ec85
feat: support folder, note, and model drag-and-drop from sidebar as c…
silentoplayz Jun 29, 2026
a3b4874
refac
tjbck Jun 29, 2026
67c9de8
refac
tjbck Jun 29, 2026
e5b5e59
refac
tjbck Jun 29, 2026
953432b
refac
tjbck Jun 29, 2026
45fea34
refac
tjbck Jun 29, 2026
416baef
refac
tjbck Jun 29, 2026
4fa3a74
fix(chat): prevent sortable sidebar drags from triggering file upload…
silentoplayz Jun 29, 2026
5ffd4e5
fix(ui): prevent long default group name from overflowing admin setti…
silentoplayz Jun 29, 2026
0be069c
refac
tjbck Jun 29, 2026
c65b29e
fix: handle MCP resource content type blob and URI variants (#25260)
macodev00 Jun 29, 2026
422a476
refac
tjbck Jun 29, 2026
8927c9b
refac
tjbck Jun 29, 2026
cdd7b88
refac
tjbck Jun 29, 2026
83ec36c
refac
tjbck Jun 29, 2026
fa76764
refac
tjbck Jun 29, 2026
aa851d9
refac
tjbck Jun 29, 2026
0eba3df
refac
tjbck Jun 29, 2026
edf2c6c
refac
tjbck Jun 29, 2026
67a7b23
refac
tjbck Jun 29, 2026
396d9ac
refac
tjbck Jun 29, 2026
e6d35fc
refac
tjbck Jun 29, 2026
44b9463
refac
tjbck Jun 29, 2026
41f2563
refac
tjbck Jun 29, 2026
0cc331d
refac
tjbck Jun 29, 2026
ee5de69
refac
tjbck Jun 29, 2026
0883638
refac
tjbck Jun 29, 2026
70e4ffc
refac
tjbck Jun 29, 2026
b0487dd
refac
tjbck Jun 29, 2026
260f3c3
refac
tjbck Jun 29, 2026
75df948
feat: forward client User-Agent to model backends via {{USER_AGENT}} …
Classic298 Jun 29, 2026
a285a39
refac
tjbck Jun 29, 2026
eb53281
refac
tjbck Jun 29, 2026
f9c3ccd
refac
tjbck Jun 29, 2026
303c426
refac
tjbck Jun 29, 2026
7ed7e81
refac
tjbck Jun 29, 2026
5055fb8
refac
tjbck Jun 29, 2026
a5c9459
refac
tjbck Jun 29, 2026
c7e6347
refac
tjbck Jun 29, 2026
51246bc
perf(backend): offload blocking calls in async paths to threads (#26381)
gaby Jun 29, 2026
8c74281
fix(rag): allow special tokens in document text during chunk measurem…
silentoplayz Jun 29, 2026
39837e0
refac
tjbck Jun 29, 2026
2d3035a
refac
tjbck Jun 29, 2026
4ed45ce
refac
tjbck Jun 29, 2026
81e2455
refac
tjbck Jun 29, 2026
2c4e1fc
refac
tjbck Jun 29, 2026
a146e17
refac
tjbck Jun 29, 2026
815446d
refac
tjbck Jun 29, 2026
61cee42
refac
tjbck Jun 29, 2026
7572283
fix: persist control revert to loaded value (#25793)
Algorithm5838 Jun 29, 2026
b696c5d
refac
tjbck Jun 29, 2026
40b655e
refac
tjbck Jun 29, 2026
c6ec1a3
refac
tjbck Jun 29, 2026
27c97bf
i18n: complete German (de-DE) translations (#26383)
Classic298 Jun 29, 2026
754787f
refac
tjbck Jun 29, 2026
1055817
refac
tjbck Jun 29, 2026
ff5cec4
refac
tjbck Jun 29, 2026
6f8221d
refac
tjbck Jun 29, 2026
655afbe
refac
tjbck Jun 29, 2026
dc1bc41
fix(ui): fix pinned note sidebar drag-and-drop into chat context (#26…
silentoplayz Jun 29, 2026
783205a
refac
tjbck Jun 29, 2026
fe3300b
refac
tjbck Jun 29, 2026
d6cda4a
refac
tjbck Jun 29, 2026
2856def
refac
tjbck Jun 29, 2026
877221c
chore(deps): patch frontend security dependencies (#26281)
gateway Jun 29, 2026
6fd8c59
fix(ui): workspace models bulk actions and search pagination (#26274)
silentoplayz Jun 29, 2026
c89fd23
refac
tjbck Jun 29, 2026
75db531
refac
tjbck Jun 29, 2026
248315d
refac
tjbck Jun 29, 2026
bb6b2db
refac
tjbck Jun 29, 2026
b4073f6
refac
tjbck Jun 29, 2026
91aea7f
fix: Fixed the error message display for non-standard SSE (#23228)
ShirasawaSama Jun 29, 2026
c584a42
perf(ui): non-blocking model and tool server loading for unreachable …
silentoplayz Jun 29, 2026
ae5d23f
refac
tjbck Jun 29, 2026
c0c6c21
refac
tjbck Jun 29, 2026
db99779
refac
tjbck Jun 29, 2026
37a9da5
refac
tjbck Jun 29, 2026
fb27716
refac
tjbck Jun 29, 2026
21ac7e9
refac
tjbck Jun 29, 2026
589b62b
refac
tjbck Jun 29, 2026
2c804b0
refac
tjbck Jun 29, 2026
7ea7680
refac
tjbck Jun 29, 2026
517cd8d
refac
tjbck Jun 29, 2026
55cb98f
refac
tjbck Jun 29, 2026
37d45fd
refac
tjbck Jun 29, 2026
3319b64
refac
tjbck Jun 29, 2026
24b8619
refac
tjbck Jun 29, 2026
22a44e6
refac
tjbck Jun 29, 2026
0443ab3
refac
tjbck Jun 29, 2026
c33fadc
refac
tjbck Jun 29, 2026
403392b
chore: format
tjbck Jun 29, 2026
09a1c3a
chore: CHANGELOG (#26016)
Classic298 Jun 29, 2026
89709f5
refac
tjbck Jun 29, 2026
3dc5264
refac
tjbck Jun 29, 2026
bc9e773
doc
tjbck Jun 29, 2026
832fc3a
doc: changelog
tjbck Jun 29, 2026
6e3020b
Update translation.json (#26386)
Classic298 Jun 29, 2026
29d0113
refac
tjbck Jun 29, 2026
06c169f
chore: format
tjbck Jun 29, 2026
0c7908b
chore: format
tjbck Jun 29, 2026
9af700c
chore: bump
tjbck Jun 29, 2026
caadfde
refac
tjbck Jun 29, 2026
5134e5e
refac
tjbck Jun 29, 2026
4d2e13c
Merge pull request #26385 from open-webui/dev
tjbck Jun 29, 2026
f6baa1b
refac
tjbck Jun 29, 2026
86231e4
refac
tjbck Jun 29, 2026
b711935
Merge pull request #26388 from open-webui/dev
tjbck Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: 🔒 Report a Security Vulnerability
url: https://github.com/open-webui/open-webui/security
about: Do NOT open a public issue for security vulnerabilities, suspected vulnerabilities, or any security-related concern. Please review our Security Policy and report privately via the "Report a vulnerability" button so it can be handled as a private advisory.
7 changes: 5 additions & 2 deletions .github/workflows/backend.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ name: Python CI
on:
push:
branches: [main, dev]
paths: ['backend/**', 'pyproject.toml', 'uv.lock']
paths: ['backend/**', 'pyproject.toml', 'uv.lock', '.github/workflows/backend.yaml']
pull_request:
branches: [main, dev]
paths: ['backend/**', 'pyproject.toml', 'uv.lock']
paths: ['backend/**', 'pyproject.toml', 'uv.lock', '.github/workflows/backend.yaml']

concurrency:
group: backend-${{ github.ref }}
Expand Down Expand Up @@ -38,3 +38,6 @@ jobs:

- name: Verify formatting
run: ruff format --check . --exclude .venv --exclude venv

- name: Detect logic errors
run: ruff check --select=F --ignore=F401,F403,F405,F541,F811,F841 --output-format=github .
64 changes: 64 additions & 0 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,70 @@ jobs:
run: |
docker buildx imagetools inspect ${{ env.FULL_IMAGE_NAME }}:${{ steps.meta.outputs.version }}

notify-helm-charts:
runs-on: ubuntu-latest
needs: [merge]
if: ${{ !cancelled() && needs.merge.result == 'success' && (github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/v')) }}
steps:
- name: Create Helm charts app token
id: helm-app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.HELM_CHARTS_APP_ID }}
private-key: ${{ secrets.HELM_CHARTS_APP_PRIVATE_KEY }}
owner: ${{ github.repository_owner }}
repositories: helm-charts

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Verify published Open WebUI image
id: image
run: |
set -euo pipefail

image_name="ghcr.io/${GITHUB_REPOSITORY,,}"
ref_name="${GITHUB_REF_NAME}"

if [ "${GITHUB_REF}" = "refs/heads/dev" ]; then
image_tag="dev"
else
image_tag="${ref_name#v}"
fi

docker buildx imagetools inspect "${image_name}:${image_tag}"
echo "tag=${image_tag}" >> "${GITHUB_OUTPUT}"

- name: Dispatch Helm chart automation
uses: actions/github-script@v8
with:
github-token: ${{ steps.helm-app-token.outputs.token }}
script: |
const isDev = context.ref === 'refs/heads/dev';
const eventType = isDev
? 'open-webui-dev-image-published'
: 'open-webui-release-published';
const refName = context.ref.replace('refs/heads/', '').replace('refs/tags/', '');
const appVersion = refName.startsWith('v') ? refName.slice(1) : refName;
const payload = {
image_tag: isDev ? 'dev' : appVersion,
source_ref: context.ref,
source_sha: context.sha,
source_run_id: String(context.runId),
source_repository: context.repo.repo,
};

if (!isDev) {
payload.app_version = appVersion;
}

await github.rest.repos.createDispatchEvent({
owner: context.repo.owner,
repo: 'helm-charts',
event_type: eventType,
client_payload: payload,
});

copy-to-dockerhub:
runs-on: ubuntu-latest
if: ${{ !cancelled() && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) }}
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -310,3 +310,4 @@ dist
cypress/videos
cypress/screenshots
.vscode/settings.json
.cptr
222 changes: 222 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ RUN chown -R $UID:$GID /app $HOME
# Install common system dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git build-essential pandoc gcc netcat-openbsd curl jq \
git build-essential pandoc gcc netcat-openbsd curl jq ca-certificates \
libmariadb-dev \
python3-dev \
ffmpeg libsm6 libxext6 zstd \
Expand Down
80 changes: 55 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,58 +27,84 @@ For more information, be sure to check out our [Open WebUI Documentation](https:

## Key Features of Open WebUI ⭐

- 🚀 **Effortless Setup**: Install seamlessly using Docker or Kubernetes (kubectl, kustomize or helm) for a hassle-free experience with support for both `:ollama` and `:cuda` tagged images.
- 🚀 **Effortless Setup**: Install seamlessly via pip, uv, Docker, or Kubernetes (kubectl, kustomize, or helm), with `:ollama` and `:cuda` tagged images available for container deployments.

- 🤝 **Ollama/OpenAI API Integration**: Effortlessly integrate OpenAI-compatible APIs for versatile conversations alongside Ollama models. Customize the OpenAI API URL to link with **LMStudio, GroqCloud, Mistral, OpenRouter, and more**.
- 🤝 **Broad Model & API Integration**: Connect any OpenAI-compatible API alongside local Ollama models. Point the API URL at **LMStudio, GroqCloud, Mistral, OpenRouter, vLLM, and more** to mix and match providers freely.

- 🛡️ **Granular Permissions and User Groups**: By allowing administrators to create detailed user roles and permissions, we ensure a secure user environment. This granularity not only enhances security but also allows for customized user experiences, fostering a sense of ownership and responsibility amongst users.
- 🔐 **Granular RBAC & User Groups**: Administrators define detailed roles, groups, and permissions, giving each user exactly the access they need. Secure by default, with tailored experiences per group.

- 📱 **Responsive Design**: Enjoy a seamless experience across Desktop PC, Laptop, and Mobile devices.
- 🧩 **Plugin Support**: Extend Open WebUI with **Filters**, **Actions**, **Pipes**, **Tools**, and **Skills**. Connect external services through **MCP**, **MCPO**, and **OpenAPI tool servers**. Build custom integrations, rate limits, approval flows, data connections, and more.

- 📱 **Progressive Web App (PWA) for Mobile**: Enjoy a native app-like experience on your mobile device with our PWA, providing offline access on localhost and a seamless user interface.
- 🤖 **Models & Agents**: Wrap any base model with custom instructions, tools, and knowledge to build specialized agents. Supports dynamic variables, per-user/group access control, and community preset imports via [Open WebUI Community](https://openwebui.com/).

- ✒️🔢 **Full Markdown and LaTeX Support**: Elevate your LLM experience with comprehensive Markdown and LaTeX capabilities for enriched interaction.
- 📝 **Notes**: A dedicated workspace for content outside conversations. Draft with a rich editor, use AI to rewrite selected text, and attach notes to any chat for full-context injection.

- 🎤📹 **Hands-Free Voice/Video Call**: Experience seamless communication with integrated hands-free voice and video call features using multiple Speech-to-Text providers (Local Whisper, OpenAI, Deepgram, Azure) and Text-to-Speech engines (Azure, ElevenLabs, OpenAI, Transformers, WebAPI), allowing for dynamic and interactive chat environments.
- 📢 **Channels**: Real-time shared spaces where your team and AI models collaborate in one timeline. Tag models to draft or critique, with threads, reactions, pins, and access control.

- 🛠️ **Model Builder**: Easily create Ollama models via the Web UI. Create and add custom characters/agents, customize chat elements, and import models effortlessly through [Open WebUI Community](https://openwebui.com/) integration.
- 🧠 **Persistent Memory**: The AI remembers facts about you across conversations, carrying context from one chat to the next.

- 🐍 **Native Python Function Calling Tool**: Enhance your LLMs with built-in code editor support in the tools workspace. Bring Your Own Function (BYOF) by simply adding your pure Python functions, enabling seamless integration with LLMs.
- **Live Workflow & Message Flow**: Watch the AI build and work through checklists in real time. Queue messages while the AI is still responding; they send automatically when it's ready.

- 💾 **Persistent Artifact Storage**: Built-in key-value storage API for artifacts, enabling features like journals, trackers, leaderboards, and collaborative tools with both personal and shared data scopes across sessions.
- 📅 **Calendar & AI Scheduling**: Built-in personal and shared calendars with month/week/day views, recurring events, color coding, attendees, and reminders. Models manage your schedule conversationally through native function calling.

- 📚 **Local RAG Integration**: Dive into the future of chat interactions with groundbreaking Retrieval Augmented Generation (RAG) support using your choice of 9 vector databases and multiple content extraction engines (Tika, Docling, Document Intelligence, Mistral OCR, PaddleOCR-vl, External loaders). Load documents directly into chat or add files to your document library, effortlessly accessing them using the `#` command before a query.
- ⏱️ **Automations**: Schedule prompts to run on recurring schedules, with runs surfaced on your calendar and each completed run linking back to the chat it produced.

- 🔍 **Web Search for RAG**: Perform web searches using 15+ providers including `SearXNG`, `Google PSE`, `Brave Search`, `Kagi`, `Mojeek`, `Tavily`, `Perplexity`, `serpstack`, `serper`, `Serply`, `DuckDuckGo`, `SearchApi`, `SerpApi`, `Bing`, `Jina`, `Exa`, `Sougou`, `Azure AI Search`, and `Ollama Cloud`, injecting results directly into your chat experience.
- 📱 **Responsive Design & PWA**: Seamless experience across desktop, laptop, and mobile, with a Progressive Web App for native app-like feel and offline access on localhost.

- 🌐 **Web Browsing Capability**: Seamlessly integrate websites into your chat experience using the `#` command followed by a URL. This feature allows you to incorporate web content directly into your conversations, enhancing the richness and depth of your interactions.
- ✒️🔢 **Full Markdown and LaTeX Support**: Comprehensive Markdown and LaTeX capabilities for enriched interaction.

- 🎨 **Image Generation & Editing Integration**: Create and edit images using multiple engines including OpenAI's DALL-E, Gemini, ComfyUI (local), and AUTOMATIC1111 (local), with support for both generation and prompt-based editing workflows.
- 🎤📹 **Hands-Free Voice/Video Call**: Integrated voice and video calls with multiple Speech-to-Text providers (Local Whisper, OpenAI, Deepgram, Azure) and Text-to-Speech engines (Azure, ElevenLabs, OpenAI, Transformers, WebAPI).

- ⚙️ **Many Models Conversations**: Effortlessly engage with various models simultaneously, harnessing their unique strengths for optimal responses. Enhance your experience by leveraging a diverse set of models in parallel.
- 💾 **Persistent Artifact Storage**: Built-in key-value storage API for artifacts, enabling journals, trackers, leaderboards, and collaborative tools with personal and shared data scopes.

- 🔐 **Role-Based Access Control (RBAC)**: Ensure secure access with restricted permissions; only authorized individuals can access your Ollama, and exclusive model creation/pulling rights are reserved for administrators.
- 📚 **Local RAG Integration**: Retrieval Augmented Generation backed by 9 vector databases and multiple content-extraction engines (Tika, Docling, Document Intelligence, Mistral OCR, PaddleOCR-vl, external loaders). Supports hybrid search (BM25 + vector) with reranking and full-context mode. Load documents into chat or pull them from your library with the `#` command.

- 🗄️ **Flexible Database & Storage Options**: Choose from SQLite (with optional encryption), PostgreSQL, or configure cloud storage backends (S3, Google Cloud Storage, Azure Blob Storage) for scalable deployments.
- 🔍 **Web Search for RAG**: Search the web through dozens of providers including `SearXNG`, `Google PSE`, `Brave Search`, `Kagi`, `Mojeek`, `Tavily`, `Perplexity`, `Firecrawl`, `serpstack`, `serper`, `Serply`, `DuckDuckGo`, `SearchApi`, `SerpApi`, `Bing`, `Jina`, `Exa`, `Sougou`, `Azure AI Search`, and `Ollama Cloud`, injecting results directly into the conversation.

- 🔍 **Advanced Vector Database Support**: Select from 9 vector database options including ChromaDB, PGVector, Qdrant, Milvus, Elasticsearch, OpenSearch, Pinecone, S3Vector, and Oracle 23ai for optimal RAG performance.
- 🌐 **Web Browsing Capability**: Pull websites into chat with the `#` command followed by a URL, or let the model fetch them on its own when needed.

- 🔐 **Enterprise Authentication**: Full support for LDAP/Active Directory integration, SCIM 2.0 automated provisioning, and SSO via trusted headers alongside OAuth providers. Enterprise-grade user and group provisioning through SCIM 2.0 protocol, enabling seamless integration with identity providers like Okta, Azure AD, and Google Workspace for automated user lifecycle management.
- 🎨 **Image Generation & Editing**: Create and edit images with multiple engines including OpenAI DALL·E, Gemini, ComfyUI (local), and AUTOMATIC1111 (local), supporting both generation and prompt-based editing.

- ️ **Cloud-Native Integration**: Native support for Google Drive and OneDrive/SharePoint file picking, enabling seamless document import from enterprise cloud storage.
- ️ **Multi-Model Conversations**: Engage several models at once, harnessing their individual strengths in parallel for the best possible responses.

- 📊 **Production Observability**: Built-in OpenTelemetry support for traces, metrics, and logs, enabling comprehensive monitoring with your existing observability stack.
- 📊 **Usage Analytics & Model Evaluation**: Admin dashboards track message volume, token consumption, and cost across users and models. Evaluate models with a built-in arena, A/B testing, and ELO-based leaderboards.

- ️ **Horizontal Scalability**: Redis-backed session management and WebSocket support for multi-worker and multi-node deployments behind load balancers.
- 🗄️ **Flexible Database & Storage**: Choose SQLite (with optional encryption) or PostgreSQL, and store files locally or on S3, Google Cloud Storage, or Azure Blob Storage.

- 🌐🌍 **Multilingual Support**: Experience Open WebUI in your preferred language with our internationalization (i18n) support. Join us in expanding our supported languages! We're actively seeking contributors!
- 🧬 **Advanced Vector Database Support**: Pick from 9 vector databases: ChromaDB, PGVector, Qdrant, Milvus, Elasticsearch, OpenSearch, Pinecone, S3Vector, and Oracle 23ai.

- 🧩 **Pipelines, Open WebUI Plugin Support**: Seamlessly integrate custom logic and Python libraries into Open WebUI using [Pipelines Plugin Framework](https://github.com/open-webui/pipelines). Launch your Pipelines instance, set the OpenAI URL to the Pipelines URL, and explore endless possibilities. [Examples](https://github.com/open-webui/pipelines/tree/main/examples) include **Function Calling**, User **Rate Limiting** to control access, **Usage Monitoring** with tools like Langfuse, **Live Translation with LibreTranslate** for multilingual support, **Toxic Message Filtering** and much more.
- 🪪 **Enterprise Authentication & Provisioning**: Full LDAP/Active Directory integration, SSO via trusted headers and OAuth providers, and SCIM 2.0 automated provisioning for identity providers like Okta, Azure AD, and Google Workspace.

- 🌟 **Continuous Updates**: We are committed to improving Open WebUI with regular updates, fixes, and new features.
- ☁️ **Cloud-Native File Integration**: Native Google Drive and OneDrive/SharePoint file picking for seamless document import from enterprise cloud storage.

- 🔭 **Production Observability**: Built-in OpenTelemetry support for traces, metrics, and logs, plugging into your existing monitoring stack.

- ⚖️ **Horizontal Scalability**: Redis-backed session management and WebSocket support for multi-worker, multi-node deployments behind load balancers.

- 🌐🌍 **Multilingual Support**: Use Open WebUI in your preferred language with i18n support. We're actively seeking contributors to expand language coverage!

- 🌟 **Continuous Updates**: We're committed to improving Open WebUI with regular updates, fixes, and new features.

- 🛡️ **Transparent Security Process**: Security reports are triaged, fixed, and published as open advisories through a documented responsible-disclosure process. See our [Security Policy](https://github.com/open-webui/open-webui/security).

Want to learn more about Open WebUI's features? Check out our [Open WebUI documentation](https://docs.openwebui.com/features) for a comprehensive overview!

## The Open WebUI Ecosystem 🌐

Open WebUI is the core, surrounded by companion apps and infrastructure that extend what your AI can do, where it can reach, and how you run it:

- ⚡ **Open Terminal** ([open-webui/open-terminal](https://github.com/open-webui/open-terminal)): A self-hosted computing environment that plugs into Open WebUI, giving the AI a place to write code, run it, read output, fix errors, and iterate inside the chat.

- 🔒 **Terminals** · Enterprise ([open-webui/terminals](https://github.com/open-webui/terminals)): Per-user isolated containers with separate credentials, resource limits, and network rules. Automatic lifecycle management on Docker or Kubernetes.

- 💻 **cptr** ([open-webui/computer](https://github.com/open-webui/computer)): A standalone, mobile-first computer and coding agent that runs on the machine you own. Files, terminal, and git in a browser tab, reachable from your phone. Connect it into Open WebUI as a model, or reach it from Telegram, WhatsApp, and more.

- 🔄 **oikb** ([open-webui/oikb](https://github.com/open-webui/oikb)): Feed your Knowledge Bases from 45+ sources (GitHub, Confluence, ServiceNow, Salesforce, Jira, Slack, SharePoint, Notion, and more), keeping the tools your team already uses continuously in sync.

- 🖥️ **Native Desktop App** ([open-webui/desktop](https://github.com/open-webui/desktop)): Run Open WebUI as a native app on macOS, Windows, and Linux. System-wide Spotlight chat bar with screenshot capture, push-to-talk voice, and optional fully-local inference via a built-in llama.cpp engine.

Want to learn more? Check out our [Open WebUI documentation](https://docs.openwebui.com) for more details!

---

We are incredibly grateful for the generous support of our sponsors. Their contributions help us to maintain and improve our project, ensuring we can continue to deliver quality work to our community. Thank you!
Expand Down Expand Up @@ -222,6 +248,10 @@ This project contains code under multiple licenses. The current codebase include
If you have any questions, suggestions, or need assistance, please open an issue or join our
[Open WebUI Discord community](https://discord.gg/5rJgQTnV4s) to connect with us! 🤝

## Security 🛡️

If you believe you've found a security vulnerability, or something that shouldn't be disclosed publicly, please [reach out confidentially through our responsible disclosure program on GitHub](https://github.com/open-webui/open-webui/security). We accept reports only through GitHub, not through any other platform. Thank you for helping us keep Open WebUI secure!

## Star History

<a href="https://star-history.com/#open-webui/open-webui&Date">
Expand Down
Loading
Loading