From 3b8263fcdffaa6a032376c126a4ced8bfc2fbeca Mon Sep 17 00:00:00 2001 From: Kristen Such Date: Mon, 8 Jun 2026 14:23:50 -0600 Subject: [PATCH] build(kinova): add websockets + msgpack to the rollout client image deps The C0 Kinova rollout client (scripts/kinova/rollout.py, end-to-end PR #81) is a torch-free real-Kinova rollout client whose policy client uses `websockets` (sync) + `msgpack` to talk to the policy server. It runs in the agent_bridge container, so its Python deps must be baked into the user overlay image instead of being pip-installed ephemerally into the running container (which is lost on image rebuild). Install them via pip in the shared `base` Dockerfile stage (which all services, including agent_bridge, extend). pip is used rather than a rosdep key because the Ubuntu Jammy apt `python3-websockets` candidate is 9.1, which does not satisfy the required `websockets>=13`. Versions: websockets>=13, msgpack>=1.0 (match end-to-end PR #81's pyproject). Co-Authored-By: Claude Opus 4.8 (1M context) --- Dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Dockerfile b/Dockerfile index 5355ec61a..c6c297ca6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -68,6 +68,17 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --from-paths src \ --ignore-src +# Python dependencies for the C0 Kinova rollout client (scripts/kinova/rollout.py). +# The torch-free real-Kinova rollout client runs in the agent_bridge container and uses +# `websockets` (sync) + `msgpack` to talk to the policy server. These are installed via pip +# (rather than a rosdep key) because the Ubuntu Jammy apt `python3-websockets` is 9.1, which +# does not satisfy the required `websockets>=13`. Baking them in here replaces the previous +# ephemeral `pip install` workaround inside the running container. +# hadolint ignore=DL3013 +RUN python3 -m pip install --no-cache-dir \ + "websockets>=13" \ + "msgpack>=1.0" + # Set up colcon defaults for the new user USER ${USERNAME} RUN colcon mixin add default \