# Sanad Package 2 — Premium Communication — self-contained dependency set. # python:3.10-slim base. P1's comms deps + the premium additions (mask BLE + face). # No torch/opencv/pyrealsense2 — P2 is comms + arm gestures + mask (no vision/CUDA). # Web dashboard (FastAPI SPA + websockets) fastapi uvicorn[standard] pydantic python-multipart websockets # IPC bus shim + offline license verification pyzmq cryptography # Audio framing numpy # Gemini Live voice + audio I/O google-genai>=1.0.0 pyaudio soundfile requests # Premium: BLE LED "Shining Mask" + lifelike face rendering # bleak PINNED to 0.22.3 — bleak 3.x throws KeyError 'Roles' on the Jetson's # BlueZ 5.53 and every connect fails (see marcus_mask_bleak_bluez_pin). bleak==0.22.3 Pillow # NOTE: unitree_sdk2py is NOT on PyPI. Built from source in the Dockerfile when # WITH_UNITREE_SDK=1 (default) for chest ('builtin') audio + arm over DDS.