Overview
Niro automatically detects operational incidents by analyzing status data from your fleet. When a problem is detected, an incident is opened. When the condition clears, the incident is resolved.Automatic detection
Niro continuously evaluates cluster data for crash loops, offline clusters, node failures, and more.
Smart notifications
Route alerts to Slack, Discord, PagerDuty, or a custom webhook with per-channel severity filters.
AI investigation
One-click root cause analysis gathers logs and cluster state to explain what went wrong.
Incident lifecycle
Incidents open when conditions fire and resolve automatically when they clear.
Detected incident types
Each incident has a stable fingerprint based on cluster, type, and scope. Niro won’t fire duplicate incidents for the same ongoing condition.
Probe warnings and workload availability
A single probe timeout stays a warning in the timeline. If the workload remains available, it creates no incident, notification, or automatic investigation. For example, incident #51’s isolated liveness timeout ongateway-api would stay quiet while its API remains healthy. Seven warnings
spread across hours do not establish seven consecutive failures.
Kubernetes applies the pod’s configured probe thresholds. Niro uses the resulting
health observations; it does not count warning events as failed probe attempts.
Deployment, DaemonSet, and standalone ReplicaSet use their reported ready and
available counts. StatefulSet uses ready replicas as a serving-capacity proxy.
A bare Running Pod uses its
Ready condition; terminal bare Pods are inactive.
Other controller kinds do not currently qualify probe incidents. These are
Kubernetes availability proxies, not direct measurements of application traffic
or database quorum.
There is no separate startup grace period. A newly observed workload with
zero capacity and matching probe evidence can qualify before it has served
traffic. A workload with even one ready replica stays quiet while availability
stabilizes. Actual notification delivery still follows your channel severity
settings; qualified probe incidents retain severity warning.
Niro requires heartbeat and catalog evidence newer than 120 seconds. An explicitly
unchanged catalog can remain valid even when individual resource rows are older.
Agents without sufficient catalog evidence keep warning history but cannot
qualify this detector. An unresolved incident with unknown evidence remains open;
it is not evidence of confirmed recovery.
Existing legacy probe incidents are rechecked against current health.
Healthy legacy incidents close without starting a resolution investigation.
Unsent false-positive notifications are suppressed, while channels with a sent
or attempted firing delivery receive a resolution to close the external alert.
Previously delivered notifications cannot be recalled. Existing historical
incidents and investigations remain available for review. The corrected behavior
is fully effective after all older control-plane replicas have drained.
Incident lifecycle
1
Condition detected
Niro detects the condition from incoming cluster data.
2
Incident opened
An incident is created in the Alerts page. Notifications are sent to all matching channels.
3
Investigation (optional)
If auto-investigation is enabled, Niro runs an AI root-cause analysis in the background.
4
Incident resolved
When the condition clears, Niro resolves the incident and sends resolution notifications.
You can’t manually delete a firing incident — if the condition is still active, Niro would reopen it immediately. Resolved incidents can be deleted from the Alerts page.
Notification channels
Discord
Discord
FreeNiro posts a formatted message to a Discord channel via webhook.Setup:
- In Discord: Server Settings → Integrations → Webhooks → New Webhook
- Copy the webhook URL
- In Niro: Settings → Alerts → Add Discord channel
Slack
Slack
ProNiro posts a formatted message to a Slack channel via an Incoming Webhook.Setup:
- Create an Incoming Webhook in your Slack workspace
- In Niro: Settings → Alerts → Add Slack channel with the webhook URL
PagerDuty
PagerDuty
ProNiro creates PagerDuty incidents via the Events API v2, sending
trigger on open and resolve on close.Setup:- In PagerDuty: create a service and copy its Integration Key
- In Niro: Settings → Alerts → Add PagerDuty channel with the Integration Key
Webhook
Webhook
ProNiro POSTs a JSON payload to your URL on every incident state change.Events:
incident.opened · incident.resolvedIncident.io
Incident.io
EnterpriseNiro creates Incident.io incidents directly via their API.
Acknowledging incidents
You can acknowledge a firing incident to signal that your team is aware and investigating. Acknowledging an incident doesn’t resolve it — it continues to track the condition and resolves automatically when the condition clears. Acknowledgements appear in the incident timeline.Minimum severity filter
Each channel has a minimum severity setting — incidents below the threshold don’t trigger that channel.Auto-investigation
Niro can automatically run an AI investigation when incidents change state. Configure in Settings → Auto-investigation:
Available on Pro and above.
Related
AI Investigation
What the investigator analyzes and what it returns.
Monitor Your Fleet
Pod inventory and cluster health views.
Plans
Notification channel availability by plan.
Multi-tenancy
Org-level alert channel configuration.