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.8.0
Ollama Version (if applicable)
No response
Operating System
Mac OS
Browser (if applicable)
No response
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
ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
INFO: Started server process [1]
INFO: Waiting for application startup.
2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: access_grant
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/main.py", line 616, in lifespan
install_tool_and_function_dependencies()
File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies
tool_list = Tools.get_tools()
^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 165, in get_tools
**self._to_tool_model(tool, db=db).model_dump(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model
tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants
return AccessGrants.get_grants_by_resource("tool", tool_id, db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource
.all()
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all
return self._iter().all() # type: ignore
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant
[SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at
FROM access_grant
WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?]
[parameters: ('tool', 'weather')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
Application startup failed. Exiting.
Actual Behavior
ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
INFO: Started server process [1]
INFO: Waiting for application startup.
2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: access_grant
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/main.py", line 616, in lifespan
install_tool_and_function_dependencies()
File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies
tool_list = Tools.get_tools()
^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 165, in get_tools
**self._to_tool_model(tool, db=db).model_dump(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model
tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants
return AccessGrants.get_grants_by_resource("tool", tool_id, db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource
.all()
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all
return self._iter().all() # type: ignore
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant
[SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at
FROM access_grant
WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?]
[parameters: ('tool', 'weather')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
Originally created by @hzr42strrs-hash on GitHub (Feb 13, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/21349
### 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.8.0
### Ollama Version (if applicable)
_No response_
### Operating System
Mac OS
### Browser (if applicable)
_No response_
### 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
ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
v0.8.0 - building the best AI user interface.
https://github.com/open-webui/open-webui
INFO: Started server process [1]
INFO: Waiting for application startup.
2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: access_grant
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/main.py", line 616, in lifespan
install_tool_and_function_dependencies()
File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies
tool_list = Tools.get_tools()
^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 165, in get_tools
**self._to_tool_model(tool, db=db).model_dump(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model
tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants
return AccessGrants.get_grants_by_resource("tool", tool_id, db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource
.all()
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all
return self._iter().all() # type: ignore
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant
[SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at
FROM access_grant
WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?]
[parameters: ('tool', 'weather')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
Application startup failed. Exiting.
### Actual Behavior
ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
v0.8.0 - building the best AI user interface.
https://github.com/open-webui/open-webui
INFO: Started server process [1]
INFO: Waiting for application startup.
2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: access_grant
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in __aenter__
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/main.py", line 616, in lifespan
install_tool_and_function_dependencies()
File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies
tool_list = Tools.get_tools()
^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 165, in get_tools
**self._to_tool_model(tool, db=db).model_dump(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model
tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants
return AccessGrants.get_grants_by_resource("tool", tool_id, db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource
.all()
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all
return self._iter().all() # type: ignore
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant
[SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at
FROM access_grant
WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?]
[parameters: ('tool', 'weather')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
Application startup failed. Exiting.
### Steps to Reproduce
read the update info
https://docs.openwebui.com/getting-started/updating/
and do it
then not very well
### Logs & Screenshots
<img width="1438" height="647" alt="Image" src="https://github.com/user-attachments/assets/7c5e18fa-1d3a-4470-a211-29880c065d71" />
### Additional Information
_No response_
GiteaMirror
added the bug label 2026-04-25 09:11:13 -05:00
As already written in the release notes: the chat Message migration (which you might also be missing) takes a very long time to migrate.
But either way you have to manually apply the Migrations then it will work fine!
May need to apply the other Migrations also.
Apply access grant migration first, then start up again and see if you're missing more Migrations and apply them also if needed.
<!-- gh-comment-id:3895333766 -->
@Classic298 commented on GitHub (Feb 13, 2026):
No such table access grant
This is the error.
One of these things happened
1. The table migrations legitimately did not apply during upgrade to you. Sometimes alembic may produce an error. Very rare but sure, could happen.
2. You accidentally stopped the upgrade process while the migration was happening.
3. You ran the upgrade on multiple workers simultaneously
In all scenarios: the fix is to apply the access grant migration manually
We have a docs page for that.
https://docs.openwebui.com/troubleshooting/multi-replica#updates-and-migrations
As already written in the release notes: the chat Message migration (which you might also be missing) takes a very long time to migrate.
But either way you have to manually apply the Migrations then it will work fine!
May need to apply the other Migrations also.
Apply access grant migration first, then start up again and see if you're missing more Migrations and apply them also if needed.
Hey, i am having the exact same issue and i cannot fix it. I am running owui on my docker swarm cluster but only one instance/replica, no multi-worker setup or anything else. Still yet owui keeps restarting and throwing that error over and over again.
I tried adding the "ENABLE_DB_MIGRATIONS=True" env variable to my compose, but even then it doesnt work. Just throws the same error again.
<!-- gh-comment-id:3895788664 -->
@Joly0 commented on GitHub (Feb 13, 2026):
Hey, i am having the exact same issue and i cannot fix it. I am running owui on my docker swarm cluster but only one instance/replica, no multi-worker setup or anything else. Still yet owui keeps restarting and throwing that error over and over again.
I tried adding the "ENABLE_DB_MIGRATIONS=True" env variable to my compose, but even then it doesnt work. Just throws the same error again.
@Joly0
that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations
<!-- gh-comment-id:3895805053 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@Joly0
that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations
https://docs.openwebui.com/troubleshooting/manual-database-migration
<!-- gh-comment-id:3895877648 -->
@Classic298 commented on GitHub (Feb 13, 2026):
Updated this page a little bit - hopefully the added details help you out. Should be fairly easy to apply the missing migrations.
[docs.openwebui.com/troubleshooting/manual-database-migration](https://docs.openwebui.com/troubleshooting/manual-database-migration)
root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: table chat_message already exists
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/bin/alembic", line 10, in <module>
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1047, in main
CommandLine(prog=prog).main(argv=argv)
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1037, in main
self.run_cmd(cfg, options)
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 971, in run_cmd
fn(
File "/usr/local/lib/python3.11/site-packages/alembic/command.py", line 483, in upgrade
script.run_env()
File "/usr/local/lib/python3.11/site-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/app/backend/open_webui/migrations/env.py", line 108, in <module>
run_migrations_online()
File "/app/backend/open_webui/migrations/env.py", line 102, in run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File "/usr/local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 969, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 626, in run_migrations
step.migration_fn(**kw)
File "/app/backend/open_webui/migrations/versions/8452d01d26d7_add_chat_message_table.py", line 27, in upgrade
op.create_table(
File "<string>", line 8, in create_table
File "<string>", line 3, in create_table
File "/usr/local/lib/python3.11/site-packages/alembic/operations/ops.py", line 1331, in create_table
return operations.invoke(op)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/operations/base.py", line 452, in invoke
return fn(self, operation)
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/operations/toimpl.py", line 140, in create_table
operations.impl.create_table(table, **kw)
File "/usr/local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 440, in create_table
self._exec(schema.CreateTable(table, **kw))
File "/usr/local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 256, in _exec
return conn.execute(construct, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/ddl.py", line 187, in _execute_on_connection
return connection._execute_ddl(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1530, in _execute_ddl
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table chat_message already exists
[SQL:
CREATE TABLE chat_message (
id TEXT NOT NULL,
chat_id TEXT NOT NULL,
user_id TEXT,
role TEXT NOT NULL,
parent_id TEXT,
content JSON,
output JSON,
model_id TEXT,
files JSON,
sources JSON,
embeds JSON,
done BOOLEAN,
status_history JSON,
error JSON,
usage JSON,
created_at BIGINT,
updated_at BIGINT,
PRIMARY KEY (id),
FOREIGN KEY(chat_id) REFERENCES chat (id) ON DELETE CASCADE
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
root@be65c577a5e9:/app/backend/open_webui#
Before that i ran the other alembic commands that are on that docs page and there is the other alembic command that also shows various errors:
root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head --sql | head -30
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Generating static SQL
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
CREATE TABLE alembic_version (
version_num VARCHAR(32) NOT NULL,
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
);
INFO [alembic.runtime.migration] Running upgrade -> 7e5b5dc7342b, init
-- Running upgrade -> 7e5b5dc7342b
Traceback (most recent call last):
File "/usr/local/bin/alembic", line 10, in <module>
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1047, in main
CommandLine(prog=prog).main(argv=argv)
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1037, in main
self.run_cmd(cfg, options)
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 971, in run_cmd
fn(
File "/usr/local/lib/python3.11/site-packages/alembic/command.py", line 483, in upgrade
script.run_env()
File "/usr/local/lib/python3.11/site-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/app/backend/open_webui/migrations/env.py", line 106, in <module>
run_migrations_offline()
File "/app/backend/open_webui/migrations/env.py", line 55, in run_migrations_offline
context.run_migrations()
File "<string>", line 8, in run_migrations
File "/usr/local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 969, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 626, in run_migrations
step.migration_fn(**kw)
File "/app/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py", line 26, in upgrade
existing_tables = set(get_existing_tables())
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/../open_webui/migrations/util.py", line 7, in get_existing_tables
inspector = Inspector.from_engine(con)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 2, in from_engine
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py", line 386, in warned
return fn(*args, **kwargs) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 309, in from_engine
return cls._construct(cls._init_legacy, bind)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 246, in _construct
init(self, bind)
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 253, in _init_legacy
self._init_engine(bind)
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 257, in _init_engine
engine.connect().close()
^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'MockConnection' object has no attribute 'close'
This is, as i said, running as docker and on sqlite3 database. I created a backup of the db and verified it is correct.
<!-- gh-comment-id:3895921395 -->
@Joly0 commented on GitHub (Feb 13, 2026):
Does not work:
```
root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: table chat_message already exists
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/bin/alembic", line 10, in <module>
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1047, in main
CommandLine(prog=prog).main(argv=argv)
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1037, in main
self.run_cmd(cfg, options)
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 971, in run_cmd
fn(
File "/usr/local/lib/python3.11/site-packages/alembic/command.py", line 483, in upgrade
script.run_env()
File "/usr/local/lib/python3.11/site-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/app/backend/open_webui/migrations/env.py", line 108, in <module>
run_migrations_online()
File "/app/backend/open_webui/migrations/env.py", line 102, in run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File "/usr/local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 969, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 626, in run_migrations
step.migration_fn(**kw)
File "/app/backend/open_webui/migrations/versions/8452d01d26d7_add_chat_message_table.py", line 27, in upgrade
op.create_table(
File "<string>", line 8, in create_table
File "<string>", line 3, in create_table
File "/usr/local/lib/python3.11/site-packages/alembic/operations/ops.py", line 1331, in create_table
return operations.invoke(op)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/operations/base.py", line 452, in invoke
return fn(self, operation)
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/operations/toimpl.py", line 140, in create_table
operations.impl.create_table(table, **kw)
File "/usr/local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 440, in create_table
self._exec(schema.CreateTable(table, **kw))
File "/usr/local/lib/python3.11/site-packages/alembic/ddl/impl.py", line 256, in _exec
return conn.execute(construct, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/ddl.py", line 187, in _execute_on_connection
return connection._execute_ddl(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1530, in _execute_ddl
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table chat_message already exists
[SQL:
CREATE TABLE chat_message (
id TEXT NOT NULL,
chat_id TEXT NOT NULL,
user_id TEXT,
role TEXT NOT NULL,
parent_id TEXT,
content JSON,
output JSON,
model_id TEXT,
files JSON,
sources JSON,
embeds JSON,
done BOOLEAN,
status_history JSON,
error JSON,
usage JSON,
created_at BIGINT,
updated_at BIGINT,
PRIMARY KEY (id),
FOREIGN KEY(chat_id) REFERENCES chat (id) ON DELETE CASCADE
)
]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
root@be65c577a5e9:/app/backend/open_webui#
```
Before that i ran the other alembic commands that are on that docs page and there is the other alembic command that also shows various errors:
```
root@be65c577a5e9:/app/backend/open_webui# alembic upgrade head --sql | head -30
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Generating static SQL
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
CREATE TABLE alembic_version (
version_num VARCHAR(32) NOT NULL,
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
);
INFO [alembic.runtime.migration] Running upgrade -> 7e5b5dc7342b, init
-- Running upgrade -> 7e5b5dc7342b
Traceback (most recent call last):
File "/usr/local/bin/alembic", line 10, in <module>
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1047, in main
CommandLine(prog=prog).main(argv=argv)
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 1037, in main
self.run_cmd(cfg, options)
File "/usr/local/lib/python3.11/site-packages/alembic/config.py", line 971, in run_cmd
fn(
File "/usr/local/lib/python3.11/site-packages/alembic/command.py", line 483, in upgrade
script.run_env()
File "/usr/local/lib/python3.11/site-packages/alembic/script/base.py", line 545, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 116, in load_python_file
module = load_module_py(module_id, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/alembic/util/pyfiles.py", line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/app/backend/open_webui/migrations/env.py", line 106, in <module>
run_migrations_offline()
File "/app/backend/open_webui/migrations/env.py", line 55, in run_migrations_offline
context.run_migrations()
File "<string>", line 8, in run_migrations
File "/usr/local/lib/python3.11/site-packages/alembic/runtime/environment.py", line 969, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/local/lib/python3.11/site-packages/alembic/runtime/migration.py", line 626, in run_migrations
step.migration_fn(**kw)
File "/app/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py", line 26, in upgrade
existing_tables = set(get_existing_tables())
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/../open_webui/migrations/util.py", line 7, in get_existing_tables
inspector = Inspector.from_engine(con)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 2, in from_engine
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py", line 386, in warned
return fn(*args, **kwargs) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 309, in from_engine
return cls._construct(cls._init_legacy, bind)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 246, in _construct
init(self, bind)
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 253, in _init_legacy
self._init_engine(bind)
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py", line 257, in _init_engine
engine.connect().close()
^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'MockConnection' object has no attribute 'close'
```
This is, as i said, running as docker and on sqlite3 database. I created a backup of the db and verified it is correct.
@Joly0
any of the three reasons i have given above
alembic had an issue during v0.8.0 installation or you accidentally ended open webui during migration or clustered setup...
in 99%+ of cases it will just work fine and run through automatically
<!-- gh-comment-id:3896014504 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@Joly0
any of the three reasons i have given above
alembic had an issue during v0.8.0 installation or you accidentally ended open webui during migration or clustered setup...
in 99%+ of cases it will just work fine and run through automatically
Ok, as for myself i can rule out multi-worker setup, as we dont use that and i also can rule out stopping owui mid-migration,s o i guess alembic just for some reason had a problem.
Whatever it was, owui seems to be running fine now on 0.8.0.
Thanks for the quick support, appreciate it :)
<!-- gh-comment-id:3896056364 -->
@Joly0 commented on GitHub (Feb 13, 2026):
Ok, as for myself i can rule out multi-worker setup, as we dont use that and i also can rule out stopping owui mid-migration,s o i guess alembic just for some reason had a problem.
Whatever it was, owui seems to be running fine now on 0.8.0.
Thanks for the quick support, appreciate it :)
will keep the issue open for now just so people can see it. will close it later, as not an open webui issue.
<!-- gh-comment-id:3896136082 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@itsHenry35 troubleshooting as above
will keep the issue open for now just so people can see it. will close it later, as not an open webui issue.
will keep the issue open for now just so people can see it. will close it later, as not an open webui issue.
Thanks, but I think it might be an open webui issue. Single Worker setup, never stopped or restarted the container while updating, it just fails. But thankfully, database migration works after i followed that docs.
root@f240826847e0:/app/backend/open_webui# alembic upgrade head
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: table chat_message already exists
<!-- gh-comment-id:3896299885 -->
@itsHenry35 commented on GitHub (Feb 13, 2026):
> [@itsHenry35](https://github.com/itsHenry35) troubleshooting as above
>
> will keep the issue open for now just so people can see it. will close it later, as not an open webui issue.
Thanks, but I think it might be an open webui issue. Single Worker setup, never stopped or restarted the container while updating, it just fails. But thankfully, database migration works after i followed that docs.
```
root@f240826847e0:/app/backend/open_webui# alembic upgrade head
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: table chat_message already exists
```
@itsHenry35 maybe the worker timed out or you went OOM
the chat message table is a very long migration, can take a long time.
And no, not an open-webui issue - as it is not something we can really fix or control. It is a normal migration. If the migration fails for whatever reason that is outside of our control - then it's not something we can fix.
if alembic doesnt complete, the troubleshooting has your back
<!-- gh-comment-id:3896321441 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@itsHenry35 maybe the worker timed out or you went OOM
the chat message table is a very long migration, can take a long time.
And no, not an open-webui issue - as it is not something we can really fix or control. It is a normal migration. If the migration fails for whatever reason that is outside of our control - then it's not something we can fix.
if alembic doesnt complete, the troubleshooting has your back
Same issue. The container restarted while Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table.
I performed a rollback alembic downgrade -1 and then alembic upgrade head.
Unfortunately there were a number of additional indexes that migration creates and the down-migration didn't remove, so I had to identify and manually drop those, and the chat_message table. Following that process I was able to successfully complete the upgrade.
NOTE: If you care about your chat messages, DO NOT run alembic stamp ... to skip the failed migration, you will lose data.
<!-- gh-comment-id:3898098011 -->
@themethod commented on GitHub (Feb 13, 2026):
Same issue. The container restarted while `Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table`.
I performed a rollback `alembic downgrade -1` and then `alembic upgrade head`.
Unfortunately there were a number of additional indexes that migration creates and the down-migration didn't remove, so I had to identify and manually drop those, and the chat_message table. Following that process I was able to successfully complete the upgrade.
NOTE: If you care about your chat messages, DO NOT run `alembic stamp ...` to skip the failed migration, you will lose data.
Just to note: I just performed an upgrade on our prod instance (thousands of users)
chat_message migration took 3-4 minutes (as the warning in the release notes warns about) but completed just fine and all other migrations also worked just fine and applied smoothly without issues.
If you are hitting any issues, you were unfortunately unlucky with alembic, or something or someone stopped the migration. Either an accidental cancel, or running out of memory? If anything kills the process during the migration, then you'll end up in that situation.
The container restarted
@themethod and why did it restart?
do you have any logs?
did your machine possibly kill it due to it going OOM?
the chat_message migration can take up some resources.
<!-- gh-comment-id:3898127423 -->
@Classic298 commented on GitHub (Feb 13, 2026):
Just to note: I just performed an upgrade on our prod instance (thousands of users)
chat_message migration took 3-4 minutes (as the warning in the release notes warns about) but completed just fine and all other migrations also worked just fine and applied smoothly without issues.
If you are hitting any issues, you were unfortunately unlucky with alembic, or something or someone stopped the migration. Either an accidental cancel, or running out of memory? If anything kills the process during the migration, then you'll end up in that situation.
> The container restarted
@themethod and why did it restart?
do you have any logs?
did your machine possibly kill it due to it going OOM?
the chat_message migration can take up some resources.
@Joly0
that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations
On a Raspberry Pi 4B 8GB RAM it crashes. I also tried to start a fresh new container and v8 would just crash after a few seconds.
These are the logs.
sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
root@b923acb1ddbd:/app/backend# pwd
/app/backend
root@b923acb1ddbd:/app/backend# cd open_webui/
root@b923acb1ddbd:/app/backend/open_webui# ls
__init__.py data main.py routers tasks.py
alembic.ini env.py migrations socket test
config.py functions.py models static tools
constants.py internal retrieval storage utils
root@b923acb1ddbd:/app/backend/open_webui# ls -la alembic.ini
-rw-r--r-- 1 root root 3494 Feb 12 23:42 alembic.ini
root@b923acb1ddbd:/app/backend/open_webui# export DATABASE_URL="sqlite:////app/backend/data/webui.db"
root@b923acb1ddbd:/app/backend/open_webui# export DATABASE_URL="postgresql://user:password@localhost:5432/open_webui_db"
root@b923acb1ddbd:/app/backend/open_webui# cat /app/backend/.webui_secret_key
cat: /app/backend/.webui_secret_key: No such file or directory
root@b923acb1ddbd:/app/backend/open_webui# cat /app/backend/data/.webui_secret_key
cat: /app/backend/data/.webui_secret_key: No such file or directory
root@b923acb1ddbd:/app/backend/open_webui# export WEBUI_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))")
root@b923acb1ddbd:/app/backend/open_webui# echo $WEBUI_SECRET_KEY > /app/backend/.webui_secret_key
root@b923acb1ddbd:/app/backend/open_webui# echo "DATABASE_URL: $DATABASE_URL"
DATABASE_URL: postgresql://user:password@localhost:5432/open_webui_db
root@b923acb1ddbd:/app/backend/open_webui# echo "WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY:0:10}..."
WEBUI_SECRET_KEY: 8fa622fcdc...
root@b923acb1ddbd:/app/backend/open_webui#
root@b923acb1ddbd:/app/backend/open_webui# alembic current -v
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic heads
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic history
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic upgrade head --sql | head -30
root@b923acb1ddbd:/app/backend/open_webui# alembic branches
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic downgrade -1
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui#
exit
<!-- gh-comment-id:3898342577 -->
@olegbilovus commented on GitHub (Feb 13, 2026):
> @Joly0
> that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations
>
> https://docs.openwebui.com/troubleshooting/manual-database-migration
On a Raspberry Pi 4B 8GB RAM it crashes. I also tried to start a fresh new container and v8 would just crash after a few seconds.
These are the logs.
```
sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
root@b923acb1ddbd:/app/backend# pwd
/app/backend
root@b923acb1ddbd:/app/backend# cd open_webui/
root@b923acb1ddbd:/app/backend/open_webui# ls
__init__.py data main.py routers tasks.py
alembic.ini env.py migrations socket test
config.py functions.py models static tools
constants.py internal retrieval storage utils
root@b923acb1ddbd:/app/backend/open_webui# ls -la alembic.ini
-rw-r--r-- 1 root root 3494 Feb 12 23:42 alembic.ini
root@b923acb1ddbd:/app/backend/open_webui# export DATABASE_URL="sqlite:////app/backend/data/webui.db"
root@b923acb1ddbd:/app/backend/open_webui# export DATABASE_URL="postgresql://user:password@localhost:5432/open_webui_db"
root@b923acb1ddbd:/app/backend/open_webui# cat /app/backend/.webui_secret_key
cat: /app/backend/.webui_secret_key: No such file or directory
root@b923acb1ddbd:/app/backend/open_webui# cat /app/backend/data/.webui_secret_key
cat: /app/backend/data/.webui_secret_key: No such file or directory
root@b923acb1ddbd:/app/backend/open_webui# export WEBUI_SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))")
root@b923acb1ddbd:/app/backend/open_webui# echo $WEBUI_SECRET_KEY > /app/backend/.webui_secret_key
root@b923acb1ddbd:/app/backend/open_webui# echo "DATABASE_URL: $DATABASE_URL"
DATABASE_URL: postgresql://user:password@localhost:5432/open_webui_db
root@b923acb1ddbd:/app/backend/open_webui# echo "WEBUI_SECRET_KEY: ${WEBUI_SECRET_KEY:0:10}..."
WEBUI_SECRET_KEY: 8fa622fcdc...
root@b923acb1ddbd:/app/backend/open_webui#
root@b923acb1ddbd:/app/backend/open_webui# alembic current -v
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic heads
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic history
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic upgrade head --sql | head -30
root@b923acb1ddbd:/app/backend/open_webui# alembic branches
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui# alembic downgrade -1
Illegal instruction (core dumped)
root@b923acb1ddbd:/app/backend/open_webui#
exit
```
@olegbilovus by any chance, are you running OOM? Any other logs you can give us?
<!-- gh-comment-id:3898360062 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus by any chance, are you running OOM? Any other logs you can give us?
@olegbilovus by any chance, are you running OOM? Any other logs you can give us?
Memory is fine, I have more than half of it free and have been running openwebui for almost 6 month. I do not use Ollama locally but OpenAI API.
I downgrade to v0.7.2 and it works fine.
If I try to run v0.8 it gives me error 132. This is what I get in the terminal:
sudo docker run --rm -it -v .:/app/backend/data -p 8011:8080 ghcr.io/open-webui/open-webui:latest
Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
Generating WEBUI_SECRET_KEY
Loading WEBUI_SECRET_KEY from .webui_secret_key
If there are specific flags or env vars I can add for a more verbose logs, let me know amd I can share the logs.
<!-- gh-comment-id:3898415499 -->
@olegbilovus commented on GitHub (Feb 13, 2026):
> @olegbilovus by any chance, are you running OOM? Any other logs you can give us?
Memory is fine, I have more than half of it free and have been running openwebui for almost 6 month. I do not use Ollama locally but OpenAI API.
I downgrade to v0.7.2 and it works fine.
If I try to run v0.8 it gives me error 132. This is what I get in the terminal:
```
sudo docker run --rm -it -v .:/app/backend/data -p 8011:8080 ghcr.io/open-webui/open-webui:latest
Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
Generating WEBUI_SECRET_KEY
Loading WEBUI_SECRET_KEY from .webui_secret_key
```
If I run `echo $?` it gives me `132`.
This is my docker-compose:
```
services:
open-webui:
image: ghcr.io/open-webui/open-webui:latest
container_name: open-webui
volumes:
- /path/to/data/folder:/app/backend/data
# ports:
# - 8011:8080
networks:
- open-webui
restart: always
healthcheck:
test:
- CMD
- curl
- -f
- http://localhost:8080/health
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
environment:
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- ENABLE_SIGNUP=false
- ENABLE_OLLAMA_API=false
- ENABLE_CODE_EXECUTION=false
- ENABLE_CODE_INTERPRETER=false
networks:
open-webui:
name: open-webui
```
If there are specific flags or env vars I can add for a more verbose logs, let me know amd I can share the logs.
@olegbilovus This is not a migration issue like the other people here in the thread were posting - your problem is an ARM CPU instruction incompatibility.
Exit code 132 = SIGILL (Illegal Instruction). This means a native binary dependency in v0.8.0 is compiled with ARM extensions that your Raspberry Pi 4's Cortex-A72 processor doesn't support.
This has happened before with Open WebUI on Raspberry Pi - onnxruntime is the most common culprit. v0.8.0 ships nnxruntime==1.24.1, and the pre-built aarch64 wheels on PyPI often include FP16/ARMv8.2-A instructions that the RPi 4 (ARMv8.0-A) can't execute.
To confirm this diagnosis, you can run inside the container: python3 -c "import onnxruntime"
If that crashes with "Illegal instruction", that's your culprit.
As a workaround, you can try:
Enter the container: docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
If onnxruntime isn't the sole offender, other candidates to check the same way are chromadb and opencv-python-headless.
This is a known limitation of running on Raspberry Pi — native binary packages sometimes use newer ARM instruction sets than what the RPi 4 supports.
<!-- gh-comment-id:3898450205 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus This is not a migration issue like the other people here in the thread were posting - your problem is an ARM CPU instruction incompatibility.
Exit code 132 = SIGILL (Illegal Instruction). This means a native binary dependency in v0.8.0 is compiled with ARM extensions that your Raspberry Pi 4's Cortex-A72 processor doesn't support.
This has happened before with Open WebUI on Raspberry Pi - onnxruntime is the most common culprit. v0.8.0 ships nnxruntime==1.24.1, and the pre-built aarch64 wheels on PyPI often include FP16/ARMv8.2-A instructions that the RPi 4 (ARMv8.0-A) can't execute.
To confirm this diagnosis, you can run inside the container:
`python3 -c "import onnxruntime"`
If that crashes with "Illegal instruction", that's your culprit.
As a workaround, you can try:
1. Enter the container: docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
2. Downgrade onnxruntime: pip install onnxruntime==1.20.1
3. Then try starting Open WebUI
If onnxruntime isn't the sole offender, other candidates to check the same way are chromadb and opencv-python-headless.
This is a known limitation of running on Raspberry Pi — native binary packages sometimes use newer ARM instruction sets than what the RPi 4 supports.
@olegbilovus Thanks for confirming, that rules out onnxruntime.
Exit code 132 = SIGILL (Illegal Instruction), meaning a native binary dependency is using CPU instructions your Raspberry Pi 4's Cortex-A72 (ARMv8.0-A) doesn't support. This is NOT a migration issue, it's a binary compatibility problem.
Since you can bash into the container, could you run these one at a time to find which import crashes?
Whichever one crashes with "Illegal instruction" is the culprit. This will help us narrow down which specific package needs a version pin for ARM compatibility (similar to how pyarrow was pinned to 20.0.0 for RPi in the past).
<!-- gh-comment-id:3898481075 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus Thanks for confirming, that rules out onnxruntime.
Exit code 132 = SIGILL (Illegal Instruction), meaning a native binary dependency is using CPU instructions your Raspberry Pi 4's Cortex-A72 (ARMv8.0-A) doesn't support. This is NOT a migration issue, it's a binary compatibility problem.
Since you can bash into the container, could you run these one at a time to find which import crashes?
python3 -c "import torch"
python3 -c "import cv2"
python3 -c "import chromadb"
python3 -c "import sentence_transformers"
python3 -c "import numpy"
python3 -c "import cryptography"
python3 -c "import rapidocr_onnxruntime"
python3 -c "import pyarrow"
python3 -c "from open_webui.env import DATABASE_URL"
Whichever one crashes with "Illegal instruction" is the culprit. This will help us narrow down which specific package needs a version pin for ARM compatibility (similar to how pyarrow was pinned to 20.0.0 for RPi in the past).
The full list to try if all of the above worked: https://github.com/open-webui/open-webui/pull/21261/changes
Torch is not version-pinned in the Docker image - it's installed with "pip3 install torch --index-url https://download.pytorch.org/whl/cpu" (no version pin), so whatever version is latest on PyTorch's CPU index at image build time is what you get. This is why v0.7.2 worked but v0.8.0 doesn't - PyTorch likely updated their aarch64 wheels between builds.
Can you check the installed version?
pip show torch
And try downgrading to see if an older version works:
(adjust the version to whatever worked in your v0.7.2 container — you can check by running "pip show torch" inside a v0.7.2 container for comparison)
If a specific older version works, we may need to pin it for ARM compatibility, similar to the existing pyarrow pin.
Tell us which version works and we can pin it!
<!-- gh-comment-id:3898529506 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus Confirmed: torch is the root cause.
Torch is not version-pinned in the Docker image - it's installed with "pip3 install torch --index-url https://download.pytorch.org/whl/cpu" (no version pin), so whatever version is latest on PyTorch's CPU index at image build time is what you get. This is why v0.7.2 worked but v0.8.0 doesn't - PyTorch likely updated their aarch64 wheels between builds.
Can you check the installed version?
`pip show torch`
And try downgrading to see if an older version works:
`pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu torch==2.6.0`
(adjust the version to whatever worked in your v0.7.2 container — you can check by running "pip show torch" inside a v0.7.2 container for comparison)
If a specific older version works, we may need to pin it for ARM compatibility, similar to the existing pyarrow pin.
Tell us which version works and we can pin it!
@olegbilovus That confirms it. PyTorch 2.10.0 (shipped in the v0.8.0 Docker image) uses ARM instructions not supported by the RPi 4's Cortex-A72. PyTorch 2.9.1 (in v0.7.2) worked fine.
Can you try this workaround inside the v0.8.0 container?
If that works, we know pinning torch to <=2.9.1 for ARM builds would fix this.
<!-- gh-comment-id:3898606855 -->
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus That confirms it. PyTorch 2.10.0 (shipped in the v0.8.0 Docker image) uses ARM instructions not supported by the RPi 4's Cortex-A72. PyTorch 2.9.1 (in v0.7.2) worked fine.
Can you try this workaround inside the v0.8.0 container?
`pip install torch==2.9.1+cpu torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu`
Then try starting Open WebUI:
`bash start.sh`
If that works, we know pinning torch to <=2.9.1 for ARM builds would fix this.
sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
root@7bf64c09d2a2:/app/backend# pip install torch==2.9.1+cpu torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
Looking in indexes: https://download.pytorch.org/whl/cpu
Collecting torch==2.9.1+cpu
Downloading https://download.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (29 kB)
Requirement already satisfied: torchvision in /usr/local/lib/python3.11/site-packages (0.25.0+cpu)
Requirement already satisfied: torchaudio in /usr/local/lib/python3.11/site-packages (2.10.0+cpu)
Requirement already satisfied: filelock in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.20.0)
Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (4.15.0)
Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (1.14.0)
Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.6.1)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.1.6)
Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (2025.3.0)
Requirement already satisfied: numpy in /usr/local/lib/python3.11/site-packages (from torchvision) (2.3.5)
INFO: pip is looking at multiple versions of torchvision to determine which version is compatible with other requirements. This could take a while.
Collecting torchvision
Downloading https://download.pytorch.org/whl/cpu/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (5.9 kB)
Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.11/site-packages (from torchvision) (12.1.0)
INFO: pip is looking at multiple versions of torchaudio to determine which version is compatible with other requirements. This could take a while.
Collecting torchaudio
Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.10.0-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (6.9 kB)
Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (6.9 kB)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/site-packages (from sympy>=1.13.3->torch==2.9.1+cpu) (1.3.0)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/site-packages (from jinja2->torch==2.9.1+cpu) (2.1.5)
Downloading https://download.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl (104.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━ 104.2/104.2 MB 4.5 MB/s eta 0:00:00
Downloading https://download.pytorch.org/whl/cpu/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl (2.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4/2.4 MB 6.5 MB/s eta 0:00:00
Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl (475 kB)
━━━━━━━━━━━━━━━━━━━━━━━ 475.7/475.7 kB 3.4 MB/s eta 0:00:00
Installing collected packages: torch, torchvision, torchaudio
Attempting uninstall: torch
Found existing installation: torch 2.10.0+cpu
Uninstalling torch-2.10.0+cpu:
Successfully uninstalled torch-2.10.0+cpu
Attempting uninstall: torchvision
Found existing installation: torchvision 0.25.0+cpu
Uninstalling torchvision-0.25.0+cpu:
Successfully uninstalled torchvision-0.25.0+cpu
Attempting uninstall: torchaudio
Found existing installation: torchaudio 2.10.0+cpu
Uninstalling torchaudio-2.10.0+cpu:
Successfully uninstalled torchaudio-2.10.0+cpu
Successfully installed torch-2.9.1+cpu torchaudio-2.9.1 torchvision-0.24.1
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
root@7bf64c09d2a2:/app/backend# bash start.sh
Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
Generating WEBUI_SECRET_KEY
Loading WEBUI_SECRET_KEY from .webui_secret_key
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade c440947495f3 -> 374d2f66af06, Add prompt history table
INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
INFO [alembic.runtime.migration] Running upgrade 8452d01d26d7 -> f1e2d3c4b5a6, Add access_grant table
INFO [alembic.runtime.migration] Running upgrade f1e2d3c4b5a6 -> a1b2c3d4e5f6, Add skill table
WARNI [open_webui.env]
WARNING: CORS_ALLOW_ORIGIN IS SET TO '*' - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS.
WARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
v0.8.0 - building the best AI user interface.
https://github.com/open-webui/open-webui
Fetching 30 files: 100%|████| 30/30 [00:00<00:00, 8189.87it/s]
Download complete: : 0.00B [00:00, ?B/s] , ?it/s]
Loading weights: 100%|█| 103/103 [00:00<00:00, 345.96it/s, Mat
BertModel LOAD REPORT from: /app/backend/data/cache/embedding/models/models--sentence-transformers--all-MiniLM-L6-v2/snapshots/c9745ed1d9f207416be6d2e6f8de32d1f16199bf
Key | Status | |
------------------------+------------+--+-
embeddings.position_ids | UNEXPECTED | |
Notes:
- UNEXPECTED :can be ignored when loading from different task/architecture; not ok if you expect identical arch.
INFO: Started server process [71]
INFO: Waiting for application startup.
2026-02-13 18:21:23.119 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 18:21:23.121 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
2026-02-13 18:21:23.177 | INFO | open_webui.utils.plugin:install_frontmatter_requirements:423 - No requirements found in frontmatter.
<!-- gh-comment-id:3898688536 -->
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298 it works.
```
sudo docker run --rm -it -v .:/app/backend/data --entrypoint /bin/bash ghcr.io/open-webui/open-webui:latest
root@7bf64c09d2a2:/app/backend# pip install torch==2.9.1+cpu torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
Looking in indexes: https://download.pytorch.org/whl/cpu
Collecting torch==2.9.1+cpu
Downloading https://download.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (29 kB)
Requirement already satisfied: torchvision in /usr/local/lib/python3.11/site-packages (0.25.0+cpu)
Requirement already satisfied: torchaudio in /usr/local/lib/python3.11/site-packages (2.10.0+cpu)
Requirement already satisfied: filelock in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.20.0)
Requirement already satisfied: typing-extensions>=4.10.0 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (4.15.0)
Requirement already satisfied: sympy>=1.13.3 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (1.14.0)
Requirement already satisfied: networkx>=2.5.1 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.6.1)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (3.1.6)
Requirement already satisfied: fsspec>=0.8.5 in /usr/local/lib/python3.11/site-packages (from torch==2.9.1+cpu) (2025.3.0)
Requirement already satisfied: numpy in /usr/local/lib/python3.11/site-packages (from torchvision) (2.3.5)
INFO: pip is looking at multiple versions of torchvision to determine which version is compatible with other requirements. This could take a while.
Collecting torchvision
Downloading https://download.pytorch.org/whl/cpu/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (5.9 kB)
Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.11/site-packages (from torchvision) (12.1.0)
INFO: pip is looking at multiple versions of torchaudio to determine which version is compatible with other requirements. This could take a while.
Collecting torchaudio
Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.10.0-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (6.9 kB)
Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl.metadata (6.9 kB)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.11/site-packages (from sympy>=1.13.3->torch==2.9.1+cpu) (1.3.0)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.11/site-packages (from jinja2->torch==2.9.1+cpu) (2.1.5)
Downloading https://download.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp311-cp311-manylinux_2_28_aarch64.whl (104.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━ 104.2/104.2 MB 4.5 MB/s eta 0:00:00
Downloading https://download.pytorch.org/whl/cpu/torchvision-0.24.1-cp311-cp311-manylinux_2_28_aarch64.whl (2.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4/2.4 MB 6.5 MB/s eta 0:00:00
Downloading https://download.pytorch.org/whl/cpu/torchaudio-2.9.1-cp311-cp311-manylinux_2_28_aarch64.whl (475 kB)
━━━━━━━━━━━━━━━━━━━━━━━ 475.7/475.7 kB 3.4 MB/s eta 0:00:00
Installing collected packages: torch, torchvision, torchaudio
Attempting uninstall: torch
Found existing installation: torch 2.10.0+cpu
Uninstalling torch-2.10.0+cpu:
Successfully uninstalled torch-2.10.0+cpu
Attempting uninstall: torchvision
Found existing installation: torchvision 0.25.0+cpu
Uninstalling torchvision-0.25.0+cpu:
Successfully uninstalled torchvision-0.25.0+cpu
Attempting uninstall: torchaudio
Found existing installation: torchaudio 2.10.0+cpu
Uninstalling torchaudio-2.10.0+cpu:
Successfully uninstalled torchaudio-2.10.0+cpu
Successfully installed torch-2.9.1+cpu torchaudio-2.9.1 torchvision-0.24.1
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
root@7bf64c09d2a2:/app/backend# bash start.sh
Loading WEBUI_SECRET_KEY from file, not provided as an environment variable.
Generating WEBUI_SECRET_KEY
Loading WEBUI_SECRET_KEY from .webui_secret_key
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade c440947495f3 -> 374d2f66af06, Add prompt history table
INFO [alembic.runtime.migration] Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table
INFO [alembic.runtime.migration] Running upgrade 8452d01d26d7 -> f1e2d3c4b5a6, Add access_grant table
INFO [alembic.runtime.migration] Running upgrade f1e2d3c4b5a6 -> a1b2c3d4e5f6, Add skill table
WARNI [open_webui.env]
WARNING: CORS_ALLOW_ORIGIN IS SET TO '*' - NOT RECOMMENDED FOR PRODUCTION DEPLOYMENTS.
WARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
v0.8.0 - building the best AI user interface.
https://github.com/open-webui/open-webui
Fetching 30 files: 100%|████| 30/30 [00:00<00:00, 8189.87it/s]
Download complete: : 0.00B [00:00, ?B/s] , ?it/s]
Loading weights: 100%|█| 103/103 [00:00<00:00, 345.96it/s, Mat
BertModel LOAD REPORT from: /app/backend/data/cache/embedding/models/models--sentence-transformers--all-MiniLM-L6-v2/snapshots/c9745ed1d9f207416be6d2e6f8de32d1f16199bf
Key | Status | |
------------------------+------------+--+-
embeddings.position_ids | UNEXPECTED | |
Notes:
- UNEXPECTED :can be ignored when loading from different task/architecture; not ok if you expect identical arch.
INFO: Started server process [71]
INFO: Waiting for application startup.
2026-02-13 18:21:23.119 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 18:21:23.121 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
2026-02-13 18:21:23.177 | INFO | open_webui.utils.plugin:install_frontmatter_requirements:423 - No requirements found in frontmatter.
```
Thanks for confirming. We will pin the version and then it will be fixed for all raspberry pi users from 0.8.1 onwards
<!-- gh-comment-id:3898761136 -->
@Classic298 commented on GitHub (Feb 13, 2026):
Thanks for confirming. We will pin the version and then it will be fixed for all raspberry pi users from 0.8.1 onwards
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 @hzr42strrs-hash on GitHub (Feb 13, 2026).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/21349
Check Existing Issues
Installation Method
Docker
Open WebUI Version
v0.8.0
Ollama Version (if applicable)
No response
Operating System
Mac OS
Browser (if applicable)
No response
Confirmation
README.md.Expected Behavior
ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
v0.8.0 - building the best AI user interface.
https://github.com/open-webui/open-webui
INFO: Started server process [1]
INFO: Waiting for application startup.
2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: access_grant
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/main.py", line 616, in lifespan
install_tool_and_function_dependencies()
File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies
tool_list = Tools.get_tools()
^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 165, in get_tools
**self._to_tool_model(tool, db=db).model_dump(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model
tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants
return AccessGrants.get_grants_by_resource("tool", tool_id, db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource
.all()
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all
return self._iter().all() # type: ignore
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant
[SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at
FROM access_grant
WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?]
[parameters: ('tool', 'weather')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
Application startup failed. Exiting.
Actual Behavior
ARNI [langchain_community.utils.user_agent] USER_AGENT environment variable not set, consider setting it to identify your requests.
██████╗ ██████╗ ███████╗███╗ ██╗ ██╗ ██╗███████╗██████╗ ██╗ ██╗██╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██║ ██║██╔════╝██╔══██╗██║ ██║██║
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ █╗ ██║█████╗ ██████╔╝██║ ██║██║
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║███╗██║██╔══╝ ██╔══██╗██║ ██║██║
╚██████╔╝██║ ███████╗██║ ╚████║ ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝
v0.8.0 - building the best AI user interface.
https://github.com/open-webui/open-webui
INFO: Started server process [1]
INFO: Waiting for application startup.
2026-02-13 05:10:51.735 | INFO | open_webui.utils.logger:start_logger:165 - GLOBAL_LOG_LEVEL: INFO
2026-02-13 05:10:51.735 | INFO | open_webui.main:lifespan:615 - Installing external dependencies of functions and tools...
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: access_grant
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 694, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 203, in merged_lifespan
async with original_context(app) as maybe_original_state:
File "/usr/local/lib/python3.11/contextlib.py", line 210, in aenter
return await anext(self.gen)
^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/main.py", line 616, in lifespan
install_tool_and_function_dependencies()
File "/app/backend/open_webui/utils/plugin.py", line 435, in install_tool_and_function_dependencies
tool_list = Tools.get_tools()
^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 165, in get_tools
**self._to_tool_model(tool, db=db).model_dump(),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 105, in _to_tool_model
tool_data["access_grants"] = self._get_access_grants(tool_data["id"], db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/tools.py", line 101, in _get_access_grants
return AccessGrants.get_grants_by_resource("tool", tool_id, db=db)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/backend/open_webui/models/access_grants.py", line 455, in get_grants_by_resource
.all()
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2704, in all
return self._iter().all() # type: ignore
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/query.py", line 2857, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2351, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/session.py", line 2249, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/orm/context.py", line 306, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
return meth(
^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/elements.py", line 527, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
self.dialect.do_execute(
File "/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: access_grant
[SQL: SELECT access_grant.id AS access_grant_id, access_grant.resource_type AS access_grant_resource_type, access_grant.resource_id AS access_grant_resource_id, access_grant.principal_type AS access_grant_principal_type, access_grant.principal_id AS access_grant_principal_id, access_grant.permission AS access_grant_permission, access_grant.created_at AS access_grant_created_at
FROM access_grant
WHERE access_grant.resource_type = ? AND access_grant.resource_id = ?]
[parameters: ('tool', 'weather')]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
Application startup failed. Exiting.
Steps to Reproduce
read the update info
https://docs.openwebui.com/getting-started/updating/
and do it
then not very well
Logs & Screenshots
Additional Information
No response
@Classic298 commented on GitHub (Feb 13, 2026):
No such table access grant
This is the error.
One of these things happened
In all scenarios: the fix is to apply the access grant migration manually
We have a docs page for that.
https://docs.openwebui.com/troubleshooting/multi-replica#updates-and-migrations
As already written in the release notes: the chat Message migration (which you might also be missing) takes a very long time to migrate.
But either way you have to manually apply the Migrations then it will work fine!
May need to apply the other Migrations also.
Apply access grant migration first, then start up again and see if you're missing more Migrations and apply them also if needed.
@Joly0 commented on GitHub (Feb 13, 2026):
Hey, i am having the exact same issue and i cannot fix it. I am running owui on my docker swarm cluster but only one instance/replica, no multi-worker setup or anything else. Still yet owui keeps restarting and throwing that error over and over again.
I tried adding the "ENABLE_DB_MIGRATIONS=True" env variable to my compose, but even then it doesnt work. Just throws the same error again.
@Classic298 commented on GitHub (Feb 13, 2026):
@Joly0
that env var will not migrate you - it only prevents that multiple workers all do the migration at the same time. You need to follow the troubleshooting guides for migration issues and manually migrate the missing alembic migrations
https://docs.openwebui.com/troubleshooting/manual-database-migration
@Classic298 commented on GitHub (Feb 13, 2026):
Updated this page a little bit - hopefully the added details help you out. Should be fairly easy to apply the missing migrations.
docs.openwebui.com/troubleshooting/manual-database-migration
@Classic298 commented on GitHub (Feb 13, 2026):
this
and this
https://docs.openwebui.com/troubleshooting/manual-database-migration/#no-such-table-errors
@Joly0 commented on GitHub (Feb 13, 2026):
Does not work:
Before that i ran the other alembic commands that are on that docs page and there is the other alembic command that also shows various errors:
This is, as i said, running as docker and on sqlite3 database. I created a backup of the db and verified it is correct.
@Classic298 commented on GitHub (Feb 13, 2026):
updating docs..
@Classic298 commented on GitHub (Feb 13, 2026):
@Joly0
https://docs.openwebui.com/troubleshooting/manual-database-migration/#table-already-exists-errors
@Joly0 commented on GitHub (Feb 13, 2026):
Ok, seems to have worked:
Any idea how this could have happened that the migration was stuck on an older version yet the table that the migration should add was already added?
@Classic298 commented on GitHub (Feb 13, 2026):
@Joly0
any of the three reasons i have given above
alembic had an issue during v0.8.0 installation or you accidentally ended open webui during migration or clustered setup...
in 99%+ of cases it will just work fine and run through automatically
@Joly0 commented on GitHub (Feb 13, 2026):
Ok, as for myself i can rule out multi-worker setup, as we dont use that and i also can rule out stopping owui mid-migration,s o i guess alembic just for some reason had a problem.
Whatever it was, owui seems to be running fine now on 0.8.0.
Thanks for the quick support, appreciate it :)
@itsHenry35 commented on GitHub (Feb 13, 2026):
Met exact same issue :D
Docker and sqlite
@Classic298 commented on GitHub (Feb 13, 2026):
@itsHenry35 troubleshooting as above
will keep the issue open for now just so people can see it. will close it later, as not an open webui issue.
@itsHenry35 commented on GitHub (Feb 13, 2026):
Thanks, but I think it might be an open webui issue. Single Worker setup, never stopped or restarted the container while updating, it just fails. But thankfully, database migration works after i followed that docs.
@Classic298 commented on GitHub (Feb 13, 2026):
@itsHenry35 maybe the worker timed out or you went OOM
the chat message table is a very long migration, can take a long time.
And no, not an open-webui issue - as it is not something we can really fix or control. It is a normal migration. If the migration fails for whatever reason that is outside of our control - then it's not something we can fix.
if alembic doesnt complete, the troubleshooting has your back
@themethod commented on GitHub (Feb 13, 2026):
Same issue. The container restarted while
Running upgrade 374d2f66af06 -> 8452d01d26d7, Add chat_message table.I performed a rollback
alembic downgrade -1and thenalembic upgrade head.Unfortunately there were a number of additional indexes that migration creates and the down-migration didn't remove, so I had to identify and manually drop those, and the chat_message table. Following that process I was able to successfully complete the upgrade.
NOTE: If you care about your chat messages, DO NOT run
alembic stamp ...to skip the failed migration, you will lose data.@Classic298 commented on GitHub (Feb 13, 2026):
Just to note: I just performed an upgrade on our prod instance (thousands of users)
chat_message migration took 3-4 minutes (as the warning in the release notes warns about) but completed just fine and all other migrations also worked just fine and applied smoothly without issues.
If you are hitting any issues, you were unfortunately unlucky with alembic, or something or someone stopped the migration. Either an accidental cancel, or running out of memory? If anything kills the process during the migration, then you'll end up in that situation.
@themethod and why did it restart?
do you have any logs?
did your machine possibly kill it due to it going OOM?
the chat_message migration can take up some resources.
@olegbilovus commented on GitHub (Feb 13, 2026):
On a Raspberry Pi 4B 8GB RAM it crashes. I also tried to start a fresh new container and v8 would just crash after a few seconds.
These are the logs.
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus by any chance, are you running OOM? Any other logs you can give us?
@olegbilovus commented on GitHub (Feb 13, 2026):
Memory is fine, I have more than half of it free and have been running openwebui for almost 6 month. I do not use Ollama locally but OpenAI API.
I downgrade to v0.7.2 and it works fine.
If I try to run v0.8 it gives me error 132. This is what I get in the terminal:
If I run
echo $?it gives me132.This is my docker-compose:
If there are specific flags or env vars I can add for a more verbose logs, let me know amd I can share the logs.
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus This is not a migration issue like the other people here in the thread were posting - your problem is an ARM CPU instruction incompatibility.
Exit code 132 = SIGILL (Illegal Instruction). This means a native binary dependency in v0.8.0 is compiled with ARM extensions that your Raspberry Pi 4's Cortex-A72 processor doesn't support.
This has happened before with Open WebUI on Raspberry Pi - onnxruntime is the most common culprit. v0.8.0 ships nnxruntime==1.24.1, and the pre-built aarch64 wheels on PyPI often include FP16/ARMv8.2-A instructions that the RPi 4 (ARMv8.0-A) can't execute.
To confirm this diagnosis, you can run inside the container:
python3 -c "import onnxruntime"If that crashes with "Illegal instruction", that's your culprit.
As a workaround, you can try:
If onnxruntime isn't the sole offender, other candidates to check the same way are chromadb and opencv-python-headless.
This is a known limitation of running on Raspberry Pi — native binary packages sometimes use newer ARM instruction sets than what the RPi 4 supports.
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298
Running
python3 -c "import onnxruntime"it shows this:@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus Thanks for confirming, that rules out onnxruntime.
Exit code 132 = SIGILL (Illegal Instruction), meaning a native binary dependency is using CPU instructions your Raspberry Pi 4's Cortex-A72 (ARMv8.0-A) doesn't support. This is NOT a migration issue, it's a binary compatibility problem.
Since you can bash into the container, could you run these one at a time to find which import crashes?
python3 -c "import torch"
python3 -c "import cv2"
python3 -c "import chromadb"
python3 -c "import sentence_transformers"
python3 -c "import numpy"
python3 -c "import cryptography"
python3 -c "import rapidocr_onnxruntime"
python3 -c "import pyarrow"
python3 -c "from open_webui.env import DATABASE_URL"
Whichever one crashes with "Illegal instruction" is the culprit. This will help us narrow down which specific package needs a version pin for ARM compatibility (similar to how pyarrow was pinned to 20.0.0 for RPi in the past).
The full list to try if all of the above worked: https://github.com/open-webui/open-webui/pull/21261/changes
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298 There are a few that fails:
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus Confirmed: torch is the root cause.
Torch is not version-pinned in the Docker image - it's installed with "pip3 install torch --index-url https://download.pytorch.org/whl/cpu" (no version pin), so whatever version is latest on PyTorch's CPU index at image build time is what you get. This is why v0.7.2 worked but v0.8.0 doesn't - PyTorch likely updated their aarch64 wheels between builds.
Can you check the installed version?
pip show torchAnd try downgrading to see if an older version works:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu torch==2.6.0(adjust the version to whatever worked in your v0.7.2 container — you can check by running "pip show torch" inside a v0.7.2 container for comparison)
If a specific older version works, we may need to pin it for ARM compatibility, similar to the existing pyarrow pin.
Tell us which version works and we can pin it!
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298 v0.8 runs with version
2.10.0. v0.7.2 runs with2.9.1v0.8:
v0.7.2:
@Classic298 commented on GitHub (Feb 13, 2026):
@olegbilovus That confirms it. PyTorch 2.10.0 (shipped in the v0.8.0 Docker image) uses ARM instructions not supported by the RPi 4's Cortex-A72. PyTorch 2.9.1 (in v0.7.2) worked fine.
Can you try this workaround inside the v0.8.0 container?
pip install torch==2.9.1+cpu torchvision torchaudio --index-url https://download.pytorch.org/whl/cpuThen try starting Open WebUI:
bash start.shIf that works, we know pinning torch to <=2.9.1 for ARM builds would fix this.
@olegbilovus commented on GitHub (Feb 13, 2026):
@Classic298 it works.
@Classic298 commented on GitHub (Feb 13, 2026):
Thanks for confirming. We will pin the version and then it will be fixed for all raspberry pi users from 0.8.1 onwards