Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
618 commits
Select commit Hold shift + click to select a range
d637c21
refac
tjbck Jul 24, 2026
5f6a9d1
refac
tjbck Jul 24, 2026
6ace7e5
i18n: add Slovenian language support (#26875)
Viktor1 Jul 24, 2026
1dc4fd3
fix(ui): hide redundant edit pencil on mobile in admin Models list (#…
silentoplayz Jul 24, 2026
799748b
refac
tjbck Jul 24, 2026
48f78ca
fix: prevent startup crash when function/tool has null user_id (#26850)
Classic298 Jul 24, 2026
9b635d8
fix: calendar attendee RSVP correctness — server-derived status and h…
Classic298 Jul 24, 2026
a35b37a
fix: keep chats shared with an admin readable when ENABLE_ADMIN_CHAT_…
Classic298 Jul 24, 2026
e212e3c
fix(ui): resolve workspace model ID to base model on delete from mode…
silentoplayz Jul 24, 2026
cea9912
refac
tjbck Jul 24, 2026
ff11ff5
refac
tjbck Jul 24, 2026
33cf3fb
refac
tjbck Jul 24, 2026
1f5b0d8
refac
tjbck Jul 24, 2026
7b12fd6
refac
tjbck Jul 24, 2026
ce831f7
refac
tjbck Jul 24, 2026
b6acd3c
fix: web speech STT repeating previous transcriptions and inserting t…
Classic298 Jul 24, 2026
212eec4
refac
tjbck Jul 24, 2026
bd5d7b2
refac
tjbck Jul 24, 2026
793a43d
refac
tjbck Jul 24, 2026
28bdcb0
refac
tjbck Jul 24, 2026
e398ba3
fix: don't seed non-persistent config keys (oauth.* with flag off) (#…
Classic298 Jul 24, 2026
585b704
fix: clear token cookie on 401 auth redirect to stop login flash loop…
Classic298 Jul 24, 2026
d7513e4
refac
tjbck Jul 24, 2026
b4d1379
refac
tjbck Jul 24, 2026
f89b501
fix: access-check note entries in get_accessible_folder_files (#26739)
Classic298 Jul 24, 2026
b9d7274
refac
tjbck Jul 24, 2026
18719fe
fix: malformed WEB_FETCH_FILTER_LIST entry blocking all web fetches (…
Classic298 Jul 24, 2026
f7e7f32
fix: honor Admin UI web loader settings in get_web_loader (#26749)
Classic298 Jul 24, 2026
fe4b319
fix: deny chained access to unregistered base models for non-admins (…
Classic298 Jul 24, 2026
300302d
refac
tjbck Jul 24, 2026
06d2189
fix(chat): keep sidebar chat selection in sync with the active chat (…
silentoplayz Jul 24, 2026
e32c674
docs: align security policy framing with project ownership (#27431)
Classic298 Jul 24, 2026
9d29393
i18n: add pt-BR translations for newly added UI items and consistency…
joaoback Jul 24, 2026
3110050
refac
tjbck Jul 24, 2026
d1aa812
i18n: complete de-DE translations (#27448)
Classic298 Jul 24, 2026
ef197de
fix: open settings deep links on client-side navigation and open Add …
silentoplayz Jul 26, 2026
65209b0
fix: enforce a single open chat hover preview across sidebar chat ite…
silentoplayz Jul 26, 2026
4d576c1
chore: remove no-op stopPropagation statement from folder title click…
silentoplayz Jul 26, 2026
29499cb
perf: dedupe folder refetches and chat-list sweeps on sidebar folder …
silentoplayz Jul 26, 2026
f517cc7
fix: apply the verified-user role gate to WebSocket authentication (#…
Classic298 Jul 26, 2026
4ac22b8
fix: don't wipe sidebar folder chat list when a refresh overlaps an i…
silentoplayz Jul 26, 2026
225e238
fix: only route PDFs and images to the PaddleOCR-VL loader (#27529)
Classic298 Jul 26, 2026
94b1b7e
fix: close Playwright pages and browser on failure in SafePlaywrightU…
Classic298 Jul 26, 2026
7effaa0
fix: name the switches in Admin Settings rows (WCAG 4.1.2, 1.3.1) (#2…
Classic298 Jul 26, 2026
a7a2c76
fix: give the rich text editor an accessible name (WCAG 4.1.2, 3.3.2)…
Classic298 Jul 26, 2026
2725ae6
fix: expose Checkbox as a checkbox with a name and state (WCAG 4.1.2)…
Classic298 Jul 26, 2026
65473b6
fix: stop Enter on Cancel from confirming ConfirmDialog (WCAG 3.2.2) …
Classic298 Jul 26, 2026
d3802f7
fix: make reasoning and details disclosures keyboard operable (WCAG 2…
Classic298 Jul 26, 2026
15f724b
fix: give SensitiveInput a unique default id (WCAG 1.3.1, 4.1.2) (#27…
Classic298 Jul 26, 2026
ba4c92c
fix: make sidebar section headers keyboard operable (WCAG 2.1.1, 4.1.…
Classic298 Jul 26, 2026
a0ee66c
fix: name the group permission switches (WCAG 4.1.2) (#27513)
Classic298 Jul 26, 2026
878ceba
fix(ui): persist ollama connection deletions immediately (#27483)
silentoplayz Jul 26, 2026
c882222
fix: verify chat ownership on /api/chat/completed and /api/chat/actio…
Classic298 Jul 26, 2026
421834b
refac
tjbck Jul 26, 2026
1e0ab84
fix: unshadow the time module so the web loader rate limiter can slee…
Classic298 Jul 26, 2026
3ce734c
fix: bump uvicorn to 0.51.0 to move off the legacy websocket implemen…
Classic298 Jul 26, 2026
076a84e
fix: enforce automation limits in the builtin automation tools (#27523)
Classic298 Jul 26, 2026
8c9c642
Update fi-FI translation.json (#27469)
Kylapaallikko Jul 26, 2026
202f47e
fix(ui): stop sidebar chat rows flickering while the pointer moves ac…
silentoplayz Jul 26, 2026
0671b7a
refac
tjbck Jul 26, 2026
7bfc4bb
refac
tjbck Jul 26, 2026
e3cce68
fix: gate placeholder contrast fix behind High Contrast Mode (#27555)
Classic298 Jul 26, 2026
1f0dc90
refac
tjbck Jul 26, 2026
0e0d083
refac
tjbck Jul 26, 2026
f2ff310
fix: gate gray-500 muted text contrast behind High Contrast Mode (#27…
Classic298 Jul 26, 2026
a15e44a
refac: use MilvusClient instead of deprecated ORM-style PyMilvus APIs…
Classic298 Jul 26, 2026
e140d8f
fix: scope timer cancellation to the timer's owner (#27472)
Classic298 Jul 26, 2026
527b0d3
fix(ui): stop the chat input attach menus from fetching twice on open…
silentoplayz Jul 26, 2026
c9c9783
fix(ui): keep dropdowns positioned and stable as their content resize…
silentoplayz Jul 26, 2026
18d004c
chore: drop python-jose, nothing imports it (#27444)
Classic298 Jul 26, 2026
9c352e3
i18n: align the pt-PT locale with European Portuguese conventions (#2…
imparpaulo01 Jul 26, 2026
fb1f1a3
perf: parse scraped web pages with lxml, not html.parser (#27439)
Classic298 Jul 26, 2026
771540f
feat: sortable title and updated at columns on the knowledge workspac…
silentoplayz Jul 26, 2026
301bf51
fix: resolve circular OpenAPI schema refs in tool server specs (#27413)
Classic298 Jul 26, 2026
dcc7fb1
refac
tjbck Jul 26, 2026
4856afc
refac
tjbck Jul 26, 2026
b9cfba6
chore: regenerate uv.lock (#27557)
Classic298 Jul 26, 2026
bc948f8
perf: parse scraped web pages off the event loop (#27446)
Classic298 Jul 26, 2026
0116c6e
perf: stop running chardet over entire uploaded files (#27445)
Classic298 Jul 26, 2026
50afbc5
fix: allow setting model order via MODEL_ORDER_LIST env var (#27420)
Classic298 Jul 26, 2026
453b9fb
refac
tjbck Jul 26, 2026
18ca190
fix: gate muted text contrast fix behind High Contrast Mode (#27554)
Classic298 Jul 26, 2026
71f8b6d
feat: add a master OAuth / OIDC enable toggle in Authentication setti…
silentoplayz Jul 26, 2026
db92ef2
fix: unarchive chats moved into folders and refresh sidebar folders a…
silentoplayz Jul 26, 2026
86bf927
fix(ui): stack automation modal footer on mobile (#27027)
silentoplayz Jul 26, 2026
79695a1
fix: persist modelIdx so duplicate side-by-side models don't collapse…
silentoplayz Jul 26, 2026
11d72c1
fix(ui): replace history entry on redirect so browser back navigation…
silentoplayz Jul 26, 2026
b81627b
refac
tjbck Jul 26, 2026
bda49cc
fix(ui): close sidebar on mobile when opening Calendar from user menu…
silentoplayz Jul 26, 2026
42ea8a5
refac
tjbck Jul 26, 2026
5efe095
feat: add OpenSERP self-hosted web search backend (#27437)
crustopher-lgtm Jul 26, 2026
df94268
refac
tjbck Jul 26, 2026
bef63a2
refac
tjbck Jul 26, 2026
69f8be4
fix: show download preparation toast and prevent duplicate zip jobs (…
Classic298 Jul 26, 2026
381149e
fix: persist filter outlet() changes to structured message output (#2…
Classic298 Jul 26, 2026
30be10f
feat: prevent duplicate auth form submissions while one is pending (#…
Classic298 Jul 26, 2026
99da232
fix: preserve chunk order when assembling multi-chunk transcriptions …
Classic298 Jul 26, 2026
c055203
fix: refresh OAuth session before the id_token expires (#27520)
Classic298 Jul 26, 2026
4650f64
fix: make admin user table sortable by keyboard (WCAG 2.1.1, 4.1.2) (…
Classic298 Jul 26, 2026
5b035ea
fix: let Select announce its selected value and open state (WCAG 2.5.…
Classic298 Jul 26, 2026
1ac8ef7
fix: gate the remaining text contrast failures behind High Contrast M…
Classic298 Jul 26, 2026
4f93c3e
fix: authorize before cancelling tasks in the chat delete endpoint (#…
Classic298 Jul 26, 2026
54f06d8
perf: build chat responses without deep-copying the blob through mode…
Classic298 Jul 26, 2026
94a60b0
refac
tjbck Jul 26, 2026
f798d05
refac
tjbck Jul 26, 2026
db5c092
refac
tjbck Jul 27, 2026
bab71ed
refac
tjbck Jul 27, 2026
d484a2a
refac
tjbck Jul 27, 2026
d2936c8
refac
tjbck Jul 27, 2026
b45c020
refac
tjbck Jul 27, 2026
f867825
refac
tjbck Jul 27, 2026
71c4da8
refac
tjbck Jul 27, 2026
1de36d6
refac
tjbck Jul 27, 2026
85c47fb
refac
tjbck Jul 27, 2026
0cbf337
refac
tjbck Jul 27, 2026
d14fddf
refac
tjbck Jul 27, 2026
d94d36a
refac
tjbck Jul 27, 2026
846ba80
refac
tjbck Jul 27, 2026
aadab2f
refac
tjbck Jul 27, 2026
fc4906c
refac
tjbck Jul 27, 2026
bf35f64
refac
tjbck Jul 27, 2026
8b206de
refac
tjbck Jul 27, 2026
95d590b
refac
tjbck Jul 27, 2026
ed663f1
refac
tjbck Jul 27, 2026
b7489bb
refac
tjbck Jul 27, 2026
3cd72ee
refac
tjbck Jul 27, 2026
f32b19c
feat: add {{USER_GROUPS}} and {{USER_GROUP_IDS}} placeholders for cus…
Classic298 Jul 27, 2026
2196b4e
perf: stop resolving DNS on the thread pool (add aiodns) (#27440)
Classic298 Jul 27, 2026
6f93ecd
refac
tjbck Jul 27, 2026
cb64068
feat: add default file upload mode user setting (#20900)
silentoplayz Jul 27, 2026
ba7c95f
refac
tjbck Jul 27, 2026
e5a08d5
refac
tjbck Jul 27, 2026
8ddf119
refac
tjbck Jul 27, 2026
4a7d4eb
refac
tjbck Jul 27, 2026
c727643
refac
tjbck Jul 27, 2026
e53ff57
refac
tjbck Jul 27, 2026
20647bd
chore: format
tjbck Jul 27, 2026
57e6042
refac
tjbck Jul 27, 2026
f21d794
fix: Set default Redis socket timeout to None (#27104)
EntropyYue Jul 27, 2026
55e0801
refac
tjbck Jul 27, 2026
8295f2d
chore: remove dead admin Analytics ModelUsage and UserUsage component…
silentoplayz Jul 27, 2026
41573d5
fix: require an authenticated user on the Ollama version route (#27199)
Classic298 Jul 27, 2026
085d11e
chore: drop redundant background repaints so surfaces inherit their p…
silentoplayz Jul 27, 2026
5c505c1
refac
tjbck Jul 27, 2026
1717b49
refac
tjbck Jul 27, 2026
dd86b98
refac
tjbck Jul 27, 2026
5dcca59
fix: route OAuth profile-picture fetch through the SSRF-safe session …
Classic298 Jul 27, 2026
e30ed01
perf: stream pure passthrough proxy responses by network chunk instea…
Classic298 Jul 27, 2026
b40b6fd
fix: reject backslash in the terminal proxy path sanitizer (#27198)
Classic298 Jul 27, 2026
de681aa
refac
tjbck Jul 27, 2026
6732852
refac
tjbck Jul 27, 2026
051a1f6
refac
tjbck Jul 27, 2026
7e96c53
feat: multiselect valve input type with static or dynamic options (#2…
Classic298 Jul 27, 2026
e8f2c12
refac
tjbck Jul 27, 2026
6379d37
fix: expose ConfirmDialog with dialog role and label its input (WCAG …
ProfessorCastillo Jul 27, 2026
89caa7c
refac
tjbck Jul 27, 2026
75e54bf
refac
tjbck Jul 27, 2026
def26ce
refac
tjbck Jul 27, 2026
cce3b68
fix: enforce a single open user profile preview across ProfilePreview…
silentoplayz Jul 27, 2026
8a90bf6
chore: format
tjbck Jul 27, 2026
067cf31
refac
tjbck Jul 27, 2026
bc600d3
fix: escape KaTeX render-error fallback to prevent XSS via {@html} (#…
Classic298 Jul 27, 2026
7801909
a11y
tjbck Jul 27, 2026
305880f
refac
tjbck Jul 27, 2026
915ef7d
fix: restrict folder deletion to the owner or an admin (#27003)
Classic298 Jul 27, 2026
d296852
perf: drop the full-payload deepcopy in the OpenAI to Ollama conversi…
Classic298 Jul 27, 2026
9562f1a
fix: honor grep -c and -l flags for piped input in kb_exec (#26721)
yuki4266 Jul 27, 2026
c05de13
fix: do not expose tool source code to read-only users (#27005)
Classic298 Jul 27, 2026
3fe829a
fix: strip model params for read-only callers in the model list endpo…
Classic298 Jul 27, 2026
f65f893
perf: stop refetching the model row and user groups in the completion…
Classic298 Jul 27, 2026
897d69a
fix: enforce feature permissions on the legacy chat-features block (i…
Classic298 Jul 27, 2026
8f9e939
fix(docker): make open_webui/static writable by an arbitrary UID (Ope…
sebdanielsson Jul 27, 2026
c4f5ac6
refac
tjbck Jul 27, 2026
304cbe4
refac
tjbck Jul 27, 2026
e17db99
fix: parse .msg uploads via unstructured instead of extract_msg (#26704)
Classic298 Jul 27, 2026
3492021
refac
tjbck Jul 27, 2026
6c7478c
fix: surface web search embedding failures in the chat UI instead of …
Classic298 Jul 27, 2026
3a9b9a1
fix: resolve terminal system_oauth token server-side instead of trust…
Classic298 Jul 27, 2026
6d4c02a
refac: owner-bind ephemeral web-search RAG collections (#26706)
Classic298 Jul 27, 2026
6c59ef3
refac
tjbck Jul 27, 2026
f91ac06
refac
tjbck Jul 27, 2026
d3cfcd8
fix: preserve system prompt across tool calls when memories are enabl…
Classic298 Jul 27, 2026
3fff80a
fix: resolve MCP OAuth authorize_url discovery and fail clearly (#266…
SNaytiP Jul 27, 2026
312d8a8
refac
tjbck Jul 27, 2026
8710c44
refac
tjbck Jul 27, 2026
707efea
fix: scope knowledge sync cleanup deletions to the target knowledge b…
Classic298 Jul 27, 2026
2e4c232
perf: update chat tags via the meta column instead of round-tripping …
Classic298 Jul 27, 2026
498cdab
refac
tjbck Jul 27, 2026
6aebfd8
refac
tjbck Jul 27, 2026
f578d8d
refac
tjbck Jul 27, 2026
98656b7
refac
tjbck Jul 27, 2026
e28b391
refac
tjbck Jul 27, 2026
76aae64
refac
tjbck Jul 27, 2026
9acbe3a
refac
tjbck Jul 27, 2026
d727ee4
refac
tjbck Jul 27, 2026
3fe0358
refac
tjbck Jul 27, 2026
12974c9
refac
tjbck Jul 27, 2026
0576e8e
refac
tjbck Jul 27, 2026
f140926
refac
tjbck Jul 27, 2026
8e74cac
refac
tjbck Jul 27, 2026
7d77efe
refac
tjbck Jul 27, 2026
ba556bd
refac
tjbck Jul 27, 2026
70549c5
refac
tjbck Jul 27, 2026
93a34bb
refac
tjbck Jul 27, 2026
1568868
refac
tjbck Jul 27, 2026
44f4f9d
refac
tjbck Jul 27, 2026
4c2d864
refac
tjbck Jul 27, 2026
5278eb9
fix: block external resource loading in Vega chart rendering to preve…
Classic298 Jul 27, 2026
69e449e
refac
tjbck Jul 27, 2026
bb928b0
fix: fetch the terminal system prompt per request (#27242)
Classic298 Jul 27, 2026
9707d3a
refac
tjbck Jul 27, 2026
71511cc
fix: make sidebar folder rows keyboard operable (WCAG 2.1.1, 4.1.2) (…
Classic298 Jul 27, 2026
f59d86a
refac
tjbck Jul 27, 2026
2f2bf38
refac
tjbck Jul 27, 2026
147c3b6
fix: mark the open chat with aria-current in the sidebar (WCAG 1.4.1,…
Classic298 Jul 27, 2026
3ab2026
fix: bound knowledge-search matching so one pattern cannot stall the …
Classic298 Jul 27, 2026
db2d248
refac
tjbck Jul 27, 2026
be1b811
refac
tjbck Jul 27, 2026
867006a
fix: keep admin access to connections without access grants when admi…
silentoplayz Jul 27, 2026
7537989
refac
tjbck Jul 27, 2026
602004d
refac
tjbck Jul 27, 2026
72fdf23
perf: optional orjson JSON codec behind ENABLE_ORJSON (#27583)
Classic298 Jul 27, 2026
7e31f64
refac
tjbck Jul 27, 2026
48ee357
refac
tjbck Jul 27, 2026
c4ae8c8
refac
tjbck Jul 27, 2026
b7394c6
refac
tjbck Jul 27, 2026
2d928df
refac
tjbck Jul 27, 2026
a9a3e5b
refac
tjbck Jul 27, 2026
e8fda1c
refac
tjbck Jul 27, 2026
11e61b6
refac
tjbck Jul 27, 2026
c182a95
refac
tjbck Jul 27, 2026
977c793
refac
tjbck Jul 27, 2026
8ab44ed
refac
tjbck Jul 27, 2026
4493b56
refac
tjbck Jul 27, 2026
4eab255
refac
tjbck Jul 27, 2026
56183fc
refac
tjbck Jul 27, 2026
b190dcf
refac
tjbck Jul 27, 2026
c4332be
refac
tjbck Jul 27, 2026
c004b4e
chore: format
tjbck Jul 27, 2026
50e050e
refac
tjbck Jul 27, 2026
3920660
refac
tjbck Jul 27, 2026
965ef90
chore: format
tjbck Jul 27, 2026
70c04eb
changelog: Update CHANGELOG.md (#27060)
Classic298 Jul 27, 2026
58dc251
refac
tjbck Jul 27, 2026
abc8889
refac
tjbck Jul 27, 2026
2beddbe
refac
tjbck Jul 27, 2026
faeba7c
refac
tjbck Jul 27, 2026
f9590b8
Merge pull request #27362 from open-webui/dev
tjbck Jul 27, 2026
483adf7
refac
tjbck Jul 27, 2026
01f4282
Merge pull request #27590 from open-webui/dev
tjbck Jul 27, 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
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ CORS_ALLOW_ORIGIN='*'
# Set to false to keep memory tools enabled without adding memory context to the system context.
ENABLE_MEMORY_SYSTEM_CONTEXT=true

# Set to false to disable workspace Tools and Functions.
ENABLE_PLUGINS=true

# For production you should set this to match the proxy configuration (127.0.0.1)
FORWARDED_ALLOW_IPS='*'

Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,17 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Prepare CI Dockerfile
run: |
awk '
/^FROM --platform=\$BUILDPLATFORM node:/ {
print
print "ENV NODE_OPTIONS=\"--max-old-space-size=12288\""
next
}
{ print }
' Dockerfile > "${RUNNER_TEMP}/Dockerfile"

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
Expand Down Expand Up @@ -115,6 +126,7 @@ jobs:
id: build
with:
context: .
file: ${{ runner.temp }}/Dockerfile
push: true
platforms: ${{ matrix.platform.arch }}
labels: ${{ steps.meta.outputs.labels }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/frontend.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ jobs:

- name: Production build
run: npm run build
env:
NODE_OPTIONS: --max-old-space-size=8192

# ── Vitest unit tests ────────────────────────────────────────────────────
unit-tests:
Expand Down
43 changes: 43 additions & 0 deletions .github/workflows/issue-label.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Issue Labeler

on:
issues:
types: [opened]

permissions:
issues: write

jobs:
label-bug-reports:
runs-on: ubuntu-latest
steps:
- name: Add "bug" label to unlabeled bug reports
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;

// Web-form submissions already carry the label from the issue template
if (issue.labels.some((label) => label.name === 'bug')) {
return;
}

const title = issue.title ?? '';
const body = issue.body ?? '';

// Freeform bug reports: "issue: ...", "bug: ...", "fix: ...", "[Bug] ...", "issue/UX: ..."
const bugLikeTitle = /^\s*\[?(bug|issue|fix)\]?\s*[:/\-]/i.test(title);

// API/CLI-created issues that reproduce the bug report form structure.
// Only headings distinctive to the bug form (both are required fields there) —
// generic headings like "Expected Behavior" also appear in freeform feature requests.
const bugFormBody = /###\s*(Installation Method|Open WebUI Version)/i.test(body);

if (bugLikeTitle || bugFormBody) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['bug']
});
}
290 changes: 290 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,17 @@ COPY --chown=$UID:$GID --from=build /app/package.json /app/package.json
# copy backend files
COPY --chown=$UID:$GID ./backend .

# The backend rewrites its bundled static assets (favicons, splash, manifest,
# loader.js, ...) under open_webui/static at startup. Make that directory
# writable by an arbitrary UID -- which under OpenShift's restricted SCC is
# always a member of GID 0 -- so those writes don't fail with EACCES and crash
# the boot log with "[Errno 13] Permission denied". `chmod -R g=u` mirrors the
# owner bits onto the group (the Red Hat arbitrary-UID idiom). This is applied
# unconditionally because it targets a directory the app writes on every start;
# the broader, opt-in USE_PERMISSION_HARDENING below covers the rest of /app.
RUN chgrp -R 0 /app/backend/open_webui/static && \
chmod -R g=u /app/backend/open_webui/static

EXPOSE 8080

HEALTHCHECK CMD curl --silent --fail http://localhost:${PORT:-8080}/health | jq -ne 'input.status == true' || exit 1
Expand Down
6 changes: 2 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,9 @@ Want to learn more about Open WebUI's features? Check out our [Open WebUI docume

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.
- 💻 **Open WebUI Computer** ([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.

- 🔒 **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.
- ⚡ **Open Terminal** and **Terminals (Enterprise)** ([open-webui/open-terminal](https://github.com/open-webui/open-terminal) & [open-webui/terminals](https://github.com/open-webui/terminals)): 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 gives you per-user isolated containers with separate credentials, resource limits, and network rules. Automatic lifecycle management on Docker or Kubernetes.

- 🔄 **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.

Expand Down
Loading
Loading