Heartbeat · Schedule tasks
Built-in and owner-created scheduled work — templates, cadences, the worker's 60-second re-sync, and how outcomes join back to the plan.
---
.. toc::
Two kinds of tasks, one scheduler
Built-in tasks are code: the frozen SCHEDULE list plus job bodies in lib/pulse/network_jobs.py (satellite sweep every 5 minutes, hourly traffic rollup, daily wallet summary, daily digest, nightly prune).
Dynamic tasks are rows: created at [/admin/heartbeat/tasks](/admin/heartbeat/tasks) (owner-only), each parameterizing a pre-built template at a chosen cadence. The pulse worker re-syncs its scheduler every 60 seconds, so a new task fires within a minute of clicking Create — no deploy, no restart.
.. exec::docs.heartbeat.tasks_examples
Outcome joins
Every run wraps itself in hb.task(<slug>), landing as task_start/task_end events. The schedule joins each planned slot against actual task_end events within ±15 minutes to grade it — complete, partial (finished with a note), error, or missed — which is what the calendar, the UP NEXT countdowns, and the runs pie all render.
.. admonition::The re-sync subtlety :icon: tabler:alert-triangle :color: yellow
The worker's sync loop only re-adds a scheduler job when its cadence fingerprint changes. Re-adding an unchanged interval job resets its next-fire time — an unconditional 60-second re-add would starve every hourly job forever. Parameters aren't in the fingerprint because they're re-read at fire time.
Guardrails
- Cadence floor: every 5 minutes.
- Tasks faster than every 30 minutes stay off the calendar (the rhythm
bar and satellite board tell their story) — a 5-minute task alone would put ~288 events a day on the grid.
- No template may make an LLM or metered-AI call. The hub observes; it
never generates.
The full operational playbook — including curated per-satellite task suggestions — lives at HEARTBEAT-TASKS.md in the repo root.
.. llms_copy::Heartbeat · Schedule tasks
---
*Source: /docs/heartbeat-tasks*
Note for AI agents: This is the static, prerendered view of an interactive Dash application served because we detected a non-JS user agent. Full prose docs:
- /docs/heartbeat-tasks/llms.txt — LLM-friendly documentation
- /sitemap.xml
- /robots.txt