Can’t load plist. Launchctl says "Invalid property list", tried plutil, SIP, permissions
The key KeepAlive had to be removed from the ProgramArguments array and properly enabled (&lt;true/&gt;).

This is how it works now:

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
  &lt;dict&gt;
    &lt;key&gt;Label&lt;/key&gt;
    &lt;string&gt;com.pollux.backup&lt;/string&gt;
    &lt;key&gt;ProgramArguments&lt;/key&gt;
    &lt;array&gt;
     &lt;string&gt;sh&lt;/string&gt;
     &lt;string&gt;-c&lt;/string&gt;
     &lt;string&gt;/bin/backup_pollux_server&lt;/string&gt;
     &lt;/array&gt;
     &lt;key&gt;RunAtLoad&lt;/key&gt;
     &lt;true/&gt;
     &lt;key&gt;KeepAlive&lt;/key&gt;
     &lt;true/&gt;
     &lt;key&gt;StartInterval&lt;/key&gt;
     &lt;integer&gt;3600&lt;/integer&gt;
     &lt;key&gt;StandardErrorPath&lt;/key&gt;
     &lt;string&gt;/tmp/pollux_backup.err&lt;/string&gt;
     &lt;key&gt;StandardOutPath&lt;/key&gt;
     &lt;string&gt;/tmp/pollux_backup.out&lt;/string&gt;
  &lt;/dict&gt;
&lt;/plist&gt;