{"id":50431352,"url":"https://github.com/hiroppy/launched-cli","last_synced_at":"2026-05-31T14:30:49.693Z","repository":{"id":347461668,"uuid":"1194134586","full_name":"hiroppy/launched-cli","owner":"hiroppy","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-28T00:54:14.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T07:41:17.141Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hiroppy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-03-28T00:48:35.000Z","updated_at":"2026-03-28T00:54:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hiroppy/launched-cli","commit_stats":null,"previous_names":["hiroppy/launched-cli"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hiroppy/launched-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiroppy%2Flaunched-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiroppy%2Flaunched-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiroppy%2Flaunched-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiroppy%2Flaunched-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hiroppy","download_url":"https://codeload.github.com/hiroppy/launched-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiroppy%2Flaunched-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33735663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2026-05-31T14:30:49.616Z","updated_at":"2026-05-31T14:30:49.684Z","avatar_url":"https://github.com/hiroppy.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# launched-cli\n\nA TUI tool for viewing and managing macOS `launchd` services.\n\n## Features\n\n- Browse all LaunchAgents and LaunchDaemons with status at a glance\n- Tab-based filtering: **User** / **System** / **All** / **Timeline**\n- Auto-grouped by label category (e.g. `com.example.backup.*` → `example`)\n- Next run time calculation from `StartCalendarInterval` and `StartInterval`\n- Error detail panel showing log tail for failed services\n- Load/Unload services directly from the TUI\n- Auto-refresh every 2 seconds\n\n## Screenshot\n\n```\n┌launched──────────────────────────────────────────────────────────────┐\n│ User │ System │ All │ Timeline                                      │\n└──────────────────────────────────────────────────────────────────────┘\n┌──────────────────────────────────────────────────────────────────────┐\n│      Label                                       Exit   Next Run    │\n│                                                                      │\n│      ── backup ──                                                    │\n│\u003e ✅  com.example.backup.daily                    0      07:00        │\n│  ✅  com.example.backup.weekly                   0      04/01 03:00  │\n│      ── myapp ──                                                     │\n│  ✅  com.myapp.web-server                        0      -            │\n│  ❌  com.myapp.worker                            1      14:30        │\n│  🔄  com.myapp.scheduler                        -      15:00        │\n│      ── system ──                                                    │\n│  ⏸️   com.system.updater                         -      -            │\n│                                                                      │\n└────────────────────── ✅ Success  ❌ Failed  🔄 Running  ⏸️ Unloaded ┘\n```\n\n### Error Detail Panel\n\nWhen a failed service is focused, the error log is shown below the list:\n\n```\n┌ [Error] com.myapp.worker (exit: 1) ─────────────────────────────────┐\n│ Error: connection refused to localhost:5432                           │\n│   at Worker.connect (src/worker.ts:42)                               │\n│   at processTicksAndRejections (node:internal/process/...)           │\n└──────────────────────────────────────────────────────────────────────┘\n```\n\n### Timeline Tab\n\nShows upcoming scheduled runs sorted by time, without status columns:\n\n```\n┌launched──────────────────────────────────────────────────────────────┐\n│ User │ System │ All │ Timeline                                      │\n└──────────────────────────────────────────────────────────────────────┘\n┌──────────────────────────────────────────────────────────────────────┐\n│    Label                                             Next Run        │\n│                                                                      │\n│ \u003e  com.example.backup.daily                          07:00           │\n│    com.myapp.worker                                  14:30           │\n│    com.myapp.scheduler                               15:00           │\n│    com.example.backup.weekly                         04/01 03:00     │\n│    com.myapp.web-server                              -               │\n│    com.system.updater                                -               │\n│                                                                      │\n└──────────────────────────────────────────────────────────────────────┘\n```\n\n## Install\n\n```bash\ncargo install --git https://github.com/hiroppy/launched-cli.git\n```\n\n## Usage\n\n```bash\nlaunched\n```\n\n## Key Bindings\n\n| Key | Action |\n|-----|--------|\n| `←` `→` `h` `l` `Tab` | Switch tab |\n| `↑` `↓` `j` `k` | Move cursor |\n| `Enter` | Open action menu (Load/Unload) |\n| `Ctrl+C` `q` | Quit |\n\n## Scanned Directories\n\n| Directory | Tab |\n|-----------|-----|\n| `~/Library/LaunchAgents/` | User |\n| `/Library/LaunchAgents/` | System |\n| `/Library/LaunchDaemons/` | System |\n\n## Tech Stack\n\n- [Rust](https://www.rust-lang.org/)\n- [ratatui](https://github.com/ratatui/ratatui) + [crossterm](https://github.com/crossterm-rs/crossterm)\n- [plist](https://crates.io/crates/plist)\n- [chrono](https://crates.io/crates/chrono)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiroppy%2Flaunched-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhiroppy%2Flaunched-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiroppy%2Flaunched-cli/lists"}