Skip to content

Get the alerts

Watcher delivers through channels. A watch lists the channels it wants, and each one is delivered independently.

Channel Status What it needs
telegram Fully supported A bot token and a chat id
push Fully supported (Android) A Firebase service account + the app installed
email Not implemented — logs to the console instead
  1. Create a bot. Message @BotFather on Telegram, send /newbot, and keep the token it gives you.

  2. Message your bot once. Bots cannot start conversations — you must speak first, or it can never reply to you.

  3. Find your chat id. Open https://api.telegram.org/bot<your-token>/getUpdates and read chat.id from the response.

  4. Configure it.

    .env
    telegram_bot_token=<your-bot-token>
    telegram_chat_id=<your-chat-id>
  5. Test it with pnpm run-due:force on a watch you expect to fire.

Optionally set TELEGRAM_ADMIN_CHAT_ID to route ⚠️ health alerts — a watch whose sources all failed, a crashed run — somewhere separate from your event alerts.

The Android app receives data-only push messages and renders them on the device, so your own notification preferences (alert tiers, quiet hours) are honoured even when the app is closed.

You need a Firebase project, its service-account JSON in FIREBASE_SERVICE_ACCOUNT_JSON, and the app signed in against your instance. Full setup: Push notifications and the mobile app guide.

🔔 Framework releases
Version 2.0 has been published as a stable release on the official blog.
"v2.0 is now generally available" (2026-08-12)
https://example.com/blog/v2-ga

Every alert carries the quote the decision rests on and a link to the page it came from, so you can check the claim yourself in one tap. That quote is not decorative: Watcher verifies it appears in the text it actually collected before the alert may fire at full strength. See Accuracy.

Delivery failures are retried automatically. An alert that could not be delivered on any channel is stored and replayed on the next run, without re-asking the model. The mechanics, including the attempt cap, are in Failures and retries; the diagnosis path is Alerts are not arriving.