# Sanad Package 4 — Custom AI Guide Tour (sanad-guide) — self-contained deps. # Pure-Python orchestrator: comms + mask + optional recognition + a `requests`/ # `websockets` bridge to the SEPARATE sanad-nav (web_nav3) ROS2 stack. NO ROS2 here. # Web dashboard fastapi uvicorn[standard] pydantic python-multipart websockets # IPC bus shim + offline license verification pyzmq cryptography # Numerics + image numpy Pillow # Gemini Live voice + audio I/O google-genai>=1.0.0 pyaudio soundfile # Nav bridge — WebNav3Client is pure `requests`; goal_monitor cancel uses `websockets`. requests # Optional recognition (when P3-entitled) — Gemini-side, cv2 for JPEG/USB capture. opencv-python-headless # Mask (BLE LED "Shining Mask") — per-stop expression/QR. bleak==0.22.3