Run a Program at Startup on macOS with launchd
How to run any program automatically at macOS startup using launchd — creating plist files, managing services with launchctl, and debugging.
Guides and tutorials for macOS system configuration and usage
Guides and tutorials for macOS system configuration and usage.
macOS is built on a Unix foundation (Darwin kernel derived from BSD and Mach), giving developers access to POSIX-compliant command-line tools alongside a polished consumer interface. Its launchd system replaces System V init and cron for managing daemons, scheduled jobs, and system services through plist configuration files. Understanding launchd is essential for macOS system administration — it controls everything from background agents to user-level startup programs.
Apple’s shift to Apple Silicon (M1/M2/M3/M4) brought significant changes to the macOS ecosystem, including Rosetta 2 for x86 emulation, improved power efficiency, and unified memory architecture. However, many core system administration patterns — launchd plists, defaults(1) for preferences, log streaming via log(1), and disk utility commands — remain consistent across architectures. Modern macOS administration also involves managing Gatekeeper for security, configuring the T2/M-series Secure Enclave, and handling SIP (System Integrity Protection) constraints that limit root-level access compared to traditional Linux systems.
macOS powers a growing share of development environments, CI/CD build agents, and enterprise fleets. For developers and IT admins, knowing macOS internals — from launchd job management to filesystem layout differences (APFS snapshots vs. ext4) — reduces debugging time and enables automation of Mac fleet management.
See the full list below.
How to run any program automatically at macOS startup using launchd — creating plist files, managing services with launchctl, and debugging.