{"id":50802512,"url":"https://github.com/lumpinif/agents-router","last_synced_at":"2026-06-12T21:33:21.536Z","repository":{"id":356861958,"uuid":"1232926009","full_name":"lumpinif/agents-router","owner":"lumpinif","description":"⚡ Fast, local-only AI agent updates across platforms, built in Rust. Codex on your computer -\u003e Agents Router -\u003e your Slack. 10+ agents and 10+ platforms supported. Full query and answer forwarding on rich platforms. Set up in 1-2 minutes with one command.","archived":false,"fork":false,"pushed_at":"2026-05-13T11:25:43.000Z","size":2142,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-13T11:26:53.647Z","etag":null,"topics":["agents-notifier","claude-code","codex","codex-desktop","coding-agents","cursor","dicord","email","feishu","hermes-agent","lark","notification-service","ntfy","openclaw","opencode","pushover","rust","slack","telegram","whatsapp"],"latest_commit_sha":null,"homepage":"","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/lumpinif.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-08T12:16:30.000Z","updated_at":"2026-05-13T11:22:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lumpinif/agents-router","commit_stats":null,"previous_names":["lumpinif/agents-notifier","lumpinif/agents-router"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/lumpinif/agents-router","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumpinif%2Fagents-router","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumpinif%2Fagents-router/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumpinif%2Fagents-router/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumpinif%2Fagents-router/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lumpinif","download_url":"https://codeload.github.com/lumpinif/agents-router/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lumpinif%2Fagents-router/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34263872,"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-06-12T02:00:06.859Z","response_time":109,"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":["agents-notifier","claude-code","codex","codex-desktop","coding-agents","cursor","dicord","email","feishu","hermes-agent","lark","notification-service","ntfy","openclaw","opencode","pushover","rust","slack","telegram","whatsapp"],"created_at":"2026-06-12T21:33:20.935Z","updated_at":"2026-06-12T21:33:21.523Z","avatar_url":"https://github.com/lumpinif.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# agents-router\n\nSet up local coding agent notifications in 2-3 minutes for Feishu/Lark, Slack, Discord, Telegram, Microsoft Teams, email, ntfy, Pushover, webhook, WhatsApp, or WeChat. Feishu/Lark Personal Agent can also turn project rooms into a two-way Codex Desktop control surface; thread replies are Experimental.\n\n---\n\n中文文档：[docs/README.zh-CN.md](docs/README.zh-CN.md)\n\n[Quick start](#quick-start)\n\n\u003e _\"Imagine [Codex Desktop App](https://openai.com/codex/) keeps working while you make coffee or do laundry._\n\u003e\n\u003e _The moment the job finishes, you get a notification and know it is time to come back.\"_\n\n⚡ Local-first signal routing for AI coding agents.\n\nBuilt for local agents like [Codex Desktop](https://openai.com/codex/), [Codex CLI](https://github.com/openai/codex), [Claude Code](https://claude.com/product/claude-code), GitHub Copilot CLI, Gemini CLI, Aider, Cursor CLI, OpenCode CLI, OpenClaw, and Hermes Agent CLI.\n\nBuilt in Rust 🦀. Fast, small, and quiet in the background.\n\n```text\nAgent on your computer -\u003e Agents Router -\u003e Your provider\n```\n\nNo cloud account. No hosted backend. No extra dashboard.\n\n## ✅ Support\n\nAgents:\n\n- [Codex Desktop](https://openai.com/codex/) on macOS and Windows\n- [Codex CLI](https://github.com/openai/codex) through hooks on macOS, Linux, and Windows\n- [Claude Code](https://claude.com/product/claude-code) through hooks on macOS, Linux, and Windows\n- [GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-command-reference) through hooks on macOS, Linux, and Windows\n- [Gemini CLI](https://google-gemini.github.io/gemini-cli/) through hooks on macOS, Linux, and Windows\n- [Aider](https://aider.chat/) through notification commands on macOS, Linux, and Windows\n- [Cursor CLI](https://docs.cursor.com/en/cli/overview) through a completion wrapper on macOS, Linux, and Windows\n- [OpenCode CLI](https://opencode.ai/) through plugins on macOS, Linux, and Windows\n- [OpenClaw](https://docs.openclaw.ai/) through plugin hooks on macOS, Linux, and Windows\n- [Hermes Agent CLI](https://hermes-agent.nousresearch.com/docs/user-guide/features/hooks) through plugin hooks on macOS, Linux, and Windows\n\nProviders (Where do you want to get the notification?):\n\n- Feishu/Lark Personal Agent; QR setup, project rooms, and Experimental Codex Desktop thread replies ([guide](docs/providers/feishu-lark-app-bot.md))\n- [Slack](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks/)\n- [Discord](https://docs.discord.com/developers/resources/webhook)\n- [Telegram](https://core.telegram.org/bots/api)\n- [Microsoft Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook)\n- [Email SMTP](https://www.rfc-editor.org/rfc/rfc6409)\n- [ntfy](https://ntfy.sh/)\n- [Pushover](https://pushover.net/api)\n- Feishu/Lark Custom Bot fallback ([Feishu](https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot), [Lark](https://open.larksuite.com/document/client-docs/bot-v3/add-custom-bot))\n- Webhook\n- [WhatsApp](https://developers.facebook.com/docs/whatsapp)\n- WeChat personal chat through iLink\n\n## 🔒 Privacy\n\nAgents Router runs locally.\n\nYour data does not go to an Agents Router cloud.\n\nNotifications go directly from your computer to your provider.\n\nFor Codex Desktop, it reads only completion data needed for the notification:\n\n- project\n- project path\n- session\n- Codex thread link\n- duration\n- branch\n- time\n- final answer preview by default, or full answer when enabled\n- prompt only when explicitly enabled\n- computer name\n\nIn Feishu/Lark, notifications are sent as Codex-colored interactive cards with a clickable Open in Codex button.\nThe button opens a local browser URL first, then hands off to Codex Desktop.\n\n\u003ca id=\"quick-start\"\u003e\u003c/a\u003e\n\n## ⚙️ Install - Step 1\n\nPick one install method. That is enough.\n\nRecommended:\n\nCopy this into your Terminal:\n\n```bash\nnpx --yes --prefer-online agents-router@latest setup\n```\n\nPrefer a persistent npm install:\n\n```bash\nnpm install -g agents-router\nagents-router setup\n```\n\nWithout Node.js/npm:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/lumpinif/agents-router/main/install.sh | sh\nagents-router setup\n```\n\nWindows PowerShell:\n\n```powershell\nirm https://raw.githubusercontent.com/lumpinif/agents-router/main/install.ps1 | iex\nagents-router setup\n```\n\nTo upgrade later, rerun the same install method you used the first time. If the\nlocal service is already running, the installer restarts it after replacing the\nbinary so the background service uses the new version too.\n\nFrom source:\n\n```bash\ngit clone https://github.com/lumpinif/agents-router.git\ncd agents-router\ncargo install --path .\nagents-router setup\n```\n\n## 🚀 Setup - Step 2\n\n```bash\nagents-router setup\n```\n\nFirst choose the CLI language. English is the default, and Simplified Chinese is available.\n\nThen setup asks for three choices:\n\n1. Which agent should it watch?\n2. Where should notifications go?\n3. Which completed tasks should send notifications?\n\nThen it writes config and starts the service. Providers with a fixed destination send a test notification. Feishu/Lark Personal Agent does not choose a single room during setup: scan the QR code, then use direct chat with `/new /absolute/project/path what you want Codex to do` to start a new Codex thread, or use `/bind /absolute/project/path` to choose where that project should send updates. You can also add the Personal Agent to a room, mention it, and send `/bind /absolute/project/path` to connect that room directly. If Codex later updates an unconnected project, Agents Router can ask you in direct chat whether to create a room, use an existing room, or ignore that project.\n\nFor optional settings such as answer detail, prompt inclusion, and advanced project filters, see [Setup](docs/setup.md).\n\nUse Feishu/Lark Personal Agent when you want the two-way project-room experience. Use Feishu/Lark Custom Bot only when you want a simple one-way fallback.\n\n## 🎉 That's it\n\nThe service runs locally:\n\n- macOS: LaunchAgent\n- Linux: systemd user service\n- Windows: Task Scheduler\n\nTo stop using the service, run `agents-router stop`.\n\nProvider setup guides:\n\n- [Feishu/Lark Personal Agent](docs/providers/feishu-lark-app-bot.md)\n- [Slack](docs/providers/slack.md)\n- [Discord](docs/providers/discord.md)\n- [Telegram](docs/providers/telegram.md)\n- [Microsoft Teams](docs/providers/microsoft-teams.md)\n- [Email SMTP](docs/providers/email-smtp.md)\n- [ntfy](docs/providers/ntfy.md)\n- [Pushover](docs/providers/pushover.md)\n- [Feishu/Lark Custom Bot](docs/providers/feishu-lark-custom-bot.md)\n- [Webhook](docs/providers/webhook.md)\n- [WhatsApp](docs/providers/whatsapp.md)\n- [WeChat](docs/providers/wechat.md)\n\nAgent setup guides:\n\n- [Codex CLI](docs/agents/codex-cli.md)\n- [Claude Code](docs/agents/claude-code.md)\n- [GitHub Copilot CLI](docs/agents/github-copilot-cli.md)\n- [Gemini CLI](docs/agents/gemini-cli.md)\n- [Aider](docs/agents/aider.md)\n- [Cursor CLI](docs/agents/cursor-cli.md)\n- [OpenCode CLI](docs/agents/opencode-cli.md)\n- [OpenClaw](docs/agents/openclaw.md)\n- [Hermes Agent CLI](docs/agents/hermes-agent-cli.md)\n\n## 🧹 Uninstall\n\nRemove Agents Router cleanly:\n\n```bash\nnpx --yes agents-router uninstall\n```\n\nIf you installed it globally with npm, remove the npm package after local cleanup:\n\n```bash\nagents-router uninstall\nnpm uninstall -g agents-router\n```\n\n## 🧭 Commands\n\n```bash\nagents-router setup    # set up or change agent/provider\nagents-router start    # start existing service\nagents-router status   # check service status\nagents-router safety reset # clear delivery safety pause state\nagents-router stop     # stop service\nagents-router uninstall # remove service, config, logs, and state\nagents-router watch    # foreground debug worker\n```\n\nFor Codex CLI, Agents Router installs the recommended Stop hook automatically when the active config includes `codex_cli`.\nManual CLI hooks can submit events with:\n\n```bash\nagents-router ingest --source codex_cli --format codex_cli_stop\n```\n\nCodex Desktop and Codex CLI may be enabled together. If the shared Codex Stop hook fires for a\nsession that Agents Router can identify as Codex Desktop, the hook is ignored and the Desktop watcher\nhandles that completion.\n\nAgents Router also has a delivery safety guard. If the same logical message is sent to the same\nprovider 5 times within 10 seconds, that message line is suppressed. If 3 different message lines\ntrigger suppression within 2 minutes, provider delivery pauses until you run\n`agents-router safety reset`. Suppressed notifications are intentionally dropped, not delayed for\nlater replay.\n\n```bash\nagents-router emit \\\n  --source claude_code \\\n  --title \"Claude Code\" \\\n  --body \"Claude Code finished a task.\"\n```\n\n```bash\nagents-router emit \\\n  --source opencode_cli \\\n  --title \"OpenCode CLI\" \\\n  --body \"OpenCode CLI finished a task.\"\n```\n\n```bash\nagents-router emit \\\n  --source gemini_cli \\\n  --title \"Gemini CLI\" \\\n  --body \"Gemini CLI finished a task.\"\n```\n\n`emit` only talks to the local service. Providers are sent by the service.\n\n## ✨ Example\n\nCodex Desktop + Lark integration, including Apple Watch push notifications.\n\n| Original source: Codex Desktop | Lark desktop notification |\n| --- | --- |\n| \u003cimg src=\"docs/assets/examples/codex-desktop-source.png\" alt=\"Codex Desktop source task that Agents Router watches\" width=\"520\"\u003e | \u003cimg src=\"docs/assets/examples/lark-desktop-notification.png\" alt=\"Lark desktop notification sent by Agents Router\" width=\"520\"\u003e |\n\n| Lark push preview | Apple Watch notification |\n| --- | --- |\n| \u003cimg src=\"docs/assets/examples/codex-lark-watch-cover.png\" alt=\"Agents Router Apple Watch push preview with Lark\" width=\"260\"\u003e | \u003cimg src=\"docs/assets/examples/codex-lark-watch-notification.png\" alt=\"Agents Router Apple Watch notification sent through Lark\" width=\"260\"\u003e |\n\n```text\nCodex Desktop\n\nProject: agents-router\nSession: README polish\nOpen in Codex: codex://threads/019e1049-2d6d-7de2-bcdf-f47346930b71\nDuration: 1m 32s\nBranch: main\nTime: 2026-05-10 01:35:42 +08:00\nSession ID: 019e1049-2d6d-7de2-bcdf-f47346930b71\n\nPreview: Updated the README with a clearer setup flow...\n```\n\n## 📝 Config\n\n```text\n~/.config/agents-router/config.toml\n```\n\nMost users should use `agents-router setup`.\nThe running service automatically reloads valid config changes.\n\n## 🧩 Core\n\n```text\nSource -\u003e Signal -\u003e Router -\u003e Provider\n```\n\nSimple core. More agents and providers over time.\n\nContributions welcome. 💛\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumpinif%2Fagents-router","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flumpinif%2Fagents-router","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flumpinif%2Fagents-router/lists"}