Novacula ships two built-in alert rules and an outbound webhook channel. Alerts open and resolve as incidents (one row in theDocumentation Index
Fetch the complete documentation index at: https://docs.novacula.io/llms.txt
Use this file to discover all available pages before exploring further.
AlertIncident table per open alert per subject), and each incident triggers a webhook delivery if the channel is enabled.
Built-in rules
| Rule | Subject | Fires when | Resolves when |
|---|---|---|---|
node_down | A node | desiredState = running AND observed status is stopped or error | observed status returns to running / syncing / starting |
disk_usage | A node | Reported disk usage exceeds the configured threshold | Usage drops back below the threshold |
ObservedNodeState is updated by the executor — typically every 10s. Incidents that meet the resolution condition are auto-closed; the close timestamp lands on resolvedAt.
Org-wide settings
From Settings → Notifications, you can configure:nodeDownEnabled— globally turn thenode_downrule on or off. Default: on.diskUsageEnabled— globally turn thedisk_usagerule on or off. Default: on.diskUsageThresholdPercent— the percentage at whichdisk_usagefires. Default: 85. Clamped to 1..100.
NotificationSettings row keyed by organizationId.
Per-node overrides
Any node can override the org-wide settings independently — useful for canary nodes that should be allowed to run noisy without paging, or critical nodes with stricter thresholds. See Per-node notification overrides. The effective settings for a node are the merge of org defaults + node override. Each setting can be overridden independently — overriding only the threshold while inheriting the on/off flag works fine.Incidents
When an alert rule fires:- An
AlertIncidentrow is created withstatus = open,openedAt = now, plus the subject reference (subjectKind,subjectKey,subjectName). - A
notification.alert.openedevent is written to the Events feed. - If the org has a configured webhook and
webhookEnabled = true, aWebhookDeliveryis fired — see Webhooks.
- The same row’s
statusbecomesresolvedandresolvedAt = now. - A
notification.alert.resolvedevent is written. - A second webhook delivery fires (a
closedpayload, distinct from theopenedone).
Notification center
The bell in the topbar shows:- Open count — number of currently-open incidents across the org.
- Latest incidents — top 10 most recent incidents (open or resolved). Click through to the full incident history.
open / resolved status.
Retired rules
Two earlier rules —sync_stalled and executor_disconnected — were retired. Existing incident rows for them are preserved in the database and visible in the history list, but no new ones are produced.
Limits
- One open incident per
(rule, subjectKey)at a time. The rule won’t open a second incident until the first resolves. - The platform has no per-rule cooldown — incidents resolve and re-open as the underlying state changes. If a node flaps, you’ll see one incident per flap.