<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "ServiceManagement",
  "identifier" : "/documentation/ServiceManagement",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Service Management"
    ],
    "preciseIdentifier" : "ServiceManagement"
  },
  "title" : "Service Management"
}
-->

# Service Management

Manage startup items, launch agents, and launch daemons from within an app.

## Overview

Use Service Management to install and observe the permission settings of three supplemental helper executables that macOS supports. You can use all three of these to provide additional functionality related to your app, from inside your app’s bundle:

- LoginItems: An app that `launchd` starts when the user logs in. A `LoginItem` is an app that continues running until the user logs out or manually quits. Its primary purpose is to enable the system to launch helper executables automatically
- LaunchAgents: Processes that run on behalf of the currently logged-in user. `launchd`, a system-level process, manages Agents. Agents can communicate with other processes in the same user session and with system-wide daemons in the system context.
- LaunchDaemons: A stand-alone background process that `launchd` manages on behalf of the user and which runs as root and may run before any users have logged on to the system. A daemon doesn’t interact with a user process directly; it can only respond to requests made by user processes in the form of a low-level request, such as a system request, for example <doc://com.apple.documentation/documentation/Foundation/xpc>, low-level Interprocess Communications system.

## Topics

### Essentials

[Updating helper executables from earlier versions of macOS](/documentation/ServiceManagement/updating-helper-executables-from-earlier-versions-of-macos)

Simplify your app’s helper executables and support new authorization controls.

[Updating your app package installer to use the new Service Management API](/documentation/ServiceManagement/updating-your-app-package-installer-to-use-the-new-service-management-api)

Learn about the Service Management API with a GUI-less agent app.

### Management

[`SMAppService`](/documentation/ServiceManagement/SMAppService)

An object the framework uses to control helper executables that live inside an app’s main bundle.

[`SMJobBless`](/documentation/ServiceManagement/SMJobBless(_:_:_:_:))

Submits the executable for the given label as a job to `launchd`.

[Authorization Constants](/documentation/ServiceManagement/authorization-constants)

Constants that describe the ability to authorize helper executables or modify daemon applications.

[Property List Keys](/documentation/ServiceManagement/property-list-keys)

Property list keys that describe the kinds of applications, daemons, and helper executables the framework manages.

### Enablement

[`SMLoginItemSetEnabled`](/documentation/ServiceManagement/SMLoginItemSetEnabled(_:_:))

Enables a helper executable in the main app-bundle directory.

### Status

[`Status`](/documentation/ServiceManagement/SMAppService/Status-swift.enum)

Constants that describe the registration or authorization status of a helper executable.

### Errors

[Service Management Errors](/documentation/ServiceManagement/service-management-errors)

Errors that the framework returns.

### Deprecated

[Deprecated Symbols](/documentation/ServiceManagement/deprecated-symbols)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)