Skip to main content

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 on gateway-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

FreeNiro posts a formatted message to a Discord channel via webhook.Setup:
  1. In Discord: Server Settings → Integrations → Webhooks → New Webhook
  2. Copy the webhook URL
  3. In Niro: Settings → Alerts → Add Discord channel
ProNiro posts a formatted message to a Slack channel via an Incoming Webhook.Setup:
  1. Create an Incoming Webhook in your Slack workspace
  2. In Niro: Settings → Alerts → Add Slack channel with the webhook URL
ProNiro creates PagerDuty incidents via the Events API v2, sending trigger on open and resolve on close.Setup:
  1. In PagerDuty: create a service and copy its Integration Key
  2. In Niro: Settings → Alerts → Add PagerDuty channel with the Integration Key
ProNiro POSTs a JSON payload to your URL on every incident state change.
Events: incident.opened · incident.resolved
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 SettingsAuto-investigation:
firing mode is most useful — you get root-cause analysis the moment something breaks, before you’ve opened the dashboard.
Available on Pro and above.

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.
Last modified on September 13, 2026