Features How It Works Docs GitHub
Download for macOS
Now in public beta

Your Mac's automation,
visible and under control.

A native macOS dashboard for managing LaunchAgents. See every scheduled job, its status, logs, and schedule -- without writing XML or memorizing launchctl commands.

Terminal
$ brew install launchpad
==> Downloading launchpad-1.0.0.arm64.pkg...
==> Installing...
LaunchPad installed successfully.

$ open -a LaunchPad
Scanning LaunchAgents...
Found 47 agents | 38 active | 2 failed | 7 idle
Dashboard ready at localhost:24680

The problem

Managing launchd is stuck in 2005

Apple provides zero GUI tooling for launchd. Power users are left cobbling together XML files, arcane CLI commands, and scattered log files.

XML plists are hostile

Creating a LaunchAgent means hand-writing well-formed XML. A single missing tag or wrong key type causes silent failure. No validation, no error messages -- just a job that never runs.

launchctl breaks between versions

The CLI has had multiple incompatible API changes. Legacy commands (load, unload) print deprecation warnings. Modern commands use an unintuitive gui/501/ domain syntax. Good luck remembering which to use.

Failures are completely silent

If a job fails at 3 AM, you will not know until you manually check. No notifications, no log aggregation, no status dashboard. Failures go unnoticed for days or weeks.

Features

Everything you need to manage launchd

Built for developers who want visibility into their macOS background jobs without digging through plist files and system logs.

Agent Discovery

Automatically scans every LaunchAgent across ~/Library/LaunchAgents and system paths. Parses plists, cross-references with launchctl, and shows live status -- loaded, running, failed, or idle.

Visual Job Builder

Create launchd jobs through a form -- not XML. Pick an executable, set arguments and environment variables, configure advanced options. LaunchPad generates a valid plist and registers it with the system.

Triple Schedule Engine

Three ways to define when a job runs: a visual calendar builder, a cron expression with human-readable preview, or plain English like "every weekday at 9am." All three stay in sync.

Event Triggers

Go beyond schedules. Trigger jobs on file system changes (WatchPaths), when items appear in a directory, on volume mount, network connect, or at login. Combine event triggers with time schedules.

Real-time Logs

Streaming stdout and stderr with search, filters, and ANSI color rendering. Full execution history per job -- start time, duration, exit code. No more tail -f across scattered log files.

Smart Organization

Folders for hierarchical grouping, color-coded tags for cross-cutting labels, and full-text search across job names, commands, and metadata. Manage 100+ agents without losing your mind.

Touch ID Security

Destructive operations -- deleting jobs, modifying commands, bulk actions -- require biometric confirmation via Touch ID. A defense-in-depth layer preventing accidental damage to critical automation.

How it works

Up and running in under a minute

No accounts, no cloud setup, no configuration files. Install, launch, and you are done.

1

Install

One Homebrew command. Supports Apple Silicon and Intel.

$ brew install launchpad
2

Launch

Open the app and it automatically discovers every LaunchAgent on your system. User agents, system agents, Homebrew services -- all in one place.

3

Manage

Create, edit, schedule, and monitor jobs from one dashboard. Start, stop, and restart with a click. Get notified the moment something fails.

Under the hood

Built on macOS, for macOS

LaunchPad is not a cross-platform Electron wrapper. It is a native macOS application purpose-built for the platform it manages.

Native SwiftUI

Built with Swift and SwiftUI for a fast, native feel that respects macOS conventions and system resources.

Local-first, no cloud

Zero network requests. No accounts, no telemetry, no data leaving your machine. Everything runs on localhost.

Sandboxed with privilege escalation

Runs with minimal permissions by default. Elevated operations (system agents, protected paths) use temporary privilege escalation via Touch ID.

SQLite + Keychain

Job metadata and execution history in a local SQLite database. Secrets and credentials stored in the macOS Keychain.

XPC Services for isolation

Privileged operations run in isolated XPC helper processes. If a helper crashes, the main app is unaffected.

What LaunchPad generates for you

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.user.backup-photos</string>

  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/rsync</string>
    <string>-avz</string>
    <string>~/Photos/</string>
    <string>/Volumes/Backup/Photos/</string>
  </array>

  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>2</integer>
    <key>Minute</key>
    <integer>0</integer>
  </dict>

  <key>StandardOutPath</key>
  <string>~/Library/Logs/LaunchPad/backup-photos.log</string>
  <key>StandardErrorPath</key>
  <string>~/Library/Logs/LaunchPad/backup-photos.err</string>
</dict>
</plist>

A backup job generated by LaunchPad's visual builder. You fill in a form, it writes the XML.

FAQ

Frequently Asked Questions

Yes. LaunchPad is fully open source under the MIT license. Free to use, free to modify, free to distribute. There are no paid tiers, no feature gates, and no telemetry.
Absolutely. On first launch, LaunchPad scans ~/Library/LaunchAgents and /Library/LaunchAgents for all existing plist files. It parses them, cross-references their status with launchctl, and displays them in the dashboard. Agents not created by LaunchPad are marked as "External" and shown as read-only -- you can view their config and logs, but editing and deletion require importing them first.
LaunchPad requires macOS 13 (Ventura) or later. It is tested and optimized for the latest three major releases. Both Apple Silicon and Intel Macs are supported.
No. LaunchPad manages user-level LaunchAgents by default, which require no elevated permissions. System-level LaunchDaemons are visible in read-only mode. If you need to perform a privileged operation (like modifying a system agent), LaunchPad will prompt for Touch ID or your password via temporary privilege escalation -- it never runs as root persistently.
Lingon and LaunchControl are capable tools, but they focus primarily on plist editing. LaunchPad takes a different approach: it is a full management dashboard with execution history, real-time log streaming, failure notifications, triple schedule input (visual + cron + natural language), job organization (folders and tags), and Touch ID security. It is also open source and free, whereas Lingon and LaunchControl are paid commercial apps.
Yes. Homebrew services are just LaunchAgents under the hood -- brew services creates plist files in ~/Library/LaunchAgents. LaunchPad automatically discovers them alongside your other agents. You can view their configuration, monitor their logs, and see their run status. They are displayed with a "Homebrew" badge for easy identification.
No. LaunchPad makes zero network requests. There is no analytics, no crash reporting, no update pings, and no telemetry of any kind. Your job configurations, execution logs, and credentials never leave your machine. The app is fully auditable -- the source code is public.

Stop fighting launchctl.
Start managing your Mac.

One dashboard for every LaunchAgent on your system. Create jobs in seconds, catch failures in minutes, and never write a plist by hand again.

Built for macOS Ventura and later. Apple Silicon and Intel. MIT License.