Where Does launchd Read Jobs and Daemons?
launchd reads jobs from LaunchAgents and LaunchDaemons folders split by user, admin, and system scope.
Last updated
launchd jobs live as plist files in scope folders. User agents run at login under your account. System daemons run at boot as root. Apple reserves its own directory for system jobs.
That scope split decides permissions and timing. Per-user helpers belong in the home agents folder. Machine-wide services belong in the system daemons folder. Load state tracks separately in launchctl until reboot.
Where launchd stores this, by platform
~/Library/LaunchAgents (plus /Library/LaunchDaemons)
Per-user agents run at login. Admin agents and system daemons run wider or as root. Load with launchctl after placing plists.
Frequently asked questions
How do I add a launchd job?
Place the plist in the right scope folder and load it with launchctl. User agents run at login; daemons run at boot as root. Wrong scope is the classic silent failure.
Does deleting a plist stop the job?
Yes through plist placement, not the file alone. Load state lives in the running session until bootout. Unloading plus deleting fully removes a job.
Notice an outdated path? Let us know.