An open API service indexing awesome lists of open source software.

https://github.com/chenwei791129/launchpal

A modern GUI for managing macOS LaunchAgents
https://github.com/chenwei791129/launchpal

gui launchagent launchctl macos nuxt wails

Last synced: about 2 months ago
JSON representation

A modern GUI for managing macOS LaunchAgents

Awesome Lists containing this project

README

          

# LaunchPal

A modern GUI for managing macOS LaunchAgents.

## Features

- ๐ŸŽฏ Manage LaunchAgents with an intuitive interface
- ๐Ÿ‘๏ธ View user-level and system-level services
- ๐Ÿ“Š View service status in real-time
- โ–ถ๏ธ Start/Stop user services with one click
- โšก Run Now (Kickstart) โ€” start a service immediately with one click (`launchctl kickstart -k`)
- ๐Ÿ“‹ View service logs (stdout/stderr)
- ๐Ÿงน Clear stdout / stderr logs from the Logs tab (one-click in-place truncate; system daemons fall back to the privileged helper only when the file is not user-writable)
- โž• Create and configure new services
- โฐ Schedule services with Calendar Interval or Fixed Interval
- ๐Ÿ“… Cron-style range (`9-17`) and enumeration (`1,3,5`) syntax with automatic expansion
- ๐ŸŒ Configure environment variables for services
- โœ๏ธ Edit existing service configurations
- ๐Ÿ” Browse system services (read-only) with heuristic status detection (no elevation required); ambiguous matches are flagged with an info icon
- ๐Ÿ” **Admin Mode** โ€” manage `/Library/LaunchDaemons` system services with a single authorization per session (no persistent root process; helper exits when LaunchPal does)
- ๐Ÿ“„ Inspect plist files with syntax highlighting
- ๐Ÿ“‚ Reveal plist files in Finder with one click
- ๐Ÿ’พ Automatic backup before modifications
- ๐Ÿ” Side-by-side diff preview before restoring a backup (binary plists are auto-converted to XML)

## Screenshots

### Main Interface


LaunchPal Main Interface

### System Services


System Services View

### Service Logs


Service Logs

### Plist Inspector


Plist Inspector

## Installation

### Homebrew (Recommended)

```bash
brew install --cask chenwei791129/apps/launchpal
```

Or add the tap first:

```bash
brew tap chenwei791129/apps
brew install --cask launchpal
```

> **Note:** LaunchPal is not code-signed. The quarantine attribute is automatically removed during Homebrew installation so macOS Gatekeeper will not block the app.

### Download

Download the latest release from the [Releases](https://github.com/chenwei791129/launchpal/releases) page.

### IMPORTANT: Unsigned Application

LaunchPal is currently **not signed with an Apple Developer certificate**. macOS will block unsigned applications from running by default.

After downloading the `.dmg` file, open it and drag **LaunchPal.app** to the **Applications** folder. Then remove the quarantine attribute before running it:

```bash
xattr -dr com.apple.quarantine /Applications/launchpal.app
```

Alternatively, you can try right-clicking the app and selecting "Open" from the context menu, which may prompt you to allow the unsigned app to run.

### Building from Source

If you prefer to build from source:

```bash
# Clone the repository
git clone https://github.com/chenwei791129/launchpal.git
cd launchpal

# Install dependencies
make setup

# Build the application
make build

# The app will be in build/bin/launchpal.app
```

## Admin Mode

LaunchPal can manage system services under `/Library/LaunchDaemons` via an optional **Admin Mode**:

1. Open **Settings** โ†’ **Admin Mode** โ†’ **Enable Admin Mode**.
2. macOS prompts once for your password (or Touch ID) and launches a root-privileged helper process.
3. While Admin Mode is enabled, the **System Services** page lets you Start / Stop / Restart / Edit / Delete / Create daemons.
4. Click **Disable Admin Mode** (or quit LaunchPal) to stop the helper โ€” nothing persists on the system.

**Why session-scoped?** LaunchPal is unsigned and cannot register a persistent privileged helper. The session-scoped model trades "enter your password once per launch" for "no root daemon lingers on your machine after LaunchPal exits". The helper exits automatically if LaunchPal crashes or is force-quit (parent PID watchdog, 2-second response time).

**Scope of Admin Mode writes**: only `/Library/LaunchDaemons/`. `/System/Library/LaunchDaemons/` remains read-only under Admin Mode (SIP would reject writes anyway).

## Known Limitations

- User services (`~/Library/LaunchAgents`) can be managed without authorization.
- System services (`/Library/LaunchDaemons`) require Admin Mode; authorization is prompted **once per LaunchPal session** and not cached across sessions (by design โ€” no persistent root daemon).
- Apple system services (`/System/Library/LaunchDaemons`) are always read-only.
- Some system services may require Full Disk Access permission to view.

## License

MIT License - see [LICENSE](LICENSE) file for details.

## Star History





Star History Chart