@DTS Engineer I really appreciate the response. Very helpful. After looking into SMAppService, it does seem like a launch agent is most appropriate.
The biggest issue I have now is trying to figure out how to make this work. My app and its needs are very far from simple. I have a very large data model that is stored locally in a SQLite database and the user can optionally choose to sync their data via iCloud (CloudKit).
Trying to figure out how refactor all of the existing code and logic that deals with CKSyncEngine syncing, reading and writing the SQLite database, and updating the in-memory data model into the launch agent, all in a way that can be coordinated with the main GUI app (when it might happen to be running), it going to be, shall I say, challenging.
Oh, and doing this in such a way that doesn't change how the iOS version currently works using background tasks.