Service Management¶
Urso is designed to run as a reliable background agent. It leverages the native service managers of the host operating system to ensure that runners are always synchronized and persistent across reboots.
Platform Integration¶
Urso automatically detects the operating system and integrates with the appropriate service manager:
- macOS: Integrates with
launchdas a User Agent. - Linux: Integrates with
systemdas a User Service.
The Urso Service¶
When you run urso install, a system service is created that executes urso run on a recurring schedule or ensures it stays alive in the background.
macOS (launchd)¶
On macOS, Urso creates a property list (plist) file at:
~/Library/LaunchAgents/com.urso-run.urso.plist
- Logs: Combined stdout and stderr are written to
~/Library/Logs/com.urso-run.urso.log. - Management: You can manually interact with the service using
launchctl:# Kickstart the service immediately launchctl kickstart -k gui/$(id -u)/com.urso-run.urso
Linux (systemd)¶
On Linux, Urso creates a unit file at:
~/.config/systemd/user/com.urso-run.urso.service
- Logs: Managed by the systemd journal.
- Management: Use
systemctl --userto interact with the service:# Check service status systemctl --user status com.urso-run.urso # View real-time logs journalctl --user -u com.urso-run.urso -f
Runner Services¶
In addition to the main Urso orchestrator service, each individual GitHub Actions runner managed by Urso is also installed as a separate system service.
- Naming: These services are typically named using the runner name provided in your configuration.
- Lifecycle: Urso handles the installation, starting, stopping, and uninstallation of these runner services automatically during the
syncprocess.
Permissions
On Linux, the GitHub Actions runner scripts (svc.sh) require sudo to install and manage systemd services. Urso uses sudo -n (non-interactive) to perform these operations. Ensure the user running Urso has the necessary passwordless sudo permissions for these scripts if required.
Observability with Vector¶
If the vector binary is present in your system PATH during installation, Urso will also configure and manage a Vector service.
- Config: Located at
~/.urso/vector/vector.yaml. - Function: Vector monitors the logs from both Urso and the individual GitHub runners, forwarding them to the Urso Dashboard for centralized monitoring.
- Service Name:
com.urso-run.vector(managed via launchd or systemd).
Troubleshooting¶
If services are not starting correctly:
- Check Urso Logs: Review the logs in
~/.urso/logs/or viajournalctl. - Verify PATH: Ensure the
ursobinary is in a persistent location and its path is correctly reflected in the service configuration. - Manual Sync: Run
urso runmanually in your terminal to see if any immediate errors occur during reconciliation.