| Version | 2.10.4 | 10.2.3 | 1.5.0 | 1.0 | 1.2.0 |
| Supported macOS Versions | macOS 11 (Big Sur) and later | macOS 14 (Sonoma) and later | macOS 15.2 (Sequoia) and later | macOS 26 (Tahoe) | macOS 10.13 (High Sierra) and later |
| First released | 2013 | 2005 | 2026 | 2026 | 2026 |
| Price | ~33 USD | ~29 USD | free | 10 USD | free |
| Open Source | No | No | Yes | No | Yes |
| Notarized by Apple | Yes | Yes | No | Yes | No |
| User Manual | Yes: Via Help menu and online; Also available: Online tutorial of launchd and LaunchControl at launchd.info | Yes: Online, also accessible via Help menu | No | No | No |
| GUI | macOS native, highly configurable, support for multiple windows and tabs; Adaptive, only shows keys relevant for selected job; Eight views which may be freely arranged by the user | macOS native, tabs and multiple windows; static layout displays all known job keys, regardless of usage | macOS native, single window, no tabs; static layout displays all known job keys, regardless of usage | macOS native single window, no tabs; static layout displays all known job keys, regardless of usage | Tauri cross-platform UI kit, single window, no tabs; static layout displays all known job keys, regardless of usage |
| Suitable for editing jobs not created with this application | Yes | Yes, as long as executable does not rely on custom program name | No: Will silently remove any keys it does not know (see list of supported keys below) | Yes, as long as executable does not rely on custom program name | No: Will silently remove any keys it does not know (see list of supported keys below) |
| XML/Expert Editor | Yes: Fully synced with standard editor in real time as you make changes; XML display with syntax highlighting and Expert Editor for full control while ensuring structurally valid job definitions | No | No | Limited: Static XML display shows job as it exists on disk | No |
| Can create launchd jobs from legacy cron jobs | Yes | No | No | No | No |
| AI Support | Yes: Google, LM Studio, Ollama, OpenAI, OpenRouter, Perplexity, xAI | Yes: Apple Intelligence | No | Yes: Apple Intelligence, OpenAI, Claude | No |
| Troubleshooting of jobs | Yes: Detailed warnings and errors even before loading the job; One-click QuickFix actions to resolve many issues; Filters and displays system logs relevant for job; Allows analyzing and fixing malformed job property lists; Step-by-step instructions when a job fails to load or run | No | No | No | No |
| Manage jobs from Menu Bar without the main program running | Yes: Start, Stop, Load, Unload; Ability to group jobs and act on those groups; Menu bar icon informs about failed jobs | No | No | No | No |
| Documentation of launchd keys | Yes: Extensive documentation of every launchd key and control | Limited: Documentation of many launchd keys | No: No user-visible correlation between launchd keys and UI | No: Controls and launchd keys are undocumented | Limited: Controls are explained in the UI |
| Job-level Full Disk Access isolation, eliminating blanket or per-executable permissions | Yes: Run executable with bundled fdautil, no further action required | No: Requires allowing Full Disk Access for every executable on the system or creating an application bundle for the executable, which then has to be granted Full Disk Access in System Settings | No: Requires allowing Full Disk Access for every executable on the system or creating an application bundle for the executable, which then has to be granted Full Disk Access in System Settings | No: Requires allowing Full Disk Access for every executable on the system or creating an application bundle for the executable, which then has to be granted Full Disk Access in System Settings | No: Requires allowing Full Disk Access for every executable on the system or creating an application bundle for the executable, which then has to be granted Full Disk Access in System Settings |
| Support for Daemons (jobs which run on behalf of root/other users) | Yes | Yes | Yes | No | Limited: Display-only |
| Filtering of jobs | Yes: By type, domain, status (loaded, unloaded, running, exit status), enabled/disabled, validation result (OK, warning, error, invalid), record in override db, status in System Settings | Yes: By user-assignable tags, smart folders (name, type, enabled/disabled, creation/modification date, note, tags) | Yes: By type | No | Yes: By type |
| Create jobs from Templates | Yes | No | No | No | No |
| Logs | Yes: Dedicated, searchable live views for job output, errors and launchd; Functionality for setting marks, clearing, pausing and deleting | No | Yes: Job output and error joined in a single, static, non-searchable text view | Yes: Job output and error in separate, static, non-searchable text fields | Yes: Job output and error in separate, non-searchable text fields |
| Job Notes | Yes | Yes | No | No | No |
| Shows jobs inside application bundles | Yes: Bundled jobs are handled like any other job | Yes: Display of job definition as XML in separate view | No | No | No |
| Support for jobs in non-standard locations | Yes | No | No | No | No |
| Support for Override Database | Yes: Jobs with overridden Disabled key are marked; Allows for changing record in override database | No | No | No | No |
| Shows job's representation in launchd | Yes, dedicated State Inspector view | No | No | Yes: Text output from launchctl command line utility | No |
| Job Search | Yes: Scoped search by filename, label, Program/ProgramArguments values, other launchd values, launchd keys; Supports Regular Expressions | Yes: By filename, full text search in property lists | Yes: By filename, value of Program/ProgramArguments keys | No | Yes: By filename |
| Customizable process name visible to job's executable | Yes | No: Jobs with this configuration are not displayed correctly; Editing will remove a possibly configured custom process name | No: Custom program name is displayed instead of path to executable; Editing will remove a possibly configured custom process name | No: Custom process name is not displayed; Editing will not affect the custom program name | No: Executable and custom process name are displayed correctly; Editing the job will remove a possibly configured custom process name |
| Live update | Yes: External changes made to launchd jobs and referenced files/paths/groups/users are detected and the display is immediately updated | Limited: External changes made to launchd jobs are detected and the interface is updated immediately | No: Requires restart to detect any changes | No: Requires restart to detect any changes | Limited: New jobs will be visible when the user presses the Reload button; Changes to a job are displayed when the details of a job are displayed |
| Support for unofficial launchd keys | Yes: Any key of any data type can be added, changed or deleted | Limited: Unknown keys are displayed and can be deleted | No: Will silently remove any key it does not support on save; See list of supported launchd keys below | No | No: Will silently remove any key it does not support on save; See list of supported launchd keys below |
| Support for deprecated launchd keys | Yes: They can still be added/edited; Deprecated keys are marked with a warning detailing in which macOS version support has been removed | Limited: Deprecated keys and their values are displayed and can be deleted | No: Will silently remove any key it does not support on save; See list of supported launchd keys below | No | No: Will silently remove any key it does not support on save; See list of supported launchd keys below |
| Support for individual launchd keys; An asterisk (*) indicates additional guidance and validation of user input |
| General |
| Label | Yes* | Yes | Yes | Yes | Yes |
| Program | Yes* | Limited: Incorrect when ProgramArguments is specified | Limited: Incorrect when ProgramArguments is specified | Limited: Incorrect when ProgramArguments is specified | Limited: Displayed correctly but saved incorrectly for jobs which also have ProgramArguments set |
| ProgramArguments | Yes* | Yes | Yes | Yes | Yes |
| BundleProgram | Yes* | Yes | No | No | No |
| StandardInPath | Yes* | No | No | No | No |
| StandardOutPath | Yes* | Yes | Yes | Yes | Yes |
| WorkingDirectory | Yes* | Yes | No | No | Yes |
| EnvironmentVariables | Yes* | Yes | No | Yes | No |
| Triggers |
| KeepAlive | Yes*: Always, AfterInitialDemand, SuccessfulExit, Crashed, NetworkStatus, PathState, OtherJobActive, OtherJobEnabled | Limited: Crashed, OtherJobEnabled, PathState, SuccessfulExit | Limited: Always | No | Limited: Always |
| StartInterval | Yes* | Yes | Limited: Does not work in combination with StartCalendarInterval, RunAtLoad or WatchPaths | Limited: Does not work in combination with StartCalendarInterval | Limited: Not in combination with StartCalendarInterval |
| StartCalendarInterval | Yes*: Additional support for creating sophisticated schedules from cron time specs instead of tediously entering dozens or hundreds of time stamps | Yes: Requires manual addition of every single time stamp | Yes: Requires manual addition of every single time stamp | Yes: Requires manual addition of every single time stamp | Yes: Requires manual addition of every single time stamp |
| QueueDirectories | Yes* | Yes | No | No | No |
| RunAtLoad | Yes* | Yes | Limited: Does not work in combination with StartInterval, StartCalendarInterval, WatchPaths | Yes | Yes |
| StartOnMount | Yes | Yes | No | No | No |
| WatchPaths | Yes* | Yes | Limited Single path only; Will silently remove other paths which might have been configured; Does not work in combination with StartInterval, StartCalendarInterval, RunAtLoad | No | No |
| OnDemand | Yes* | No | No | No | No |
| Security |
| RootDirectory | Yes* | No | No | No | No |
| Umask | Yes: Dedicated control; Info section which explains the outcome of the configuration | Yes: Dedicated control | No | No | No |
| SessionCreate | Yes* | Yes | No | No | No |
| GroupName | Yes*: Dedicated control preventing input errors | Yes: Freeform text | No | No | No |
| InitGroups | Yes* | Yes | No | No | No |
| UserName | Yes*: Dedicated control preventing input errors | Yes: Freeform text | No | No | No |
| Run Constraints |
| Enabled | Yes* | Yes | No | No | No |
| LaunchOnlyOnce | Yes | Yes | No | No | No |
| LimitLoadFromHost | Yes | No | No | No | No |
| LimitLoadToHost | Yes | No | No | No | No |
| LimitLoadToSessionType | Yes* | Yes | No | No | No |
| LimitLoadToHardware | Limited: Via Expert Editor | No: Control exists but does not work | No | No | No |
| Control |
| AbandonProcessGroup | Yes | Yes | No | No | No |
| EnablePressureExit | Yes* | Yes | No | No | No |
| EnableTransactions | Yes | Yes | No | No | No |
| ExitTimeout | Yes* | Yes | No | No | No |
| HardResourceLimits | Yes* | Yes | No | No | No |
| SoftResourceLimits | Yes* | Yes | No | No | No |
| inetdCompatibility | Yes | No | No | No | No |
| ThrottleInterval | Yes* | No | No | No | No |
| TimeOut | Yes* | No | No | No | No |
| IPC |
| MachServices | Yes*: Dedicated, fully documented control supporting all subkeys | Yes: Generic control with free text input suitable for launchd experts only | No | No | No |
| Sockets | Yes*: Dedicated, fully documented control supporting all subkeys | Yes: Generic control with free text input suitable for launchd experts only | No | No | No |
| Trouble shooting/Debugging |
| Debug | Yes | No | No | No | No |
| WaitForDebugger | Yes | No | No | No | No |
| StandardErrorPath | Yes* | Yes | No | No | No |
| Performance |
| LegacyTimers | Yes* | Yes | No | No | No |
| LowPriorityBackgroundIO | Yes | Yes | No | No | No |
| LowPriorityIO | Yes | Yes | No | No | No |
| MaterializeDatalessFiles | Yes | Yes | No | No | No |
| Nice | Yes* | Yes | No | No | No |
| ProcessType | Yes* | Yes | No | No | No |
| System Settings |
| AssociatedBundleIdentifiers | Yes* | Yes | No | No | No |