{"id":51481467,"url":"https://github.com/yankewei/herdr-focus-notify","last_synced_at":"2026-07-07T02:01:13.542Z","repository":{"id":367769136,"uuid":"1282159515","full_name":"yankewei/herdr-focus-notify","owner":"yankewei","description":"Clickable macOS notifications for Herdr agents. Sends a native toast when an agent becomes blocked or done; clicking it brings the terminal forward and focuses the correct Herdr pane.","archived":false,"fork":false,"pushed_at":"2026-07-05T12:47:56.000Z","size":257,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-05T14:15:29.388Z","etag":null,"topics":["alerter","herdr","herdr-plugin","macos","notifications","productivity","rust"],"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/yankewei.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-06-27T11:58:26.000Z","updated_at":"2026-07-05T12:48:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yankewei/herdr-focus-notify","commit_stats":null,"previous_names":["yankewei/herdr-focus-notify"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/yankewei/herdr-focus-notify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankewei%2Fherdr-focus-notify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankewei%2Fherdr-focus-notify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankewei%2Fherdr-focus-notify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankewei%2Fherdr-focus-notify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yankewei","download_url":"https://codeload.github.com/yankewei/herdr-focus-notify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yankewei%2Fherdr-focus-notify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35211553,"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-07-07T02:00:07.222Z","response_time":90,"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":["alerter","herdr","herdr-plugin","macos","notifications","productivity","rust"],"created_at":"2026-07-07T02:01:12.239Z","updated_at":"2026-07-07T02:01:13.502Z","avatar_url":"https://github.com/yankewei.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Herdr Focus Notify\n\nEnglish | [简体中文](README.zh-CN.md)\n\nSend clickable macOS notifications when a Herdr agent needs attention (`blocked`) or finishes (`done`). Clicking a notification focuses the matching Herdr pane.\n\nCommon agent notifications use bundled local icons, including Codex, Claude Code, Claude, Cursor, Gemini CLI, Gemini, GitHub Copilot, DeepSeek, Grok, Qwen, OpenCode, OpenHands, Roo Code, Cline, Windsurf, Devin, Manus, Kiro, Trae, Zencoder, Lovable, and v0.\n\nNotifications are sent only when you are **not already looking at that pane**:\n\n- Herdr is not the frontmost app.\n- Herdr is frontmost, but another pane is focused.\n\n## Requirements\n\n- macOS\n- Herdr `0.7.0` or later\n- [alerter](https://github.com/vjeantet/alerter), used for clickable notifications\n\nInstall alerter:\n\n```bash\nbrew install vjeantet/tap/alerter\n```\n\n## Installation\n\nBuild and link locally:\n\n```bash\ncargo build --release\nherdr plugin link .\n```\n\nOr install from GitHub:\n\n```bash\nherdr plugin install yankewei/herdr-focus-notify\n```\n\n## CLI\n\n```bash\nherdr-focus-notify --help\nherdr-focus-notify --version\nherdr-focus-notify --test\n```\n\n`--help` and `--version` print to stdout. `--test` sends a foreground test notification. Configuration or notification backend failures are printed to stderr and return a non-zero exit code. Normal plugin invocations without `HERDR_PLUGIN_EVENT_JSON` still exit quietly with `0`.\n\n## Configuration\n\nFind the plugin config directory:\n\n```bash\nherdr plugin config-dir herdr-focus-notify\n```\n\nCreate a `.env` file in that directory.\n\nThe `.env` parser supports `KEY=value`, optional `export KEY=value`, single-quoted values, double-quoted values, and inline comments after unquoted values.\n\n### Recommended\n\n```env\nHERDR_FOCUS_NOTIFY_NOTIFIER=/opt/homebrew/bin/alerter\nHERDR_FOCUS_NOTIFY_ACTIVATE_APP=kitty\n```\n\n`ACTIVATE_APP` can be an app name, such as `kitty`, or a `.app` path, such as `/Applications/kitty.app`. This is easier to configure than a bundle id.\n\nConfiguring `ACTIVATE_APP` is recommended. It is used to bring your terminal app to the front when you click a notification, and to decide whether you are already looking at the current Herdr pane. The plugin skips a notification only when it can confirm both conditions: the current focused pane is the target pane, and the frontmost app is the app resolved from `ACTIVATE_APP`. If macOS frontmost-app detection fails, or the app name cannot be resolved, the plugin sends the notification to avoid missing an important state change.\n\n### Common Options\n\n| Variable | Description | Default |\n|---|---|---|\n| `HERDR_FOCUS_NOTIFY_NOTIFIER` | Notification backend path. The plugin reports an error if no executable notifier is found. | Auto-detect `alerter` |\n| `HERDR_FOCUS_NOTIFY_ACTIVATE_APP` | Terminal app name or `.app` path to activate when a notification is clicked. | None |\n| `HERDR_FOCUS_NOTIFY_TIMEOUT` | Seconds before a notification auto-dismisses. Set to `0` to keep it until dismissed. | `3600` |\n\nIf `ACTIVATE_APP` is not configured, clicking a notification still runs `herdr agent focus \u003cpane\u003e`, but the plugin cannot reliably tell whether the frontmost app is the terminal that hosts Herdr, so it may send extra notifications.\n\nFor troubleshooting, temporarily set `HERDR_FOCUS_NOTIFY_DEBUG=1`. To pause the plugin without unlinking it, set `HERDR_FOCUS_NOTIFY_ENABLED=0`.\n\nBundled agent icons are vendored from `@lobehub/icons-static-png` under the MIT license. See `assets/icons/NOTICE.md`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyankewei%2Fherdr-focus-notify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyankewei%2Fherdr-focus-notify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyankewei%2Fherdr-focus-notify/lists"}