The release workflow was already right; what it would have uploaded was not. `fluksio` had no readme, so its PyPI page would have been blank — the app repo's own README is a contributor's map of `frontend/` and `docker/`, which is the wrong front page for `pip install fluksio`. It now has one of its own, aimed at somebody who landed on the project page. Both distributions gain authors, urls, keywords and classifiers; `twine check` passes clean on all four artifacts where it warned on two before. The workflow publishes `fluksio-worker` first, because `fluksio` depends on it and the other order leaves a few seconds — the whole of a first release — in which the dependency cannot be resolved. `--check-url` makes a re-run skip what is already uploaded rather than failing on it, which matters because a version on PyPI can never be replaced. Licence metadata is deliberately still absent: LICENSE is MIT in somebody else's name, inherited from the template this was scaffolded from, and whose it should be is not a decision to make in a commit. NOTEPAD carries it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012ue1tkFWB1bcGy3aWhCKpU
fluksio-worker
Runs Fluksio nodes on a machine the engine cannot reach — a GPU box, a cluster node, anything behind a NAT. It dials out to the engine over one authenticated websocket, so nothing has to be exposed here.
pip install fluksio-worker
fluksio-worker \
--url wss://api.example.com/api/v1/workers/attach \
--token "$FLUKSIO_WORKER_TOKEN" \
--labels gpu,cuda12 \
--python /opt/torch-venv/bin/python
--python is the interpreter node code runs on, which is how this machine keeps
its own wheels without the engine ever installing them. Mint a token from the
engine with POST /api/v1/workers/tokens.
Linux and macOS.