Problem
Setting up the toolkit's Python side currently requires several manual steps that vary by platform:
python3 -m pip install -r tools/requirements.txt for the base dependencies
- Manually creating/activating a virtualenv (docs show
python -m venv .venv + source .venv/bin/activate)
pip install modal && python3 -m modal setup as a separate step for the Modal CLI
pip install openai-whisper hidden in a commented-out line of requirements.txt for karaoke captions
--break-system-packages workarounds on Debian/Ubuntu (PEP 668) in the OpenClaw skill
There's also no lockfile, so installs aren't reproducible, and users on a machine without the right Python version have to install one themselves first.
Proposal
Adopt uv as the Python project manager:
- A root
pyproject.toml + uv.lock so the entire setup becomes one command: uv sync
- Optional heavy/niche deps become extras:
uv sync --extra whisper, uv sync --extra modal
- All tool invocations documented as
uv run tools/<tool>.py — no venv activation, auto-syncs the env
- uv installs a compatible Python automatically (
.python-version pins 3.12)
- 10–100x faster installs than pip, fully reproducible via the lockfile
tools/requirements.txt kept as a pip fallback for anyone not using uv
Out of scope: docker/** images (containers manage their own deps) and the changelog history.
I have this working end-to-end and will open a PR.
Problem
Setting up the toolkit's Python side currently requires several manual steps that vary by platform:
python3 -m pip install -r tools/requirements.txtfor the base dependenciespython -m venv .venv+source .venv/bin/activate)pip install modal && python3 -m modal setupas a separate step for the Modal CLIpip install openai-whisperhidden in a commented-out line ofrequirements.txtfor karaoke captions--break-system-packagesworkarounds on Debian/Ubuntu (PEP 668) in the OpenClaw skillThere's also no lockfile, so installs aren't reproducible, and users on a machine without the right Python version have to install one themselves first.
Proposal
Adopt uv as the Python project manager:
pyproject.toml+uv.lockso the entire setup becomes one command:uv syncuv sync --extra whisper,uv sync --extra modaluv run tools/<tool>.py— no venv activation, auto-syncs the env.python-versionpins 3.12)tools/requirements.txtkept as a pip fallback for anyone not using uvOut of scope:
docker/**images (containers manage their own deps) and the changelog history.I have this working end-to-end and will open a PR.