[Unit] Description=Keep the AGIBOT X2 dashboard and agent running [Timer] # A watchdog: run the idempotent launcher shortly after boot, then on every # wall-clock minute. This is the crash-and-restart safety net, and it means # neither the dashboard nor the ROS bridge depends on any external machine. # # OnCalendar (not OnUnitActiveSec) on purpose: the launcher is Type=oneshot and # its background processes keep the unit reading "active", so an activity-relative # timer never re-arms (NextElapse=infinity). A wall-clock schedule fires # regardless of the service's state. OnBootSec=30s OnCalendar=*:*:00 Persistent=true AccuracySec=5s [Install] WantedBy=timers.target