backend/requirements/README.md
This directory is kept for backwards compatibility with existing Docker builds.
We use pyproject.toml as the single source of truth for all dependencies, with a unified uv.lock file for resolved versions.
pyproject.tomluv is 10-100x faster than pip-toolspyproject.toml, commit, done!pyproject.toml # SOURCE OF TRUTH - edit this!
uv.lock # Unified lock file (all versions)
backend/
└── requirements/ # Legacy .txt files (for Docker compat)
├── default.txt
├── dev.txt
├── ee.txt
├── model_server.txt
└── combined.txt
If you don't have uv installed:
# On macOS/Linux
curl -LsSf https://astral.py/uv/install.sh | sh
DO NOT edit the .txt files directly! Instead:
pyproject.toml[project.dependencies] for shared dependencies (used by both backend and model_server)[dependency-groups.backend] for backend-only dependencies[dependency-groups.dev] for dev tools[dependency-groups.ee] for EE features[dependency-groups.model_server] for model_server-only dependencies (ML packages)The lock file (uv.lock) and requirements files are automatically generated by pre-commit hooks when you commit changes to pyproject.toml:
uv-lock: Runs uv lock to resolve dependencies into uv.lockuv-export: Exports requirements to the .txt files in this directoryTo manually regenerate:
uv lock
uv export --no-emit-project --no-default-groups --no-hashes --group backend -o backend/requirements/default.txt
uv export --no-emit-project --no-default-groups --no-hashes --group dev -o backend/requirements/dev.txt
uv export --no-emit-project --no-default-groups --no-hashes --group ee -o backend/requirements/ee.txt
uv export --no-emit-project --no-default-groups --no-hashes --group model_server -o backend/requirements/model_server.txt
If enabled, all packages are installed automatically by the uv-sync pre-commit hook when changing
branches or pulling new changes.
# For development (most common) — installs shared + backend + dev + ee
uv sync
# For backend production only (shared + backend dependencies)
uv sync --no-default-groups --group backend
# For model server (shared + model_server, NO backend deps!)
uv sync --no-default-groups --group model_server
Upgrade specific packages:
Review changes carefully before committing!