Originally created by @DeusMaximus on GitHub (Nov 7, 2025).
Check Existing Issues
I have searched for any existing and/or related issues.
I have searched for any existing and/or related discussions.
I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!).
I am using the latest version of Open WebUI.
Installation Method
Docker
Open WebUI Version
v0.6.36
Ollama Version (if applicable)
N/A
Operating System
Debian 13
Browser (if applicable)
Microsoft Edge, Google Chrome, tested in Incognito mode. Seems to be backend related.
Confirmation
I have read and followed all instructions in README.md.
I am using the latest version of both Open WebUI and Ollama.
I have included the browser console logs.
I have included the Docker container logs.
I have provided every relevant configuration, setting, and environment variable used in my setup.
I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
Start with the initial platform/version/OS and dependencies used,
Specify exact install/launch/configure commands,
List URLs visited, user input (incl. example values/emails/passwords if needed),
Describe all options and toggles enabled or changed,
Include any files or environmental changes,
Identify the expected and actual result at each stage,
Ensure any reasonably skilled user can follow and hit the same issue.
Expected Behavior
Expected to be able to edit existing model settings.
Actual Behavior
Blank area of the site where the model configuration was previously.
Steps to Reproduce
Navigate to Workspace > Models
Attempt to create or modify pre-existing model in Workspace
Blank screen in area where model existed previously.
Navigate to Admin panel > Settings > Models
Attempt to modify existing model configuration
Same blank screen in area where model configuration existed previously
Logs & Screenshots
From docker compose -f logs openwebui
(This occurs when attempting to edit a model in the admin panel)
openwebui | WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
openwebui |
openwebui | [notice] A new release of pip is available: 24.0 -> 25.3
openwebui | [notice] To update, run: pip install --upgrade pip
openwebui | 2025-11-07 06:39:47.710 | ERROR | open_webui.utils.plugin:load_tool_module_by_id:111 - Error loading module: gemini_flash_image: cannot import name 'load_b64_image_data' from 'open_webui.routers.images' (/app/backend/open_webui/routers/images.py)
openwebui | 2025-11-07 06:39:47.712 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.86.64.93:0 - "GET /api/v1/tools/ HTTP/1.1" 500
openwebui | Exception in ASGI application
openwebui | + Exception Group Traceback (most recent call last):
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 79, in collapse_excgroups
openwebui | | yield
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 183, in __call__
openwebui | | async with anyio.create_task_group() as task_group:
openwebui | | File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 781, in __aexit__
openwebui | | raise BaseExceptionGroup(
openwebui | | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
openwebui | +-+---------------- 1 ----------------
openwebui | | Traceback (most recent call last):
openwebui | | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
openwebui | | result = await app( # type: ignore[func-returns-value]
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
openwebui | | return await self.app(scope, receive, send)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1133, in __call__
openwebui | | await super().__call__(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__
openwebui | | await self.middleware_stack(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
openwebui | | await self.app(scope, receive, _send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/sessions.py", line 85, in __call__
openwebui | | await self.app(scope, receive, send_wrapper)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 85, in __call__
openwebui | | await self.app(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/main.py", line 1305, in inspect_websocket
openwebui | | return await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/main.py", line 1284, in check_url
openwebui | | response = await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/main.py", line 1270, in commit_session_after_request
openwebui | | response = await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
openwebui | | response = await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/main.py", line 1256, in dispatch
openwebui | | response = await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__
openwebui | | return await self._zstd(scope, receive, send)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__
openwebui | | await self.app(scope, receive, wrapper)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
openwebui | | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
openwebui | | await app(scope, receive, sender)
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
openwebui | | await self.app(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__
openwebui | | await self.middleware_stack(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 736, in app
openwebui | | await route.handle(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 290, in handle
openwebui | | await self.app(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 123, in app
openwebui | | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
openwebui | | await app(scope, receive, sender)
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 109, in app
openwebui | | response = await f(request)
openwebui | | ^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 387, in app
openwebui | | raw_response = await run_endpoint_function(
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
openwebui | | return await dependant.call(**values)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/routers/tools.py", line 61, in get_tools
openwebui | | tool_module = get_tool_module(request, tool.id)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/routers/tools.py", line 46, in get_tool_module
openwebui | | tool_module, _ = get_tool_module_from_cache(request, tool_id, load_from_db)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/utils/plugin.py", line 192, in get_tool_module_from_cache
openwebui | | tool_module, frontmatter = load_tool_module_by_id(tool_id, content)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/utils/plugin.py", line 113, in load_tool_module_by_id
openwebui | | raise e
openwebui | | File "/app/backend/open_webui/utils/plugin.py", line 101, in load_tool_module_by_id
openwebui | | exec(content, module.__dict__)
openwebui | | File "<string>", line 13, in <module>
openwebui | | ImportError: cannot import name 'load_b64_image_data' from 'open_webui.routers.images' (/app/backend/open_webui/routers/images.py)
openwebui | +------------------------------------
openwebui |
openwebui | During handling of the above exception, another exception occurred:
openwebui |
openwebui | Traceback (most recent call last):
openwebui | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
openwebui | result = await app( # type: ignore[func-returns-value]
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
openwebui | return await self.app(scope, receive, send)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1133, in __call__
openwebui | await super().__call__(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__
openwebui | await self.middleware_stack(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
openwebui | await self.app(scope, receive, _send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/sessions.py", line 85, in __call__
openwebui | await self.app(scope, receive, send_wrapper)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 85, in __call__
openwebui | await self.app(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/main.py", line 1305, in inspect_websocket
openwebui | return await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/main.py", line 1284, in check_url
openwebui | response = await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/main.py", line 1270, in commit_session_after_request
openwebui | response = await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
openwebui | response = await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/main.py", line 1256, in dispatch
openwebui | response = await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__
openwebui | return await self._zstd(scope, receive, send)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__
openwebui | await self.app(scope, receive, wrapper)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
openwebui | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
openwebui | await app(scope, receive, sender)
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
openwebui | await self.app(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__
openwebui | await self.middleware_stack(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 736, in app
openwebui | await route.handle(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 290, in handle
openwebui | await self.app(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 123, in app
openwebui | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
openwebui | await app(scope, receive, sender)
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 109, in app
openwebui | response = await f(request)
openwebui | ^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 387, in app
openwebui | raw_response = await run_endpoint_function(
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
openwebui | return await dependant.call(**values)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/routers/tools.py", line 61, in get_tools
openwebui | tool_module = get_tool_module(request, tool.id)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/routers/tools.py", line 46, in get_tool_module
openwebui | tool_module, _ = get_tool_module_from_cache(request, tool_id, load_from_db)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/utils/plugin.py", line 192, in get_tool_module_from_cache
openwebui | tool_module, frontmatter = load_tool_module_by_id(tool_id, content)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/utils/plugin.py", line 113, in load_tool_module_by_id
openwebui | raise e
openwebui | File "/app/backend/open_webui/utils/plugin.py", line 101, in load_tool_module_by_id
openwebui | exec(content, module.__dict__)
openwebui | File "<string>", line 13, in <module>
openwebui | ImportError: cannot import name 'load_b64_image_data' from 'open_webui.routers.images' (/app/backend/open_webui/routers/images.py)
Additional Information
Setup is as follows:
Open WebUI running on one machine with Caddy providing the SSL certificate for the internally resolved address via a DNS challenge. Setup was working until docker image for Open WebUI was updated (caddy stayed at the same version prior)
Another machine is running LiteLLM as a proxy, in order to track and enforce costs.
docker-compose.yml for Open WebUI and Caddy
version: "3.8"
services:
caddy:
# Build the custom image from the local Dockerfile
build:
context: .
dockerfile: Dockerfile
container_name: caddy
restart: unless-stopped
ports:
# HTTP
- "80:80"
# HTTPS
- "443:443"
environment:
# Pass the secrets from the .env file
- DOMAIN=${DOMAIN}
- CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
- CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}
volumes:
# Mount the Caddyfile
- ./Caddyfile:/etc/caddy/Caddyfile
# Persist Caddy's data (including SSL certificates)
- caddy_data:/data
networks:
- web
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
restart: unless-stopped
# Use the 'main' image which does not include Ollama
# No ports needed, Caddy will access it on the internal network
environment:
# OpenWebUI is served on 8080 internally
- PORT=8080
# Disable local Ollama (highly recommended for API-only use)
- ENABLE_OLLAMA_API=False
volumes:
# Persist OpenWebUI's data (chat history, settings, RAG files)
- openwebui_data:/app/backend/data
networks:
- web
# Define named volumes for persistence
volumes:
caddy_data:
openwebui_data:
# Define a custom bridge network for the services
networks:
web:
driver: bridge
Originally created by @DeusMaximus on GitHub (Nov 7, 2025).
### Check Existing Issues
- [x] I have searched for any existing and/or related issues.
- [x] I have searched for any existing and/or related discussions.
- [x] I have also searched in the CLOSED issues AND CLOSED discussions and found no related items (your issue might already be addressed on the development branch!).
- [x] I am using the latest version of Open WebUI.
### Installation Method
Docker
### Open WebUI Version
v0.6.36
### Ollama Version (if applicable)
N/A
### Operating System
Debian 13
### Browser (if applicable)
Microsoft Edge, Google Chrome, tested in Incognito mode. Seems to be backend related.
### Confirmation
- [x] I have read and followed all instructions in `README.md`.
- [x] I am using the latest version of **both** Open WebUI and Ollama.
- [x] I have included the browser console logs.
- [x] I have included the Docker container logs.
- [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.**
- [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
- [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps:
- Start with the initial platform/version/OS and dependencies used,
- Specify exact install/launch/configure commands,
- List URLs visited, user input (incl. example values/emails/passwords if needed),
- Describe all options and toggles enabled or changed,
- Include any files or environmental changes,
- Identify the expected and actual result at each stage,
- Ensure any reasonably skilled user can follow and hit the same issue.
### Expected Behavior
Expected to be able to edit existing model settings.
### Actual Behavior
Blank area of the site where the model configuration was previously.
### Steps to Reproduce
1. Navigate to Workspace > Models
2. Attempt to create or modify pre-existing model in Workspace
3. Blank screen in area where model existed previously.
4. Navigate to Admin panel > Settings > Models
5. Attempt to modify existing model configuration
6. Same blank screen in area where model configuration existed previously
### Logs & Screenshots
From docker compose -f logs openwebui
(This occurs when attempting to edit a model in the admin panel)
--
```
openwebui | WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
openwebui |
openwebui | [notice] A new release of pip is available: 24.0 -> 25.3
openwebui | [notice] To update, run: pip install --upgrade pip
openwebui | 2025-11-07 06:39:47.710 | ERROR | open_webui.utils.plugin:load_tool_module_by_id:111 - Error loading module: gemini_flash_image: cannot import name 'load_b64_image_data' from 'open_webui.routers.images' (/app/backend/open_webui/routers/images.py)
openwebui | 2025-11-07 06:39:47.712 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.86.64.93:0 - "GET /api/v1/tools/ HTTP/1.1" 500
openwebui | Exception in ASGI application
openwebui | + Exception Group Traceback (most recent call last):
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 79, in collapse_excgroups
openwebui | | yield
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 183, in __call__
openwebui | | async with anyio.create_task_group() as task_group:
openwebui | | File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 781, in __aexit__
openwebui | | raise BaseExceptionGroup(
openwebui | | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
openwebui | +-+---------------- 1 ----------------
openwebui | | Traceback (most recent call last):
openwebui | | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
openwebui | | result = await app( # type: ignore[func-returns-value]
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
openwebui | | return await self.app(scope, receive, send)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1133, in __call__
openwebui | | await super().__call__(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__
openwebui | | await self.middleware_stack(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
openwebui | | await self.app(scope, receive, _send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/sessions.py", line 85, in __call__
openwebui | | await self.app(scope, receive, send_wrapper)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 85, in __call__
openwebui | | await self.app(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/main.py", line 1305, in inspect_websocket
openwebui | | return await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/main.py", line 1284, in check_url
openwebui | | response = await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/main.py", line 1270, in commit_session_after_request
openwebui | | response = await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
openwebui | | response = await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | | with recv_stream, send_stream, collapse_excgroups():
openwebui | | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | | self.gen.throw(typ, value, traceback)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | | response = await self.dispatch_func(request, call_next)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/main.py", line 1256, in dispatch
openwebui | | response = await call_next(request)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | | raise app_exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__
openwebui | | return await self._zstd(scope, receive, send)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__
openwebui | | await self.app(scope, receive, wrapper)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
openwebui | | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
openwebui | | await app(scope, receive, sender)
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
openwebui | | await self.app(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__
openwebui | | await self.middleware_stack(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 736, in app
openwebui | | await route.handle(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 290, in handle
openwebui | | await self.app(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 123, in app
openwebui | | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openwebui | | raise exc
openwebui | | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
openwebui | | await app(scope, receive, sender)
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 109, in app
openwebui | | response = await f(request)
openwebui | | ^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 387, in app
openwebui | | raw_response = await run_endpoint_function(
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
openwebui | | return await dependant.call(**values)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/routers/tools.py", line 61, in get_tools
openwebui | | tool_module = get_tool_module(request, tool.id)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/routers/tools.py", line 46, in get_tool_module
openwebui | | tool_module, _ = get_tool_module_from_cache(request, tool_id, load_from_db)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/utils/plugin.py", line 192, in get_tool_module_from_cache
openwebui | | tool_module, frontmatter = load_tool_module_by_id(tool_id, content)
openwebui | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | | File "/app/backend/open_webui/utils/plugin.py", line 113, in load_tool_module_by_id
openwebui | | raise e
openwebui | | File "/app/backend/open_webui/utils/plugin.py", line 101, in load_tool_module_by_id
openwebui | | exec(content, module.__dict__)
openwebui | | File "<string>", line 13, in <module>
openwebui | | ImportError: cannot import name 'load_b64_image_data' from 'open_webui.routers.images' (/app/backend/open_webui/routers/images.py)
openwebui | +------------------------------------
openwebui |
openwebui | During handling of the above exception, another exception occurred:
openwebui |
openwebui | Traceback (most recent call last):
openwebui | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
openwebui | result = await app( # type: ignore[func-returns-value]
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
openwebui | return await self.app(scope, receive, send)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1133, in __call__
openwebui | await super().__call__(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__
openwebui | await self.middleware_stack(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
openwebui | await self.app(scope, receive, _send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/sessions.py", line 85, in __call__
openwebui | await self.app(scope, receive, send_wrapper)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 85, in __call__
openwebui | await self.app(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/main.py", line 1305, in inspect_websocket
openwebui | return await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/main.py", line 1284, in check_url
openwebui | response = await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/main.py", line 1270, in commit_session_after_request
openwebui | response = await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
openwebui | response = await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 182, in __call__
openwebui | with recv_stream, send_stream, collapse_excgroups():
openwebui | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
openwebui | self.gen.throw(typ, value, traceback)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 85, in collapse_excgroups
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 184, in __call__
openwebui | response = await self.dispatch_func(request, call_next)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/main.py", line 1256, in dispatch
openwebui | response = await call_next(request)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 159, in call_next
openwebui | raise app_exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 144, in coro
openwebui | await self.app(scope, receive_or_disconnect, send_no_error)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 92, in __call__
openwebui | return await self._zstd(scope, receive, send)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette_compress/_zstd_legacy.py", line 100, in __call__
openwebui | await self.app(scope, receive, wrapper)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
openwebui | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
openwebui | await app(scope, receive, sender)
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
openwebui | await self.app(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__
openwebui | await self.middleware_stack(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 736, in app
openwebui | await route.handle(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 290, in handle
openwebui | await self.app(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 123, in app
openwebui | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
openwebui | raise exc
openwebui | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
openwebui | await app(scope, receive, sender)
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 109, in app
openwebui | response = await f(request)
openwebui | ^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 387, in app
openwebui | raw_response = await run_endpoint_function(
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 288, in run_endpoint_function
openwebui | return await dependant.call(**values)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/routers/tools.py", line 61, in get_tools
openwebui | tool_module = get_tool_module(request, tool.id)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/routers/tools.py", line 46, in get_tool_module
openwebui | tool_module, _ = get_tool_module_from_cache(request, tool_id, load_from_db)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/utils/plugin.py", line 192, in get_tool_module_from_cache
openwebui | tool_module, frontmatter = load_tool_module_by_id(tool_id, content)
openwebui | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
openwebui | File "/app/backend/open_webui/utils/plugin.py", line 113, in load_tool_module_by_id
openwebui | raise e
openwebui | File "/app/backend/open_webui/utils/plugin.py", line 101, in load_tool_module_by_id
openwebui | exec(content, module.__dict__)
openwebui | File "<string>", line 13, in <module>
openwebui | ImportError: cannot import name 'load_b64_image_data' from 'open_webui.routers.images' (/app/backend/open_webui/routers/images.py)
```
### Additional Information
Setup is as follows:
Open WebUI running on one machine with Caddy providing the SSL certificate for the internally resolved address via a DNS challenge. Setup was working until docker image for Open WebUI was updated (caddy stayed at the same version prior)
Another machine is running LiteLLM as a proxy, in order to track and enforce costs.
docker-compose.yml for Open WebUI and Caddy
```
version: "3.8"
services:
caddy:
# Build the custom image from the local Dockerfile
build:
context: .
dockerfile: Dockerfile
container_name: caddy
restart: unless-stopped
ports:
# HTTP
- "80:80"
# HTTPS
- "443:443"
environment:
# Pass the secrets from the .env file
- DOMAIN=${DOMAIN}
- CLOUDFLARE_EMAIL=${CLOUDFLARE_EMAIL}
- CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}
volumes:
# Mount the Caddyfile
- ./Caddyfile:/etc/caddy/Caddyfile
# Persist Caddy's data (including SSL certificates)
- caddy_data:/data
networks:
- web
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
restart: unless-stopped
# Use the 'main' image which does not include Ollama
# No ports needed, Caddy will access it on the internal network
environment:
# OpenWebUI is served on 8080 internally
- PORT=8080
# Disable local Ollama (highly recommended for API-only use)
- ENABLE_OLLAMA_API=False
volumes:
# Persist OpenWebUI's data (chat history, settings, RAG files)
- openwebui_data:/app/backend/data
networks:
- web
# Define named volumes for persistence
volumes:
caddy_data:
openwebui_data:
# Define a custom bridge network for the services
networks:
web:
driver: bridge
```
GiteaMirror
added the bug label 2025-11-11 17:07:54 -06:00
This tool worked under my previous version (v0.6.3.4), but with the latest version it seems to break the ability to edit models. Removing this tool now allows me to edit models under Admin Panel, in addition to Workspace models.
@DeusMaximus commented on GitHub (Nov 7, 2025):
Managed to find the culprit.
When attempting to trial different methods for adding gemini/gemini-2.5-flash-image, I tested this tool out:
https://openwebui.com/t/david888/Nano_Banana
This tool worked under my previous version (v0.6.3.4), but with the latest version it seems to break the ability to edit models. Removing this tool now allows me to edit models under Admin Panel, in addition to Workspace models.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @DeusMaximus on GitHub (Nov 7, 2025).
Check Existing Issues
Installation Method
Docker
Open WebUI Version
v0.6.36
Ollama Version (if applicable)
N/A
Operating System
Debian 13
Browser (if applicable)
Microsoft Edge, Google Chrome, tested in Incognito mode. Seems to be backend related.
Confirmation
README.md.Expected Behavior
Expected to be able to edit existing model settings.
Actual Behavior
Blank area of the site where the model configuration was previously.
Steps to Reproduce
Logs & Screenshots
From docker compose -f logs openwebui
(This occurs when attempting to edit a model in the admin panel)
Additional Information
Setup is as follows:
Open WebUI running on one machine with Caddy providing the SSL certificate for the internally resolved address via a DNS challenge. Setup was working until docker image for Open WebUI was updated (caddy stayed at the same version prior)
Another machine is running LiteLLM as a proxy, in order to track and enforce costs.
docker-compose.yml for Open WebUI and Caddy
@DeusMaximus commented on GitHub (Nov 7, 2025):
Managed to find the culprit.
When attempting to trial different methods for adding gemini/gemini-2.5-flash-image, I tested this tool out:
https://openwebui.com/t/david888/Nano_Banana
This tool worked under my previous version (v0.6.3.4), but with the latest version it seems to break the ability to edit models. Removing this tool now allows me to edit models under Admin Panel, in addition to Workspace models.