From 30e3f004e5e5e793f6a5283c060c864c7daa4eff Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Thu, 19 Feb 2026 19:56:29 -0500 Subject: [PATCH] Docs: clarify heartbeat active-hours zero-width and 24/7 setup --- docs/gateway/heartbeat.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/gateway/heartbeat.md b/docs/gateway/heartbeat.md index 36550e35aec..9cfeea19a3d 100644 --- a/docs/gateway/heartbeat.md +++ b/docs/gateway/heartbeat.md @@ -163,6 +163,16 @@ Restrict heartbeats to business hours in a specific timezone: Outside this window (before 9am or after 10pm Eastern), heartbeats are skipped. The next scheduled tick inside the window will run normally. +### 24/7 setup + +If you want heartbeats to run all day, use one of these patterns: + +- Omit `activeHours` entirely (no time-window restriction). +- Set a full-day window: `activeHours: { start: "00:00", end: "24:00" }`. + +Do not set the same `start` and `end` time (for example `08:00` to `08:00`). +That is treated as a zero-width window, so heartbeats are always skipped. + ### Multi account example Use `accountId` to target a specific account on multi-account channels like Telegram: @@ -214,6 +224,7 @@ Use `accountId` to target a specific account on multi-account channels like Tele - Omitted or `"user"`: uses your `agents.defaults.userTimezone` if set, otherwise falls back to the host system timezone. - `"local"`: always uses the host system timezone. - Any IANA identifier (e.g. `America/New_York`): used directly; if invalid, falls back to the `"user"` behavior above. + - `start` and `end` must not be equal for an active window; equal values are treated as zero-width (always outside the window). - Outside the active window, heartbeats are skipped until the next tick inside the window. ## Delivery behavior