# sanad_api_x2 — AGIBOT X2 fleet agent. requests>=2.31,<3 # only needed if X2_POSITION_SOURCE=rosbridge (reads /odom over a websocket): websocket-client>=1.6,<2 # NOT installed here: # rclpy — comes from the ROS base image (see Dockerfile BASE_IMAGE); it is # not on PyPI and must match the robot's ROS distro. # aimrt_py — AgiBot's runtime, installed with their stack if you use it. # The agent degrades to heartbeat mode when no state source is reachable, so a # missing backend never stops telemetry.