# sanad_api_r1 — copy to .env and fill in. docker compose reads it automatically. # ── fleet server (REQUIRED — YS Lootah gives you these two) ────────────────── SERVER_URL=https://fleet.example.com DEVICE_TOKEN=REPLACE_WITH_DEVICE_TOKEN # ── identity ───────────────────────────────────────────────────────────────── # This robot's fleet id, sent in the telemetry body as "sn". Set the real R1 id. SN=r1_0000 # ── DDS (reading robot state) ──────────────────────────────────────────────── # The R1 backpack link is eth10 (SanadR1 default). Use the interface that sees # the robot's DDS traffic. Domain 0 unless your robot is configured otherwise. DDS_INTERFACE=eth10 DDS_DOMAIN=0 # Which NIC's MAC to report as the robot identity (defaults to DDS_INTERFACE). # MAC_INTERFACE=eth10 # ── status / position options ──────────────────────────────────────────────── # Read the loco FSM for a richer status (READ-ONLY GET RPC, never commands # motion). 0 = derive status from battery + joint motion only (safe default). R1_READ_FSM=0 # Position source: none (default) | rosbridge. The R1 localizes with stereo VSLAM # on the ROS side; set 'rosbridge' + ROSBRIDGE_URL to report x,y from /odom. R1_POSITION_SOURCE=none ROSBRIDGE_URL=ws://127.0.0.1:9090 # ── fault thresholds ───────────────────────────────────────────────────────── LOW_SOC=15 MOTOR_TEMP_MAX=85 # ── cadence / transport ────────────────────────────────────────────────────── POLL_INTERVAL=2 VERIFY_TLS=1 HTTP_TIMEOUT=10 # ── robot identity card (shown on the dashboard) ───────────────────────────── ROBOT_BRAND=unitree ROBOT_TYPE=humanoid ROBOT_MODEL=r1 # Optional: Sanad data dir whose size is reported in storage (as /host/ # when the installer's read-only /:/host mount is used). Empty = omit. STORAGE_DATA_PATH= # ── map sync (uploaded ONCE per content; status shown in telemetry "map") ──── # The installer mounts the robot's real maps dir at /data/maps (probed on the # robot: rtabmap*.db / slam_toolbox yaml+pgm sets). Fallback = agent's own dir. MAPS_DIR=/data/maps DATA_DIR=/data/web_data STATE_DIR=/data/state MAP_SELECT=all MAP_UPLOAD_MODE=multipart MAP_POLL_INTERVAL=30 # ── logs + alerts ───────────────────────────────────────────────────────────── # agent log lines shipped to /{sn}/logs every LOGS_INTERVAL; new faults POSTed # to /{sn}/alert immediately (rising edge). LOGS_INTERVAL=60 # ── project logs (shared alongside agent logs) ─────────────────────────────── # auto (default) = find a RUNNING Sanad project container (sanadr1, sanad-p4, # sanad*) via the /host mount and tail its docker json-log, labeled # "-logs" in the shipped lines; telemetry shows project_logs (null=none). # Or pin a container name / an explicit log file (PROJECT_LOG_PATH, via /host). PROJECT_LOG_CONTAINER=auto PROJECT_LOG_PATH= PROJECT_LOG_LABEL=