What is launchd on a Mac?
launchd is the first program macOS starts after the kernel, and its job is to start and stop every other process and background service on your Mac. It always has the process ID 1, it is part of macOS, and you should never try to end it. If you see it in a list of processes, that is normal: nothing is wrong, and there is nothing to fix.
Below: what launchd actually does, what launch agents and daemons are, how to see the jobs it runs, and why a high reading for launchd is almost always about something else.
What launchd does
When a Mac starts, the kernel does its own setup and then starts one program, launchd. Everything else on the Mac is started by launchd, or by something launchd started. That includes the login window, your Dock, Finder, and the long list of background services that handle Wi-Fi, sound, notifications, iCloud and Spotlight.
You can check this yourself. Open Terminal and run:
ps -o pid,comm -p 1
Under the header, the one line it prints shows /sbin/launchd with the process ID 1. Every process on the Mac has a parent, and following the parents upward always ends at this one.
launchd does more than start things. It keeps a list of jobs, each one a short description of a program: what to run, when to run it, and whether to start it again if it stops. Some jobs run all the time. Some wait until they are needed, for example when another program asks for them by name, and some run on a timer or when a certain file changes. This is why a Mac can have hundreds of services available while only some of them are using any processor at a given moment.
Launch agents and launch daemons
The jobs launchd runs come in two kinds, and the difference is who they run for.
- A launch daemon runs for the whole Mac. It can run before anyone logs in, and it does not need a person to be signed in. Many parts of macOS are daemons, and so are the background helpers of some apps.
- A launch agent runs for one person. It runs only while that person is logged in, and it can show things on the screen, so apps use agents for menu bar helpers and updaters.
Each job is described in a file with the extension .plist. macOS keeps its own in the System folder, which you cannot change. Apps you install can add theirs in three folders: /Library/LaunchDaemons, /Library/LaunchAgents and the LaunchAgents folder inside your own Library folder. Newer apps can also keep the file inside the app itself and register it with macOS. If a Mac seems to open something you never asked it to open, one of those places often holds the reason. The full story is in launch agents and daemons on a Mac, explained in plain English.
There is only one launchd on a current Mac. It keeps a separate set of jobs for the system and for each person who is logged in, but it is all the same process, number 1.
How to see the jobs launchd is running
Terminal has a tool for this. In Terminal, run:
launchctl list
It prints one row per job that launchd has loaded for your account, under three headings: PID, Status and Label. PID is the process ID, and it shows a dash when the job is loaded but not running at that moment. Status is how the job’s last run ended. Label is the job’s name, such as com.apple.something.
A dash under PID does not mean a problem. It usually means the job is waiting until it is needed. A Status other than 0 means the last run ended with an error, and a negative number means it was stopped by a signal (-9, for example). Both are common for jobs that come and go, and on their own they are not a reason to act.
For a longer, system-wide list, Foreman has a page for it. The Foreman Services page lists macOS’s background services, the launchd jobs for you and for the system, whether or not they are running, and lets you Start, Stop or Restart one. System services ask for an administrator password first. Foreman also names launchd itself “Service launcher” in its process list, with the line “Starts and stops every other process and background service on the Mac.”
Why you cannot end launchd, and should not try
Nothing on the Mac works without launchd. If it stopped, nothing would be left to start or restart the other services, and the Mac could not carry on. macOS protects it, and a good process viewer will not offer to end it. Foreman never offers to end launchd or kernel_task.
That is a useful clue in itself. If a guide tells you to kill launchd to fix a slow Mac, it is wrong, and the guide is not worth following any further.
What you may want to end instead is one of launchd’s jobs. For a background service that is misbehaving, stopping or restarting that one service is the smaller step, as long as you know what the service belongs to, and launchd will often start it again by itself. That is by design: many jobs are set to start again when they exit, so a service that comes back a moment after you ended it is launchd doing exactly what it was told. If an app keeps reopening after you quit it, that same mechanism is usually the reason, and why an app keeps reopening after you quit it on a Mac shows how to find the job behind it.
When launchd shows high CPU
A launchd that uses a lot of processor for a long time is uncommon. In most cases what looks like launchd’s work is really the work of something it started. A job that starts, fails and is started again over and over makes launchd busy as well, so the cause is usually one misbehaving job or app, not launchd.
If you see this, do the following.
- Wait a few minutes after a restart or a macOS update. Many jobs start together, and the Mac settles on its own.
- Look for the app that is behaving badly. Sort a process list by CPU and look at the helpers below launchd, not launchd itself. Why is my Mac so slow? How to find the app to blame walks through it.
- Check what starts on its own. In System Settings, open General > Login Items & Extensions (Login Items on macOS 14). An app that registered a job and keeps failing may be listed under Allow in the Background, and switching it off there stops launchd from starting it.
- Restart the Mac if nothing else explains it. A restart gives launchd a clean list of jobs.
If the cause turns out to be an app you deleted long ago, the job it left behind may point at a program that no longer exists. Foreman’s Startup Apps page marks those as “Program missing” and can remove them, with the files going to the Trash.
The short version
launchd is the first process, number 1, and the parent of the rest of the Mac. It starts services, keeps them running and starts them again when they stop. It is not a problem to be solved, and you cannot and should not end it. If something on the Mac is misbehaving, the job launchd is running for it is the place to look. Foreman shows those jobs on its Services page and what starts at login on Startup Apps, and it costs $12 once, with 24 hours free to try it.