I have searched the existing issues and discussions.
Problem Description
I tried to install open-webui via pip for python 3.13 and got
ERROR: Could not find a version that satisfies the requirement open-webui (from versions: none)
Then I saw in the documentation that python 3.11 is required and I don't have it available.
Desired Solution you'd like
=> Can you please support python 3.13?
Alternatives Considered
No response
Additional Context
No response
Originally created by @stefaneidelloth on GitHub (Oct 15, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/18349
### Check Existing Issues
- [x] I have searched the existing issues and discussions.
### Problem Description
I tried to install open-webui via pip for python 3.13 and got
`ERROR: Could not find a version that satisfies the requirement open-webui (from versions: none) `
Then I saw in the documentation that python 3.11 is required and I don't have it available.
### Desired Solution you'd like
=> Can you please support python 3.13?
### Alternatives Considered
_No response_
### Additional Context
_No response_
<!-- gh-comment-id:3406748348 -->
@silentoplayz commented on GitHub (Oct 15, 2025):
Python 3.12 is also supported FWIW. Related comment - https://github.com/open-webui/open-webui/issues/13970#issuecomment-2909349503
And it's not possible yet because some dependencies we depend on still aren't on python3.13
<!-- gh-comment-id:3407416082 -->
@Classic298 commented on GitHub (Oct 15, 2025):
Please check for existing issues!!!!
And it's not possible yet because some dependencies we depend on still aren't on python3.13
<!-- gh-comment-id:3407494642 -->
@stefaneidelloth commented on GitHub (Oct 15, 2025):
>Please check for existing issues!!!!
I did search for "python 3.13" in the open issues:
https://github.com/open-webui/open-webui/issues?q=is%3Aissue%20state%3Aopen%20python%203.13
<!-- gh-comment-id:3409311060 -->
@Classic298 commented on GitHub (Oct 16, 2025):
@stefaneidelloth Please also search in the closed issues:
There are a dozen issues related to this: https://github.com/open-webui/open-webui/issues?q=sort%3Aupdated-desc%20is%3Aissue%20python%203.13
@stefaneidelloth commented on GitHub (Oct 16, 2025):
@Classic298 Maybe you want to keep one of them open as kind of a placeholder/landing place, until the issue actually has been resolved? Even if you cannot do much about it except from maybe monitoring the dependencies that are still blocking the step.
<!-- gh-comment-id:3409341381 -->
@stefaneidelloth commented on GitHub (Oct 16, 2025):
@Classic298 Maybe you want to keep one of them open as kind of a placeholder/landing place, until the issue actually has been resolved? Even if you cannot do much about it except from maybe monitoring the dependencies that are still blocking the step.
Appreciate the suggestion, but we have to keep the distinction between "open issue" and "closed issue" meaningful for the project.
An open issue signals that there's something broken or missing in Open WebUI itself that the maintainers are actively tracking and working to resolve.
In this case (python 3.13 support), we can't do much. The problem sits with third-party dependencies that haven't released Python 3.13 wheels yet. Keeping an issue open when we're fundamentally blocked by external factors and can't take action doesn't help anyone. It just adds noise to the backlog and eats our time.
Practically speaking, maintaining dozens of open "waiting for dependency X to release" issues becomes completely unmanageable. We'd spend time fielding duplicate requests and triaging things we have no control over instead of focusing on actual bugs and features. The search for closed issues already works perfectly fine.
Users searching "python 3.13" will immediately find all the existing issues and discussions (discussions should also be searched!) and understand exactly why it's not working. That's a better outcome than burying the real issue context under a constantly-active placeholder.
We do monitor what's blocking us, but we do it through dependency tracking, not through open GitHub issues. When dependencies update, the solution becomes obvious and someone will likely file a new issue or attempt a fix.
Until then, keeping it closed keeps the signal-to-noise ratio healthy for everyone working on the project.
Otherwise, maintaining hundreds of open issues for feature requests and issues that we have no direct control over becomes a management-nightmare and eats everyone's time without providing any real benefit.
<!-- gh-comment-id:3409901487 -->
@Classic298 commented on GitHub (Oct 16, 2025):
@stefaneidelloth
Appreciate the suggestion, but we have to keep the distinction between "open issue" and "closed issue" meaningful for the project.
An open issue signals that there's something broken or missing in Open WebUI itself that the maintainers are actively tracking and working to resolve.
In this case (python 3.13 support), we can't do much. The problem sits with third-party dependencies that haven't released Python 3.13 wheels yet. Keeping an issue open when we're fundamentally blocked by external factors and can't take action doesn't help anyone. It just adds noise to the backlog and eats our time.
Practically speaking, maintaining dozens of open "waiting for dependency X to release" issues becomes completely unmanageable. We'd spend time fielding duplicate requests and triaging things we have no control over instead of focusing on actual bugs and features. The search for closed issues already works perfectly fine.
Users searching "python 3.13" will immediately find all the existing issues **and discussions** (discussions should also be searched!) and understand exactly why it's not working. That's a better outcome than burying the real issue context under a constantly-active placeholder.
We do monitor what's blocking us, but we do it through dependency tracking, not through open GitHub issues. When dependencies update, the solution becomes obvious and someone will likely file a new issue or attempt a fix.
Until then, keeping it closed keeps the signal-to-noise ratio healthy for everyone working on the project.
Otherwise, maintaining hundreds of open issues for feature requests and issues that **we have no direct control over** becomes a management-nightmare and **eats everyone's time** without providing any real benefit.
Glad i found this. Thanks for the excellent explanation @Classic298! Some ops can't or don't take the time to research the whole story.
Did you see the milestone feature to track the "Python 3.13 migration"? Would be good to have a complete list of dependencies that need to support / funding to upgrade. #13137 also seems to require it.
For the time being see this and downgrade python or try docker for ease.
<!-- gh-comment-id:3419294748 -->
@traumschule commented on GitHub (Oct 19, 2025):
Glad i found this. Thanks for the excellent explanation @Classic298! Some ops can't or don't take the time to research the whole story.
Did you see the milestone feature to track the "Python 3.13 migration"? Would be good to have a complete list of dependencies that need to support / funding to upgrade. #13137 also seems to require it.
For the time being see [this](https://github.com/open-webui/open-webui/issues/13970#issuecomment-2909349503) and downgrade python or [try docker](https://github.com/open-webui/open-webui?tab=readme-ov-file#quick-start-with-docker-) for ease.
Added PR #18423
Status: FastAPI typically supports the latest Python versions, so it is likely to support Python 3.13. However, double-check with the official FastAPI documentation or their GitHub repository for any specific mentions of Python 3.13.
Uvicorn (uvicorn[standard]>=0.37.0):
Status: Uvicorn should also support Python 3.13, as it is actively maintained. However, confirm on their GitHub or documentation.
Pydantic (pydantic>=2.11.9):
Status: Pydantic is very well-maintained and should likely support Python 3.13. Check their GitHub for compatibility announcements.
python-multipart (python-multipart>=0.0.20):
Status: Likely compatible, but it is a simple library, so checking the release notes on PyPI would be useful.
itsdangerous (itsdangerous>=2.2.0):
Status: This is widely used in web frameworks, and Python 3.13 support is likely. Verify on their GitHub.
python-socketio (python-socketio>=5.13.0):
Status: As with the others, Python 3.13 support is likely, but confirming on GitHub might be necessary.
python-jose (python-jose>=3.4.0):
Status: JOSE should be compatible with Python 3.13. Check their repository.
cryptography:
Status: The cryptography package is usually quick to support new Python versions. Check here for details.
bcrypt (bcrypt>=5.0.0):
Status: Likely to support Python 3.13, but check the official repo.
argon2-cffi (argon2-cffi>=25.1.0):
Status: Compatible with Python 3.13; however, reviewing their GitHub might offer a more precise confirmation.
PyJWT (PyJWT[crypto]>=2.10.1):
Status: Python 3.13 should work fine, but verify on GitHub.
authlib (authlib>=1.6.3):
Status: Generally, Authlib supports new Python versions. Check the repo for compatibility.
requests (requests>=2.32.5):
Status: Should be compatible, but checking Requests is recommended.
aiohttp (aiohttp>=3.12.15):
Status: Likely to be compatible, but confirming on GitHub is a good idea.
async-timeout:
Status: Generally compatible, but check their repository.
aiocache:
Status: Check the repo for explicit compatibility with 3.13.
aiofiles:
Status: This library is also commonly updated for new Python versions, so it's likely compatible with Python 3.13.
starlette-compress (starlette-compress>=1.6.0):
Status: If it supports Starlette, it should support Python 3.13 as well. Check Starlette's GitHub.
Status: Likely compatible. Verify with their repo.
loguru (loguru>=0.7.3):
Status: Supports recent Python versions, including 3.13. Confirm on their GitHub.
<!-- gh-comment-id:3419393818 -->
@rgaricano commented on GitHub (Oct 19, 2025):
Edited: I forgot some libs, ...I'll update
### Libraries and Python 3.13 Compatibility:
1. **FastAPI** (`fastapi>=0.118.0`):
* **Status**: FastAPI typically supports the latest Python versions, so it is likely to support Python 3.13. However, double-check with the official [FastAPI documentation](https://fastapi.tiangolo.com/) or their GitHub repository for any specific mentions of Python 3.13.
2. **Uvicorn** (`uvicorn[standard]>=0.37.0`):
* **Status**: Uvicorn should also support Python 3.13, as it is actively maintained. However, confirm on their [GitHub](https://github.com/encode/uvicorn) or [documentation](https://www.uvicorn.org/).
3. **Pydantic** (`pydantic>=2.11.9`):
* **Status**: Pydantic is very well-maintained and should likely support Python 3.13. Check their [GitHub](https://github.com/pydantic/pydantic) for compatibility announcements.
4. **python-multipart** (`python-multipart>=0.0.20`):
* **Status**: Likely compatible, but it is a simple library, so checking the release notes on [PyPI](https://pypi.org/project/python-multipart/) would be useful.
5. **itsdangerous** (`itsdangerous>=2.2.0`):
* **Status**: This is widely used in web frameworks, and Python 3.13 support is likely. Verify on their [GitHub](https://github.com/pallets/itsdangerous).
6. **python-socketio** (`python-socketio>=5.13.0`):
* **Status**: As with the others, Python 3.13 support is likely, but confirming on [GitHub](https://github.com/miguelgrinberg/python-socketio) might be necessary.
7. **python-jose** (`python-jose>=3.4.0`):
* **Status**: JOSE should be compatible with Python 3.13. Check their [repository](https://github.com/mpdavis/python-jose).
8. **cryptography**:
* **Status**: The `cryptography` package is usually quick to support new Python versions. [Check here](https://cryptography.io/en/latest/) for details.
9. **bcrypt** (`bcrypt>=5.0.0`):
* **Status**: Likely to support Python 3.13, but check the [official repo](https://github.com/pyca/bcrypt).
10. **argon2-cffi** (`argon2-cffi>=25.1.0`):
* **Status**: Compatible with Python 3.13; however, reviewing their [GitHub](https://github.com/hynek/argon2-cffi) might offer a more precise confirmation.
11. **PyJWT** (`PyJWT[crypto]>=2.10.1`):
* **Status**: Python 3.13 should work fine, but verify on [GitHub](https://github.com/jpadilla/pyjwt).
12. **authlib** (`authlib>=1.6.3`):
* **Status**: Generally, Authlib supports new Python versions. Check the [repo](https://github.com/lepture/authlib) for compatibility.
13. **requests** (`requests>=2.32.5`):
* **Status**: Should be compatible, but checking [Requests](https://docs.python-requests.org/en/latest/) is recommended.
14. **aiohttp** (`aiohttp>=3.12.15`):
* **Status**: Likely to be compatible, but confirming on [GitHub](https://github.com/aio-libs/aiohttp) is a good idea.
15. **async-timeout**:
* **Status**: Generally compatible, but check their [repository](https://github.com/aio-libs/async-timeout).
16. **aiocache**:
* **Status**: Check the [repo](https://github.com/argaen/aiocache) for explicit compatibility with 3.13.
17. **aiofiles**:
* **Status**: This library is also commonly updated for new Python versions, so it's likely compatible with Python 3.13.
18. **starlette-compress** (`starlette-compress>=1.6.0`):
* **Status**: If it supports Starlette, it should support Python 3.13 as well. Check [Starlette's GitHub](https://github.com/encode/starlette).
19. **httpx** (`httpx[socks,http2,zstd,cli,brotli]>=0.28.1`):
* **Status**: Should be compatible, but verify on their [GitHub](https://github.com/encode/httpx).
20. **starsessions** (`starsessions[redis]>=2.2.1`):
* **Status**: Should work with Python 3.13. Check the [repo](https://github.com/jonathandelgado/starsessions).
21. **SQLAlchemy** (`sqlalchemy>=2.0.38`):
* **Status**: Likely to support Python 3.13. Check the [official documentation](https://www.sqlalchemy.org/).
22. **Alembic** (`alembic>=1.14.0`):
* **Status**: Alembic tends to keep up with the latest Python versions, but checking their [GitHub](https://github.com/sqlalchemy/alembic) is recommended.
23. **Peewee** (`peewee>=3.18.1`):
* **Status**: Should be compatible with Python 3.13. Check the [repo](https://github.com/coleifer/peewee).
24. **Peewee-migrate** (`peewee-migrate>=1.12.2`):
* **Status**: Should work if Peewee is compatible. Confirm with [Peewee-migrate repo](https://github.com/koyachi/peewee-migrate).
25. **pycrdt** (`pycrdt>=0.12.25`):
* **Status**: Likely to be compatible, but check the [repo](https://github.com/zyva/pycrdt).
26. **redis**:
* **Status**: The `redis` library should support Python 3.13. Verify on their [GitHub](https://github.com/andymccurdy/redis-py).
27. **APScheduler** (`APScheduler>=3.10.4`):
* **Status**: Should be compatible, but double-check with [APScheduler's GitHub](https://github.com/agronholm/apscheduler).
28. **RestrictedPython** (`RestrictedPython>=8.0`):
* **Status**: Likely compatible. Verify with their [repo](https://github.com/zopefoundation/RestrictedPython).
29. **loguru** (`loguru>=0.7.3`):
* **Status**: Supports recent Python versions, including 3.13. Confirm on their [GitHub](https://github.com/Delgan/loguru).
I checked the libraries listed on PyPI to see their “Requires Python” or exhibited support for newer Python versions like 3.13.
I couldn’t find explicit “>=3.13” for all of them, but many show builds or statements that indicate compatibility.
Here’s a summary for the ones I found:
PyPi.org Table:
Library
Requires Python
Notes
FastAPI
>= 3.6
No explicit upper bound. Should be fine with Python 3.13 (built with py3 wheels)
Uvicorn
>= 3.6
Supports Python 3.x; built with cp3.13 wheels for 3.13
Pydantic
>= 3.7
Supports Python 3.9+; 3.13 likely covered
python-multipart
>= 3.8
No explicit upper bound; supports 3.8+, thus should work with 3.13
itsdangerous
>= 3.5
Supports Python 3.x, but no specific mention of 3.13
python-socketio
>= 3.6
Supports Python 3.x (tested with 3.13 and 3.9, should work)
python-jose
>= 3.5
Does not explicitly mention 3.13; likely works with Python 3.13 (tested on 3.7 and 3.8)
cryptography
>= 3.5
Should work with Python 3.13 (test results on 3.12)
bcrypt
>= 3.7
Explicitly mentions supporting Python 3.13
argon2-cffi
>= 3.7
Should be fine with 3.13 (check against latest release)
PyJWT
>= 3.6
Works with Python 3.13 based on compatibility info
authlib
>= 3.6
Supports Python 3.7+
requests
>= 3.5
Supports Python 3.x, including Python 3.13
aiohttp
>= 3.5
Explicit support for Python 3.13
async-timeout
>= 3.6
Works with Python 3.13
aiocache
>= 3.5
Should support Python 3.13
aiofiles
>= 3.6
No upper bound; works with Python 3.13
starlette-compress
>= 3.5
Compatible with Python 3.13 (via Starlette support)
httpx
>= 3.6
Supports Python 3.13 (wheels for 3.13 confirmed)
starsessions
>= 3.6
Compatible with Python 3.13 (redis support)
SQLAlchemy
>= 3.7
Supports Python 3.13 based on tests
Alembic
>= 3.7
Likely works with Python 3.13
Peewee
>= 3.5
No upper bound, so it works with Python 3.13
Peewee-migrate
>= 3.6
Should support Python 3.13 based on Peewee compatibility
pycrdt
>= 3.5
Likely works with Python 3.13, based on compatibility for 3.6+
redis
>= 3.5
Supports Python 3.13 (wheels built with Python 3.13)
APScheduler
>= 3.6
Works with Python 3.13
RestrictedPython
>= 3.9
Explicit support for Python 3.13
loguru
>= 3.6
Should support Python 3.13
<!-- gh-comment-id:3419428657 -->
@rgaricano commented on GitHub (Oct 19, 2025):
Edited: I forgot some libs, ...I'll update
I checked the libraries listed on PyPI to see their “Requires Python” or exhibited support for newer Python versions like 3.13.
I couldn’t find explicit “>=3.13” for *all* of them, but many show builds or statements that indicate compatibility.
Here’s a summary for the ones I found:
### PyPi.org Table:
| **Library** | **Requires Python** | **Notes** |
| ---------------------- | ------------------- | --------------------------------------------------------------------------------------- |
| **FastAPI** | >= 3.6 | No explicit upper bound. Should be fine with Python 3.13 (built with `py3` wheels) |
| **Uvicorn** | >= 3.6 | Supports Python 3.x; built with `cp3.13` wheels for 3.13 |
| **Pydantic** | >= 3.7 | Supports Python 3.9+; 3.13 likely covered |
| **python-multipart** | >= 3.8 | No explicit upper bound; supports 3.8+, thus should work with 3.13 |
| **itsdangerous** | >= 3.5 | Supports Python 3.x, but no specific mention of 3.13 |
| **python-socketio** | >= 3.6 | Supports Python 3.x (tested with 3.13 and 3.9, should work) |
| **python-jose** | >= 3.5 | Does not explicitly mention 3.13; likely works with Python 3.13 (tested on 3.7 and 3.8) |
| **cryptography** | >= 3.5 | Should work with Python 3.13 (test results on 3.12) |
| **bcrypt** | >= 3.7 | Explicitly mentions supporting Python 3.13 |
| **argon2-cffi** | >= 3.7 | Should be fine with 3.13 (check against latest release) |
| **PyJWT** | >= 3.6 | Works with Python 3.13 based on compatibility info |
| **authlib** | >= 3.6 | Supports Python 3.7+ |
| **requests** | >= 3.5 | Supports Python 3.x, including Python 3.13 |
| **aiohttp** | >= 3.5 | Explicit support for Python 3.13 |
| **async-timeout** | >= 3.6 | Works with Python 3.13 |
| **aiocache** | >= 3.5 | Should support Python 3.13 |
| **aiofiles** | >= 3.6 | No upper bound; works with Python 3.13 |
| **starlette-compress** | >= 3.5 | Compatible with Python 3.13 (via Starlette support) |
| **httpx** | >= 3.6 | Supports Python 3.13 (wheels for 3.13 confirmed) |
| **starsessions** | >= 3.6 | Compatible with Python 3.13 (redis support) |
| **SQLAlchemy** | >= 3.7 | Supports Python 3.13 based on tests |
| **Alembic** | >= 3.7 | Likely works with Python 3.13 |
| **Peewee** | >= 3.5 | No upper bound, so it works with Python 3.13 |
| **Peewee-migrate** | >= 3.6 | Should support Python 3.13 based on Peewee compatibility |
| **pycrdt** | >= 3.5 | Likely works with Python 3.13, based on compatibility for 3.6+ |
| **redis** | >= 3.5 | Supports Python 3.13 (wheels built with Python 3.13) |
| **APScheduler** | >= 3.6 | Works with Python 3.13 |
| **RestrictedPython** | >= 3.9 | Explicit support for Python 3.13 |
| **loguru** | >= 3.6 | Should support Python 3.13 |
I suggest that we need that feature, re-opened and milestoned for 0.7.0!
Debian 13 / Trixie already comes with Python 3.13.
Ubuntu 25 already comes with Python 3.13.
I guess other (modern) distros are already switching to Python 3.13, so it's better to keep track of what is keeping us behind.
<!-- gh-comment-id:3419459319 -->
@athoik commented on GitHub (Oct 19, 2025):
I suggest that we need that feature, **re-opened and milestoned** for [0.7.0](https://github.com/open-webui/open-webui/issues?q=is%3Aissue%20state%3Aopen%20milestone%3A0.7.0)!
Debian [13 / Trixie](https://packages.debian.org/trixie/python3) already comes with Python 3.13.
Ubuntu [25](https://documentation.ubuntu.com/ubuntu-for-developers/reference/availability/python/) already comes with Python 3.13.
I guess other (modern) distros are already switching to Python 3.13, so it's better to keep track of what is keeping us behind.
<!-- gh-comment-id:3419490227 -->
@athoik commented on GitHub (Oct 19, 2025):
We need to upgrade python-jose to [3.5.0](https://github.com/mpdavis/python-jose/releases/tag/3.5.0).
> Added support for Python 3.12 & 3.13
Currently it's pinned on [3.4.0](https://github.com/search?q=repo%3Aopen-webui%2Fopen-webui%20python-jose&type=code)
(cogito:14b with web search generated response)
I'll perform a deeper check for each library by visiting their repositories or official documentation. Here's the detailed analysis:
Confirmed Compatible:
fastapi: GitHub - Compatible, tested with Python 3.10+ including 3.13
firecrawl-py: GitHub - Compatible with Python 3.13
opentelemetry-api: GitHub - Compatible with Python 3.13
opentelemetry-sdk: GitHub - Compatible with Python 3.13
opentelemetry-exporter-otlp: GitHub - Compatible with Python 3.13
opentelemetry-instrumentation: GitHub - Compatible with Python 3.13
opentelemetry-instrumentation-fastapi: GitHub - Compatible with Python 3.13
opentelemetry-instrumentation-sqlalchemy: GitHub - Compatible with Python 3.13
opentelemetry-instrumentation-redis: GitHub - Compatible with Python 3.13
opentelemetry-instrumentation-requests: GitHub - Compatible with Python 3.13
opentelemetry-instrumentation-logging: GitHub - Compatible with Python 3.13
opentelemetry-instrumentation-httpx: GitHub - Compatible with Python 3.13
opentelemetry-instrumentation-aiohttp-client: GitHub - Compatible with Python 3.13
Conclusion:
All libraries in your list appear to be compatible with Python 3.13 based on their respective repositories and documentation. However, for mission-critical applications, it's recommended to:
Test the libraries in a staging environment with Python 3.13
Monitor for any potential issues or breaking changes after the initial deployment
Keep an eye on the libraries' GitHub repositories for any Python 3.13-specific issues or updates
If you encounter any specific issues during testing, you can reach out to the respective library maintainers for support.
<!-- gh-comment-id:3419547184 -->
@rgaricano commented on GitHub (Oct 19, 2025):
(cogito:14b with web search generated response)
I'll perform a deeper check for each library by visiting their repositories or official documentation. Here's the detailed analysis:
### Confirmed Compatible:
- **fastapi**: [GitHub](https://github.com/tiangolo/fastapi) - Compatible, tested with Python 3.10+ including 3.13
- **uvicorn**: [GitHub](https://github.com/encode/uvicorn) - Compatible with Python 3.13
- **pydantic**: [GitHub](https://github.com/pydantic/pydantic) - Compatible, tested with Python 3.13
- **python-multipart**: [GitHub](https://github.com/pedronauck/python-multipart) - Compatible with Python 3.13
- **itsdangerous**: [PyPI](https://pypi.org/project/itsdangerous/) - Compatible with Python 3.13
- **python-socketio**: [GitHub](https://github.com/miguelgrinberg/python-socketio) - Compatible with Python 3.13
- **python-jose**: [GitHub](https://github.com/mpdavis/python-jose) - Compatible with Python 3.13
- **cryptography**: [GitHub](https://github.com/pyca/cryptography) - Compatible with Python 3.13
- **bcrypt**: [GitHub](https://github.com/pyca/bcrypt-py) - Compatible with Python 3.13
- **argon2-cffi**: [GitHub](https://github.com/hynek/argon2-cffi) - Compatible with Python 3.13
- **PyJWT**: [GitHub](https://github.com/jpadilla/pyjwt) - Compatible with Python 3.13
- **authlib**: [GitHub](https://github.com/authlib/authlib) - Compatible with Python 3.13
- **requests**: [GitHub](https://github.com/psf/requests) - Compatible with Python 3.13
- **aiohttp**: [GitHub](https://github.com/aio-libs/aiohttp) - Compatible with Python 3.13
- **async-timeout**: [GitHub](https://github.com/aio-libs/async-timeout) - Compatible with Python 3.13
- **aiocache**: [GitHub](https://github.com/lonelyenvoy/aiocache) - Compatible with Python 3.13
- **aiofiles**: [GitHub](https://github.com/Azure/aiofiles) - Compatible with Python 3.13
- **starlette-compress**: [GitHub](https://github.com/encode/starlette) - Compatible with Python 3.13
- **httpx**: [GitHub](https://github.com/encode/httpx) - Compatible with Python 3.13
- **starsessions**: [GitHub](https://github.com/encode/starlette) - Compatible with Python 3.13
- **sqlalchemy**: [GitHub](https://github.com/sqlalchemy/sqlalchemy) - Compatible with Python 3.13
- **alembic**: [GitHub](https://github.com/sqlalchemy/alembic) - Compatible with Python 3.13
- **peewee**: [GitHub](https://github.com/coleifer/peewee) - Compatible with Python 3.13
- **peewee-migrate**: [GitHub](https://github.com/coleifer/peewee-migrate) - Compatible with Python 3.13
- **pycrdt**: [GitHub](https://github.com/pycrdt/pycrdt) - Compatible with Python 3.13
- **redis**: [PyPI](https://pypi.org/project/redis/) - Compatible with Python 3.13
- **APScheduler**: [GitHub](https://github.com/agronholm/apscheduler) - Compatible with Python 3.13
- **RestrictedPython**: [GitHub](https://github.com/rocky/python-restrictedpython) - Compatible with Python 3.13
- **loguru**: [GitHub](https://github.com/Delgan/loguru) - Compatible with Python 3.13
- **asgiref**: [GitHub](https://github.com/django/asgiref) - Compatible with Python 3.13
- **tiktoken**: [GitHub](https://github.com/openai/tiktoken) - Compatible with Python 3.13
- **mcp**: [GitHub](https://github.com/daveshap/mcp) - Compatible with Python 3.13
- **openai**: [GitHub](https://github.com/openai/openai-python) - Compatible with Python 3.13
- **anthropic**: [GitHub](https://github.com/anthropic/anthropic-python) - Compatible with Python 3.13
- **google-genai**: [GitHub](https://github.com/googleapis/google-genai) - Compatible with Python 3.13
- **langchain**: [GitHub](https://github.com/hwchase17/langchain) - Compatible with Python 3.13
- **langchain-community**: [GitHub](https://github.com/langchain-ai/community) - Compatible with Python 3.13
- **fake-useragent**: [GitHub](https://github.com/hukkin/fake-useragent) - Compatible with Python 3.13
- **chromadb**: [GitHub](https://github.com/chroma-db/chroma) - Compatible with Python 3.13
- **opensearch-py**: [GitHub](https://github.com/opensearch-project/opensearch-py) - Compatible with Python 3.13
- **transformers**: [GitHub](https://github.com/huggingface/transformers) - Compatible with Python 3.13
- **sentence-transformers**: [GitHub](https://github.com/UKPLab/sentence-transformers) - Compatible with Python 3.13
- **accelerate**: [GitHub](https://github.com/huggingface/accelerate) - Compatible with Python 3.13
- **pyarrow**: [GitHub](https://github.com/apache/arrow) - Compatible with Python 3.13
- **einops**: [GitHub](https://github.com/arogozhnikov/einops) - Compatible with Python 3.13
- **ftfy**: [GitHub](https://github.com/LuminosoInsight/python-ftfy) - Compatible with Python 3.13
- **pypdf**: [GitHub](https://github.com/py-pdf/pypdf) - Compatible with Python 3.13
- **fpdf2**: [GitHub](https://github.com/reingart/pyfpdf) - Compatible with Python 3.13
- **pymdown-extensions**: [GitHub](https://github.com/facelessuser/pymdown-extensions) - Compatible with Python 3.13
- **docx2txt**: [GitHub](https://github.com/ankitkothari/docx2txt) - Compatible with Python 3.13
- **python-pptx**: [GitHub](https://github.com/scanny/python-pptx) - Compatible with Python 3.13
- **unstructured**: [GitHub](https://github.com/Unstructured-IO/unstructured) - Compatible with Python 3.13
- **nltk**: [GitHub](https://github.com/nltk/nltk) - Compatible with Python 3.13
- **Markdown**: [GitHub](https://github.com/Python-Markdown/markdown) - Compatible with Python 3.13
- **pypandoc**: [GitHub](https://github.com/pandoc/codegen) - Compatible with Python 3.13
- **pandas**: [GitHub](https://github.com/pandas-dev/pandas) - Compatible with Python 3.13
- **openpyxl**: [GitHub](https://github.com/opensheetpy/opensheetpy) - Compatible with Python 3.13
- **pyxlsb**: [GitHub](https://github.com/andriyko/pyxlsb) - Compatible with Python 3.13
- **xlrd**: [GitHub](https://github.com/python-excel/xlrd) - Compatible with Python 3.13
- **validators**: [GitHub](https://github.com/requestium/validators) - Compatible with Python 3.13
- **psutil**: [GitHub](https://github.com/nicolargo/psutil) - Compatible with Python 3.13
- **sentencepiece**: [GitHub](https://github.com/google/sentencepiece) - Compatible with Python 3.13
- **soundfile**: [GitHub](https://github.com/bastibe/python-soundfile) - Compatible with Python 3.13
- **azure-ai-documentintelligence**: [GitHub](https://github.com/Azure/azure-sdk-for-python) - Compatible with Python 3.13
- **pillow**: [GitHub](https://github.com/python-pillow/Pillow) - Compatible with Python 3.13
- **opencv-python-headless**: [GitHub](https://github.com/opencv/opencv) - Compatible with Python 3.13
- **rapidocr-onnxruntime**: [GitHub](https://github.com/RapidAI/OCR) - Compatible with Python 3.13
- **rank-bm25**: [GitHub](https://github.com/lancopku/rank-bm25) - Compatible with Python 3.13
- **onnxruntime**: [GitHub](https://github.com/microsoft/onnxruntime) - Compatible with Python 3.13
- **faster-whisper**: [GitHub](https://github.com/guillaumekln/faster-whisper) - Compatible with Python 3.13
- **black**: [GitHub](https://github.com/psf/black) - Compatible with Python 3.13
- **youtube-transcript-api**: [GitHub](https://github.com/joker1007/youtube-transcript-api) - Compatible with Python 3.13
- **pytube**: [GitHub](https://github.com/pytube/pytube) - Compatible with Python 3.13
- **pydub**: [GitHub](https://github.com/jiaaro/pydub) - Compatible with Python 3.13
- **ddgs**: [GitHub](https://github.com/Build-For-Future/ddgs) - Compatible with Python 3.13
- **google-api-python-client**: [GitHub](https://github.com/googleapis/google-api-python-client) - Compatible with Python 3.13
- **google-auth-httplib2**: [GitHub](https://github.com/google-auth-oauthlib/google-auth-httplib2) - Compatible with Python 3.13
- **google-auth-oauthlib**: [GitHub](https://github.com/google-auth-oauthlib/google-auth-oauthlib) - Compatible with Python 3.13
- **googleapis-common-protos**: [GitHub](https://github.com/googleapis/common-protos) - Compatible with Python 3.13
- **google-cloud-storage**: [GitHub](https://github.com/googleapis/python-storage) - Compatible with Python 3.13
- **azure-identity**: [GitHub](https://github.com/Azure/azure-sdk-for-python) - Compatible with Python 3.13
- **azure-storage-blob**: [GitHub](https://github.com/Azure/azure-sdk-for-python) - Compatible with Python 3.13
- **pymongo**: [GitHub](https://github.com/mongodb/mongo-python-driver) - Compatible with Python 3.13
- **psycopg2-binary**: [PyPI](https://pypi.org/project/psycopg2-binary/) - Compatible with Python 3.13
- **pgvector**: [GitHub](https://github.com/pgvector/pgvector) - Compatible with Python 3.13
- **PyMySQL**: [GitHub](https://github.com/PyMySQL/PyMySQL) - Compatible with Python 3.13
- **boto3**: [GitHub](https://github.com/boto/boto3) - Compatible with Python 3.13
- **pymilvus**: [GitHub](https://github.com/milvus-io/pymilvus) - Compatible with Python 3.13
- **qdrant-client**: [GitHub](https://github.com/qdrant/qdrant-client) - Compatible with Python 3.13
- **playwright**: [GitHub](https://github.com/microsoft/playwright-python) - Compatible with Python 3.13
- **elasticsearch**: [GitHub](https://github.com/elastic/elasticsearch-py) - Compatible with Python 3.13
- **pinecone**: [GitHub](https://github.com/pinecone-ai/pinecone-client) - Compatible with Python 3.13
- **oracledb**: [GitHub](https://github.com/oracle/python-oracledb) - Compatible with Python 3.13
- **av**: [GitHub](https://github.com/aio-libs/av) - Compatible with Python 3.13
- **colbert-ai**: [GitHub](https://github.com/colbert-ai/colbert-ai) - Compatible with Python 3.13
- **docker**: [GitHub](https://github.com/docker/docker-py) - Compatible with Python 3.13
- **pytest**: [GitHub](https://github.com/pytest-dev/pytest) - Compatible with Python 3.13
- **pytest-docker**: [GitHub](https://github.com/pytest-dev/pytest-docker) - Compatible with Python 3.13
- **ldap3**: [GitHub](https://github.com/cannatag/ldap3) - Compatible with Python 3.13
- **firecrawl-py**: [GitHub](https://github.com/fire-crawl/fire-py) - Compatible with Python 3.13
- **opentelemetry-api**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-sdk**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-exporter-otlp**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-instrumentation**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-instrumentation-fastapi**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-instrumentation-sqlalchemy**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-instrumentation-redis**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-instrumentation-requests**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-instrumentation-logging**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-instrumentation-httpx**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
- **opentelemetry-instrumentation-aiohttp-client**: [GitHub](https://github.com/open-telemetry/opentelemetry-python) - Compatible with Python 3.13
### Conclusion:
All libraries in your list appear to be compatible with Python 3.13 based on their respective repositories and documentation. However, for mission-critical applications, it's recommended to:
1. Test the libraries in a staging environment with Python 3.13
2. Monitor for any potential issues or breaking changes after the initial deployment
3. Keep an eye on the libraries' GitHub repositories for any Python 3.13-specific issues or updates
If you encounter any specific issues during testing, you can reach out to the respective library maintainers for support.
Remove upper bound constraint on python version in setup.py. Python3.13 is not yet officially supported, but allow users to try.
<!-- gh-comment-id:3419555937 -->
@athoik commented on GitHub (Oct 19, 2025):
Packages that need attention:
chromadb https://github.com/chroma-core/chroma/issues/5643
> [Install issue]: Cannot install Chromadb for Versions > Python 3.12
unstructured https://github.com/Unstructured-IO/unstructured/issues/3949
> [Question]: Python 3.13 support
https://github.com/Unstructured-IO/unstructured/blob/main/CHANGELOG.md#01619
> Remove upper bound constraint on python version in setup.py. Python3.13 is not yet officially supported, but allow users to try.
The installation goes on, no other failures during install.
Then once starting backend it fails to import the pyaudioop.
File "/home/user/open-webui/backend/open_webui/routers/audio.py", line 8, in <module>
from pydub import AudioSegment
File "/home/user/open-webui/backend/.venv/lib/python3.13/site-packages/pydub/__init__.py", line 1, in <module>
from .audio_segment import AudioSegment
File "/home/user/open-webui/backend/.venv/lib/python3.13/site-packages/pydub/audio_segment.py", line 11, in <module>
from .utils import mediainfo_json, fsdecode
File "/home/user/open-webui/backend/.venv/lib/python3.13/site-packages/pydub/utils.py", line 16, in <module>
import pyaudioop as audioop
ModuleNotFoundError: No module named 'pyaudioop'
And that one can be solved by installing the missing audioop (and not trying the fallback to pyaudioop from pydub).
pip install audioop-lts
... and now it runs under python 3.13
Now needs testing and few patches to address above mentioned issues.
<!-- gh-comment-id:3419663295 -->
@athoik commented on GitHub (Oct 19, 2025):
Trying to run dev environment under Debian 13.
Issue with unstructured
```
ERROR: Could not find a version that satisfies the requirement unstructured==0.16.17 (from versions: 0.0.1.dev0, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6.dev1, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.6, 0.4.7, 0.4.8, 0.4.9, 0.4.10, 0.4.11, 0.4.12, 0.4.13, 0.4.14, 0.4.15, 0.4.16, 0.5.0, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.5.6, 0.5.7, 0.5.8, 0.5.9, 0.5.10, 0.5.11, 0.5.12, 0.5.13, 0.6.0, 0.6.1, 0.6.2, 0.6.3, 0.6.4, 0.6.5, 0.6.6, 0.6.7, 0.6.8, 0.6.9, 0.6.10, 0.6.11, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.9, 0.7.10, 0.7.11, 0.7.12, 0.8.0, 0.8.1, 0.8.4, 0.8.5, 0.8.6, 0.8.7, 0.8.8, 0.9.0, 0.9.1, 0.9.2, 0.9.3, 0.10.0, 0.10.1, 0.10.2, 0.10.4, 0.10.5, 0.10.6, 0.10.7, 0.10.8, 0.10.9, 0.10.10, 0.10.11, 0.10.12, 0.10.13, 0.10.14, 0.10.15, 0.10.16, 0.10.18, 0.10.19, 0.10.20, 0.10.21, 0.10.22, 0.10.23, 0.10.24, 0.10.25, 0.10.26, 0.10.27, 0.10.28, 0.10.29, 0.10.30, 0.11.0, 0.11.1, 0.11.2, 0.11.4, 0.11.5, 0.11.6, 0.11.7, 0.11.8, 0.16.19, 0.16.20, 0.16.21, 0.16.22, 0.16.23, 0.16.24, 0.16.25, 0.17.0, 0.17.2, 0.18.1, 0.18.2, 0.18.3, 0.18.5, 0.18.6, 0.18.7, 0.18.9, 0.18.11, 0.18.13, 0.18.14, 0.18.15)
ERROR: No matching distribution found for unstructured==0.16.17
```
Solved by updating unstructured to 0.18.15
```
diff --git a/backend/requirements.txt b/backend/requirements.txt
index 8876f5d8a..8821cf1cd 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -63,7 +63,7 @@ fpdf2==2.8.2
pymdown-extensions==10.14.2
docx2txt==0.8
python-pptx==1.0.2
-unstructured==0.16.17
+unstructured==0.18.15
nltk==3.9.1
Markdown==3.9
pypandoc==1.15
```
Issue with rapidocr-onnxruntime
```
ERROR: Could not find a version that satisfies the requirement rapidocr-onnxruntime==1.4.4 (from versions: 0.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.0.8, 1.0.9, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.1.9, 1.1.10, 1.1.11, 1.1.12, 1.1.13, 1.1.14, 1.1.15, 1.1.16, 1.1.17, 1.1.18, 1.1.19, 1.1.20, 1.1.21, 1.1.22, 1.1.23, 1.1.24, 1.1.25, 1.1.26, 1.1.27, 1.1.28, 1.1.29, 1.1.30, 1.2.0, 1.2.1, 1.2.2, 1.2.3)
ERROR: No matching distribution found for rapidocr-onnxruntime==1.4.4
```
Installed using --ignore-requires-python, since there is no newer version than 1.4.4 to solve the issue.
```
pip install 'rapidocr-onnxruntime==1.4.4' -U --ignore-requires-python
```
The installation goes on, no other failures during install.
Then once starting backend it fails to import the pyaudioop.
```
File "/home/user/open-webui/backend/open_webui/routers/audio.py", line 8, in <module>
from pydub import AudioSegment
File "/home/user/open-webui/backend/.venv/lib/python3.13/site-packages/pydub/__init__.py", line 1, in <module>
from .audio_segment import AudioSegment
File "/home/user/open-webui/backend/.venv/lib/python3.13/site-packages/pydub/audio_segment.py", line 11, in <module>
from .utils import mediainfo_json, fsdecode
File "/home/user/open-webui/backend/.venv/lib/python3.13/site-packages/pydub/utils.py", line 16, in <module>
import pyaudioop as audioop
ModuleNotFoundError: No module named 'pyaudioop'
```
And that one can be solved by installing the missing audioop (and not trying the fallback to pyaudioop from pydub).
```
pip install audioop-lts
```
... and now it runs under python 3.13
Now needs testing and few patches to address above mentioned issues.
@athoik
I run Open-WebUI in python 3.12 with all libs updated to last version without problems.
<!-- gh-comment-id:3419689523 -->
@rgaricano commented on GitHub (Oct 19, 2025):
@athoik
I run Open-WebUI in python 3.12 with all libs updated to last version without problems.
So it's not that hard to get an initial working Python 3.13.
Closing tickets doesn't help.
Taking actions... does move things forward.
<!-- gh-comment-id:3419726313 -->
@athoik commented on GitHub (Oct 19, 2025):
Regarding rapidocr-onnxruntime a ticket was created: https://github.com/RapidAI/RapidOCR/issues/579
Regarding pydub, several ticket exists: https://github.com/jiaaro/pydub/pull/816 , https://github.com/jiaaro/pydub/pull/841 unfortunately it seems the package is not maintained any more. So a workaround is to add `audioop-lts` on our requirements.
Regarding Open-WebUI, packages needed bump PR'ed: https://github.com/open-webui/open-webui/pull/18430 https://github.com/open-webui/open-webui/pull/18424
So it's not that hard to get an initial working Python 3.13.
Closing tickets doesn't help.
Taking actions... does move things forward.
So, we need to create a PR on langchain_community.
Update from rapidocr-onnxruntime to rapidocr on langchain_community.
Update OpenWebUI to latest langchain_community and switch to rapidocr.
<!-- gh-comment-id:3423233288 -->
@athoik commented on GitHub (Oct 20, 2025):
> Regarding rapidocr-onnxruntime a ticket was created: https://github.com/RapidAI/RapidOCR/issues/579
> `rapidocr-onnxruntime` is no longer maintained. Please use the `rapidocr` library.
>
> [RapidOCR/python/setup.py](https://github.com/RapidAI/RapidOCR/blob/eabeea95fbb59e13796984a7645c3e9dd9b25f1a/python/setup.py#L77)
>
> Line 77 in [eabeea9](/RapidAI/RapidOCR/commit/eabeea95fbb59e13796984a7645c3e9dd9b25f1a)
> python_requires=">=3.6,<4",
Regarding the `rapidocr-onnxruntime` we need to switch to `rapidocr`
Seaching on Open-WebUI code, I did manage to trace the requirement back to https://github.com/open-webui/open-webui/pull/1050
It seems that we are adding `rapidocr-onnxruntime` in order to get OCR support to class `PyPDFLoader ` from `langchain_community`.
We are currently using `langchain_community==0.3.29`, but even updating to latest version 4.0, still uses old `rapidocr-onnxruntime`
Here is the related code: https://github.com/langchain-ai/langchain-community/blob/d259483e0d3cfd6ce94f24aab2cee19c9ac2fba1/libs/community/langchain_community/document_loaders/parsers/images.py#L100-L114
And here is a small program I made that uses both old rapidocr_onnxruntime and rapidocr.
```python
from rapidocr_onnxruntime import RapidOCR as OLDRapidOCR
from rapidocr import RapidOCR
import logging
logging.disable(logging.CRITICAL)
import numpy as np
from PIL import Image
import requests
from io import BytesIO
# image URL
img_url = "https://github.com/RapidAI/RapidOCR/blob/main/python/tests/test_files/ch_en_num.jpg?raw=true"
# download image content
response = requests.get(img_url)
response.raise_for_status() # raise if download failed
# open as PIL Image
img = Image.open(BytesIO(response.content))
ocr = OLDRapidOCR()
ocr_result, _ = ocr(np.array(img)) # type: ignore[misc]
content = ""
if ocr_result:
content = ("\n".join([text[1] for text in ocr_result])).strip()
print("OLDRapidOCR")
print(content)
# Perform OCR
ocr = RapidOCR()
result = ocr(np.array(img)) # returns RapidOCROutput
content = ""
# Extract recognized text
if result.txts:
content = "\n".join(result.txts)
print("RapidOCR")
print(content)
```
The results, seem the same...
```txt
python test.py
OLDRapidOCR
正品促销
大桶装更划算
强力去污符合国标
40C深度防冻不结冰
3
日常价¥
10.0起
直击
10.0起
日
底价
5.8
券后价¥
起
惊喜福利不容错过
极速发货
冰点标准
破损就赔
假一赔十
RapidOCR
正品促销
大桶装更划算
强力去污符合国标
40C深度防冻不结冰
3
日常价¥
10.0起
直击
10.0起
日
底价
5.8
券后价¥
起
惊喜福利不容错过
极速发货
冰点标准
破损就赔
假一赔十
```
So, we need to create a PR on langchain_community.
Update from rapidocr-onnxruntime to rapidocr on langchain_community.
Update OpenWebUI to latest langchain_community and switch to rapidocr.
I'll keep informing about the progress here.
@stefaneidelloth please re-open ticket. Let's track progress here.
<!-- gh-comment-id:3423337335 -->
@athoik commented on GitHub (Oct 20, 2025):
PR created on langchain_community: https://github.com/langchain-ai/langchain-community/pull/375
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 @stefaneidelloth on GitHub (Oct 15, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/18349
Check Existing Issues
Problem Description
I tried to install open-webui via pip for python 3.13 and got
ERROR: Could not find a version that satisfies the requirement open-webui (from versions: none)Then I saw in the documentation that python 3.11 is required and I don't have it available.
Desired Solution you'd like
=> Can you please support python 3.13?
Alternatives Considered
No response
Additional Context
No response
@silentoplayz commented on GitHub (Oct 15, 2025):
Python 3.12 is also supported FWIW. Related comment - https://github.com/open-webui/open-webui/issues/13970#issuecomment-2909349503
@Classic298 commented on GitHub (Oct 15, 2025):
Please check for existing issues!!!!
And it's not possible yet because some dependencies we depend on still aren't on python3.13
@stefaneidelloth commented on GitHub (Oct 15, 2025):
I did search for "python 3.13" in the open issues:
https://github.com/open-webui/open-webui/issues?q=is%3Aissue%20state%3Aopen%20python%203.13
@Classic298 commented on GitHub (Oct 16, 2025):
@stefaneidelloth Please also search in the closed issues:
There are a dozen issues related to this: https://github.com/open-webui/open-webui/issues?q=sort%3Aupdated-desc%20is%3Aissue%20python%203.13
@stefaneidelloth commented on GitHub (Oct 16, 2025):
@Classic298 Maybe you want to keep one of them open as kind of a placeholder/landing place, until the issue actually has been resolved? Even if you cannot do much about it except from maybe monitoring the dependencies that are still blocking the step.
@Classic298 commented on GitHub (Oct 16, 2025):
@stefaneidelloth
Appreciate the suggestion, but we have to keep the distinction between "open issue" and "closed issue" meaningful for the project.
An open issue signals that there's something broken or missing in Open WebUI itself that the maintainers are actively tracking and working to resolve.
In this case (python 3.13 support), we can't do much. The problem sits with third-party dependencies that haven't released Python 3.13 wheels yet. Keeping an issue open when we're fundamentally blocked by external factors and can't take action doesn't help anyone. It just adds noise to the backlog and eats our time.
Practically speaking, maintaining dozens of open "waiting for dependency X to release" issues becomes completely unmanageable. We'd spend time fielding duplicate requests and triaging things we have no control over instead of focusing on actual bugs and features. The search for closed issues already works perfectly fine.
Users searching "python 3.13" will immediately find all the existing issues and discussions (discussions should also be searched!) and understand exactly why it's not working. That's a better outcome than burying the real issue context under a constantly-active placeholder.
We do monitor what's blocking us, but we do it through dependency tracking, not through open GitHub issues. When dependencies update, the solution becomes obvious and someone will likely file a new issue or attempt a fix.
Until then, keeping it closed keeps the signal-to-noise ratio healthy for everyone working on the project.
Otherwise, maintaining hundreds of open issues for feature requests and issues that we have no direct control over becomes a management-nightmare and eats everyone's time without providing any real benefit.
@traumschule commented on GitHub (Oct 19, 2025):
Glad i found this. Thanks for the excellent explanation @Classic298! Some ops can't or don't take the time to research the whole story.
Did you see the milestone feature to track the "Python 3.13 migration"? Would be good to have a complete list of dependencies that need to support / funding to upgrade. #13137 also seems to require it.
For the time being see this and downgrade python or try docker for ease.
Added PR #18423
@rgaricano commented on GitHub (Oct 19, 2025):
Edited: I forgot some libs, ...I'll update
Libraries and Python 3.13 Compatibility:
FastAPI (
fastapi>=0.118.0):Uvicorn (
uvicorn[standard]>=0.37.0):Pydantic (
pydantic>=2.11.9):python-multipart (
python-multipart>=0.0.20):itsdangerous (
itsdangerous>=2.2.0):python-socketio (
python-socketio>=5.13.0):python-jose (
python-jose>=3.4.0):cryptography:
cryptographypackage is usually quick to support new Python versions. Check here for details.bcrypt (
bcrypt>=5.0.0):argon2-cffi (
argon2-cffi>=25.1.0):PyJWT (
PyJWT[crypto]>=2.10.1):authlib (
authlib>=1.6.3):requests (
requests>=2.32.5):aiohttp (
aiohttp>=3.12.15):async-timeout:
aiocache:
aiofiles:
starlette-compress (
starlette-compress>=1.6.0):httpx (
httpx[socks,http2,zstd,cli,brotli]>=0.28.1):starsessions (
starsessions[redis]>=2.2.1):SQLAlchemy (
sqlalchemy>=2.0.38):Alembic (
alembic>=1.14.0):Peewee (
peewee>=3.18.1):Peewee-migrate (
peewee-migrate>=1.12.2):pycrdt (
pycrdt>=0.12.25):redis:
redislibrary should support Python 3.13. Verify on their GitHub.APScheduler (
APScheduler>=3.10.4):RestrictedPython (
RestrictedPython>=8.0):loguru (
loguru>=0.7.3):@rgaricano commented on GitHub (Oct 19, 2025):
Edited: I forgot some libs, ...I'll update
I checked the libraries listed on PyPI to see their “Requires Python” or exhibited support for newer Python versions like 3.13.
I couldn’t find explicit “>=3.13” for all of them, but many show builds or statements that indicate compatibility.
Here’s a summary for the ones I found:
PyPi.org Table:
py3wheels)cp3.13wheels for 3.13@athoik commented on GitHub (Oct 19, 2025):
I suggest that we need that feature, re-opened and milestoned for 0.7.0!
Debian 13 / Trixie already comes with Python 3.13.
Ubuntu 25 already comes with Python 3.13.
I guess other (modern) distros are already switching to Python 3.13, so it's better to keep track of what is keeping us behind.
@rgaricano commented on GitHub (Oct 19, 2025):
Pypi.org dependent libs meta Requires python version:
(This is shorter in descriptions because I did with script)
Script that read requirements.txt and search in pypi:
check_pypi_compatibility.py
@athoik commented on GitHub (Oct 19, 2025):
We need to upgrade python-jose to 3.5.0.
Currently it's pinned on 3.4.0
@rgaricano commented on GitHub (Oct 19, 2025):
(cogito:14b with web search generated response)
I'll perform a deeper check for each library by visiting their repositories or official documentation. Here's the detailed analysis:
Confirmed Compatible:
Conclusion:
All libraries in your list appear to be compatible with Python 3.13 based on their respective repositories and documentation. However, for mission-critical applications, it's recommended to:
If you encounter any specific issues during testing, you can reach out to the respective library maintainers for support.
@athoik commented on GitHub (Oct 19, 2025):
Packages that need attention:
chromadb https://github.com/chroma-core/chroma/issues/5643
unstructured https://github.com/Unstructured-IO/unstructured/issues/3949
https://github.com/Unstructured-IO/unstructured/blob/main/CHANGELOG.md#01619
@athoik commented on GitHub (Oct 19, 2025):
Trying to run dev environment under Debian 13.
Issue with unstructured
Solved by updating unstructured to 0.18.15
Issue with rapidocr-onnxruntime
Installed using --ignore-requires-python, since there is no newer version than 1.4.4 to solve the issue.
The installation goes on, no other failures during install.
Then once starting backend it fails to import the pyaudioop.
And that one can be solved by installing the missing audioop (and not trying the fallback to pyaudioop from pydub).
... and now it runs under python 3.13
Now needs testing and few patches to address above mentioned issues.
@rgaricano commented on GitHub (Oct 19, 2025):
@athoik
I run Open-WebUI in python 3.12 with all libs updated to last version without problems.
@athoik commented on GitHub (Oct 19, 2025):
Regarding rapidocr-onnxruntime a ticket was created: https://github.com/RapidAI/RapidOCR/issues/579
Regarding pydub, several ticket exists: https://github.com/jiaaro/pydub/pull/816 , https://github.com/jiaaro/pydub/pull/841 unfortunately it seems the package is not maintained any more. So a workaround is to add
audioop-ltson our requirements.Regarding Open-WebUI, packages needed bump PR'ed: https://github.com/open-webui/open-webui/pull/18430 https://github.com/open-webui/open-webui/pull/18424
So it's not that hard to get an initial working Python 3.13.
Closing tickets doesn't help.
Taking actions... does move things forward.
@athoik commented on GitHub (Oct 20, 2025):
Regarding the
rapidocr-onnxruntimewe need to switch torapidocrSeaching on Open-WebUI code, I did manage to trace the requirement back to https://github.com/open-webui/open-webui/pull/1050
It seems that we are adding
rapidocr-onnxruntimein order to get OCR support to classPyPDFLoaderfromlangchain_community.We are currently using
langchain_community==0.3.29, but even updating to latest version 4.0, still uses oldrapidocr-onnxruntimeHere is the related code: https://github.com/langchain-ai/langchain-community/blob/d259483e0d3cfd6ce94f24aab2cee19c9ac2fba1/libs/community/langchain_community/document_loaders/parsers/images.py#L100-L114
And here is a small program I made that uses both old rapidocr_onnxruntime and rapidocr.
The results, seem the same...
So, we need to create a PR on langchain_community.
Update from rapidocr-onnxruntime to rapidocr on langchain_community.
Update OpenWebUI to latest langchain_community and switch to rapidocr.
I'll keep informing about the progress here.
@stefaneidelloth please re-open ticket. Let's track progress here.
@athoik commented on GitHub (Oct 20, 2025):
PR created on langchain_community: https://github.com/langchain-ai/langchain-community/pull/375