Skip to content

Latest commit

 

History

History
145 lines (111 loc) · 5.42 KB

File metadata and controls

145 lines (111 loc) · 5.42 KB

Ignition

A modern, native macOS launch agent manager built with SwiftUI. Browse, control, create, and monitor launchd agents and daemons — all from one app.

Ignition is a free, open-source alternative to LaunchControl.

macOS 15+ Swift 6 License Release

Download

Download Ignition v1.0.0 — Open the DMG and drag Ignition to your Applications folder.

Screenshots

Agent List

Browse agents across all launchd domains with status indicators, tags, and search filtering.

Agent List

Agent Detail

Full agent detail view with action buttons, configuration properties, activity history, and plist editor.

Agent Detail

Health Dashboard

At-a-glance system health with overview cards, problem agent detection, and resource monitoring for running agents.

Health Dashboard

Features

Agent Management

  • Browse all domains — User Agents, Global Agents/Daemons, System Agents/Daemons
  • Start, Stop, Load, Unload — Full launchctl control with one click
  • Search & Filter — Quickly find agents by label or program path
  • Bulk Operations — Multi-select agents for batch load/unload/start/stop

Live Log Viewer

  • Real-time log tailing using kqueue file monitoring
  • Supports both stdout and stderr paths
  • Auto-scroll, search filtering, copy, and clear
  • Stderr lines highlighted in red

In-App Plist Editor

  • Recursive key-value editor with type-aware controls
  • Add/remove keys, edit nested dictionaries and arrays
  • Automatic backup before saving
  • Read-only mode for system domains
  • Admin password prompt for global domains (via AppleScript)

Create Agent Wizard

  • 5 templates: Run Script, Watch Folder, Run at Login, Scheduled Task, Blank
  • 3-step workflow: Template → Configure → Review XML → Create
  • Automatic plist validation and loading

Menu Bar Quick Access

  • Pin frequently-used agents to the menu bar
  • Status dots and load/unload toggles for pinned agents
  • Always-accessible flame icon in the menu bar

Health Dashboard

  • Overview cards: total agents, running count, problems, crash loops
  • CPU and memory monitoring for running agents (via ps)
  • Crash loop detection (3+ crashes in the last hour)
  • Problem agents list with actionable details

Activity History

  • SQLite-backed event log tracking start/stop/crash/load/unload events
  • Per-agent timeline in the detail view
  • Global timeline in the Health Dashboard
  • Automatic state change detection on each refresh cycle

Notifications

  • macOS notifications when pinned agents crash or stop
  • Configurable: crash alerts, stop alerts, or both
  • Uses native UserNotifications framework

Import / Export

  • Export single agents or bulk export with manifest
  • Import plist files or Ignition export bundles
  • One-click backup of all user agents

Requirements

  • macOS 15.0 (Sequoia) or later
  • Xcode 16+ (to build from source)
  • XcodeGen (to generate the Xcode project)

Building

# Install XcodeGen if you haven't already
brew install xcodegen

# Clone and build
git clone https://github.com/Acelogic/Ignition.git
cd Ignition
xcodegen generate
xcodebuild -scheme Ignition build

To run the built app:

open ~/Library/Developer/Xcode/DerivedData/Ignition-*/Build/Products/Debug/Ignition.app

Or open Ignition.xcodeproj in Xcode and press Cmd+R.

Architecture

Ignition/
├── IgnitionApp.swift              # App entry point, scene setup
├── Models/
│   ├── LaunchAgent.swift          # Agent model, domain & status enums
│   ├── PlistValue.swift           # Recursive typed plist representation
│   └── AgentTemplate.swift        # Wizard templates & form data
├── Services/
│   ├── LaunchDService.swift       # Core agent manager (launchctl wrapper)
│   ├── LogTailService.swift       # kqueue-based file tailing
│   ├── PlistWriteService.swift    # Plist validation & atomic writing
│   ├── ActivityHistoryService.swift # SQLite event store
│   ├── HealthMonitorService.swift # CPU/memory polling & crash detection
│   ├── NotificationService.swift  # macOS notification delivery
│   └── ImportExportService.swift  # Plist import/export/backup
└── Views/
    ├── ContentView.swift          # 3-column NavigationSplitView + sidebar
    ├── AgentListView.swift        # Agent list with bulk operations
    ├── AgentRowView.swift         # List row with status, tags, pin icon
    ├── AgentDetailView.swift      # Full agent detail with all sections
    ├── LogViewerView.swift        # Live log viewer UI
    ├── PlistEditorView.swift      # Recursive plist key-value editor
    ├── CreateAgentView.swift      # 3-step creation wizard
    ├── MenuBarView.swift          # Menu bar popover
    ├── HealthDashboardView.swift  # Health overview + resource table
    └── ActivityHistoryView.swift  # Event timeline

License

MIT License. See LICENSE for details.