{"id":47076057,"url":"https://github.com/chenwei791129/launchpal","last_synced_at":"2026-05-09T11:02:39.515Z","repository":{"id":335126984,"uuid":"1142662223","full_name":"chenwei791129/launchpal","owner":"chenwei791129","description":"A modern GUI for managing macOS LaunchAgents","archived":false,"fork":false,"pushed_at":"2026-03-25T17:27:05.000Z","size":1496,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-26T18:20:25.063Z","etag":null,"topics":["gui","launchagent","launchctl","macos","nuxt","wails"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chenwei791129.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-26T17:42:49.000Z","updated_at":"2026-03-25T17:26:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chenwei791129/launchpal","commit_stats":null,"previous_names":["chenwei791129/launchpal"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/chenwei791129/launchpal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenwei791129%2Flaunchpal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenwei791129%2Flaunchpal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenwei791129%2Flaunchpal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenwei791129%2Flaunchpal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chenwei791129","download_url":"https://codeload.github.com/chenwei791129/launchpal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenwei791129%2Flaunchpal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31307132,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gui","launchagent","launchctl","macos","nuxt","wails"],"created_at":"2026-03-12T06:42:12.542Z","updated_at":"2026-05-09T11:02:38.523Z","avatar_url":"https://github.com/chenwei791129.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LaunchPal\n\nA modern GUI for managing macOS LaunchAgents.\n\n## Features\n\n- 🎯 Manage LaunchAgents with an intuitive interface\n- 👁️ View user-level and system-level services\n- 📊 View service status in real-time\n- ▶️ Start/Stop user services with one click\n- ⚡ Run Now (Kickstart) — start a service immediately with one click (`launchctl kickstart -k`)\n- 📋 View service logs (stdout/stderr)\n- 🧹 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)\n- ➕ Create and configure new services\n- ⏰ Schedule services with Calendar Interval or Fixed Interval\n- 📅 Cron-style range (`9-17`) and enumeration (`1,3,5`) syntax with automatic expansion\n- 🌐 Configure environment variables for services\n- ✏️ Edit existing service configurations\n- 🔍 Browse system services (read-only) with heuristic status detection (no elevation required); ambiguous matches are flagged with an info icon\n- 🔐 **Admin Mode** — manage `/Library/LaunchDaemons` system services with a single authorization per session (no persistent root process; helper exits when LaunchPal does)\n- 📄 Inspect plist files with syntax highlighting\n- 📂 Reveal plist files in Finder with one click\n- 💾 Automatic backup before modifications\n- 🔍 Side-by-side diff preview before restoring a backup (binary plists are auto-converted to XML)\n\n## Screenshots\n\n### Main Interface\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/main.png\" alt=\"LaunchPal Main Interface\" width=\"800\"\u003e\n\u003c/p\u003e\n\n### System Services\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/system_service.png\" alt=\"System Services View\" width=\"800\"\u003e\n\u003c/p\u003e\n\n### Service Logs\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/logs.png\" alt=\"Service Logs\" width=\"800\"\u003e\n\u003c/p\u003e\n\n### Plist Inspector\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/inspect.png\" alt=\"Plist Inspector\" width=\"800\"\u003e\n\u003c/p\u003e\n\n## Installation\n\n### Homebrew (Recommended)\n\n```bash\nbrew install --cask chenwei791129/apps/launchpal\n```\n\nOr add the tap first:\n\n```bash\nbrew tap chenwei791129/apps\nbrew install --cask launchpal\n```\n\n\u003e **Note:** LaunchPal is not code-signed. The quarantine attribute is automatically removed during Homebrew installation so macOS Gatekeeper will not block the app.\n\n### Download\n\nDownload the latest release from the [Releases](https://github.com/chenwei791129/launchpal/releases) page.\n\n### IMPORTANT: Unsigned Application\n\nLaunchPal is currently **not signed with an Apple Developer certificate**. macOS will block unsigned applications from running by default.\n\nAfter downloading the `.dmg` file, open it and drag **LaunchPal.app** to the **Applications** folder. Then remove the quarantine attribute before running it:\n\n```bash\nxattr -dr com.apple.quarantine /Applications/launchpal.app\n```\n\nAlternatively, 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.\n\n### Building from Source\n\nIf you prefer to build from source:\n\n```bash\n# Clone the repository\ngit clone https://github.com/chenwei791129/launchpal.git\ncd launchpal\n\n# Install dependencies\nmake setup\n\n# Build the application\nmake build\n\n# The app will be in build/bin/launchpal.app\n```\n\n## Admin Mode\n\nLaunchPal can manage system services under `/Library/LaunchDaemons` via an optional **Admin Mode**:\n\n1. Open **Settings** → **Admin Mode** → **Enable Admin Mode**.\n2. macOS prompts once for your password (or Touch ID) and launches a root-privileged helper process.\n3. While Admin Mode is enabled, the **System Services** page lets you Start / Stop / Restart / Edit / Delete / Create daemons.\n4. Click **Disable Admin Mode** (or quit LaunchPal) to stop the helper — nothing persists on the system.\n\n**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).\n\n**Scope of Admin Mode writes**: only `/Library/LaunchDaemons/`. `/System/Library/LaunchDaemons/` remains read-only under Admin Mode (SIP would reject writes anyway).\n\n## Known Limitations\n\n- User services (`~/Library/LaunchAgents`) can be managed without authorization.\n- 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).\n- Apple system services (`/System/Library/LaunchDaemons`) are always read-only.\n- Some system services may require Full Disk Access permission to view.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/?repos=chenwei791129%2Flaunchpal\u0026type=date\u0026legend=top-left\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=chenwei791129/launchpal\u0026type=date\u0026theme=dark\u0026legend=top-left\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/chart?repos=chenwei791129/launchpal\u0026type=date\u0026legend=top-left\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/chart?repos=chenwei791129/launchpal\u0026type=date\u0026legend=top-left\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenwei791129%2Flaunchpal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchenwei791129%2Flaunchpal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenwei791129%2Flaunchpal/lists"}