In MacOS, services run by launchd must run in the foreground, since launchd manages forking and other resources.