[project] name = "open-webui" description = "Open WebUI" authors = [ { name = "Timothy Jaeryang Baek", email = "tim@openwebui.com" } ] license = { file = "LICENSE" } dependencies = [ "fastapi==0.124.0", "uvicorn[standard]==0.37.0", "pydantic==2.12.5", "python-multipart==0.0.20", "itsdangerous==2.2.0", "python-socketio==5.15.0", "python-jose==3.5.0", "cryptography", "bcrypt==5.0.0", "argon2-cffi==25.1.0", "PyJWT[crypto]==2.10.1", "authlib==1.6.5", "requests==2.32.5", "aiohttp==3.13.2", "async-timeout", "aiocache", "aiofiles", "starlette-compress==1.6.1", "httpx[socks,http2,zstd,cli,brotli]==0.28.1", "starsessions[redis]==2.2.1", "sqlalchemy==2.0.44", "alembic==1.17.2", "peewee==3.18.3", "peewee-migrate==1.14.3", "pycrdt==0.12.44", "redis", "APScheduler==3.11.1", "RestrictedPython==8.1", "loguru==0.7.3", "asgiref==3.11.0", "tiktoken", "mcp==1.23.3", "openai", "anthropic", "google-genai==1.54.0", "google-generativeai==0.8.5", "langchain==0.3.27", "langchain-community==0.3.29", "fake-useragent==2.2.0", "chromadb==1.3.5", "opensearch-py==3.1.0", "PyMySQL==1.1.2", "boto3==1.42.5", "transformers==4.57.3", "sentence-transformers==5.1.2", "accelerate", "pyarrow==20.0.0", # fix: pin pyarrow version to 20 for rpi compatibility #15897 "einops==0.8.1", "ftfy==6.3.1", "chardet==5.2.0", "pypdf==6.4.1", "fpdf2==2.8.5", "pymdown-extensions==10.18", "docx2txt==0.9", "python-pptx==1.0.2", "unstructured==0.18.21", "msoffcrypto-tool==5.4.2", "nltk==3.9.2", "Markdown==3.10", "pypandoc==1.16.2", "pandas==2.3.3", "openpyxl==3.1.5", "pyxlsb==1.0.10", "xlrd==2.0.2", "validators==0.35.0", "psutil", "sentencepiece", "soundfile==0.13.1", "azure-ai-documentintelligence==1.0.2", "pillow==12.0.0", "opencv-python-headless==4.12.0.88", "rapidocr-onnxruntime==1.4.4", "rank-bm25==0.2.2", "onnxruntime==1.23.2", "faster-whisper==1.2.1", "black==25.12.0", "youtube-transcript-api==1.2.3", "pytube==15.0.0", "pydub", "ddgs==9.9.3", "google-api-python-client", "google-auth-httplib2", "google-auth-oauthlib", "googleapis-common-protos==1.72.0", "google-cloud-storage==3.7.0", "azure-identity==1.25.1", "azure-storage-blob==12.27.1", "ldap3==2.9.1", ] readme = "README.md" requires-python = ">= 3.11, < 3.13.0a1" dynamic = ["version"] classifiers = [ "Development Status :: 4 - Beta", "License :: Other/Proprietary License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Communications :: Chat", "Topic :: Multimedia", ] [project.optional-dependencies] postgres = [ "psycopg2-binary==2.9.11", "pgvector==0.4.2", ] all = [ "pymongo", "psycopg2-binary==2.9.9", "pgvector==0.4.0", "moto[s3]>=5.0.26", "gcp-storage-emulator>=2024.8.3", "docker~=7.1.0", "pytest~=8.3.2", "pytest-docker~=3.2.5", "playwright==1.57.0", # Caution: version must match docker-compose.playwright.yaml - Update the docker-compose.yaml if necessary "elasticsearch==9.2.0", "qdrant-client==1.16.1", "pymilvus==2.6.4", "weaviate-client==4.18.3", "pymilvus==2.6.5", "pinecone==6.0.2", "oracledb==3.4.1", "colbert-ai==0.2.22", "firecrawl-py==4.10.4", "azure-search-documents==11.6.0", ] [project.scripts] open-webui = "open_webui:app" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.rye] managed = true dev-dependencies = [] [tool.hatch.metadata] allow-direct-references = true [tool.hatch.version] path = "package.json" pattern = '"version":\s*"(?P[^"]+)"' [tool.hatch.build.hooks.custom] # keep this for reading hooks from `hatch_build.py` [tool.hatch.build.targets.wheel] sources = ["backend"] exclude = [ ".dockerignore", ".gitignore", ".webui_secret_key", "dev.sh", "requirements.txt", "start.sh", "start_windows.bat", "webui.db", "chroma.sqlite3", ] force-include = { "CHANGELOG.md" = "open_webui/CHANGELOG.md", build = "open_webui/frontend" } [tool.codespell] # Ref: https://github.com/codespell-project/codespell#using-a-config-file skip = '.git*,*.svg,package-lock.json,i18n,*.lock,*.css,*-bundle.js,locales,example-doc.txt,emoji-shortcodes.json' check-hidden = true # ignore-regex = '' ignore-words-list = 'ans' [dependency-groups] dev = [ "pytest-asyncio>=1.0.0", ]