# sanad_api_eng — EngineAI PM01 fleet agent. requests>=2.25 # only needed if ENG_POSITION_SOURCE=rosbridge (reads /odom over a websocket): # websocket-client>=1.6,<2 # NOT installed here: # rclpy — comes from the robot's ROS 2 Humble install; not on # PyPI and must match the robot's distro. # interface_protocol — EngineAI's own message package, already built on the # robot at /app/applications/install/interface_protocol. # Both become importable once the unit sources ros_env.sh. The agent degrades to # heartbeat mode when no state source is reachable, so a missing backend never # stops telemetry.