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

TypeCondition
cluster_offlineNo status update received within the expected window
pod_crash_loopingA pod has restarted more than N times in the recent window
node_not_readyA node is in NotReady state
deployment_failedA deployment apply resulted in Failed or Partial status
drift_detectedLive cluster state diverges from the repo’s desired state
image_pull_errorA pod is in ImagePullBackOff or ErrImagePull state
Each incident has a stable fingerprint based on cluster, type, and scope. Niro won’t fire duplicate incidents for the same ongoing condition.

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.
{
  "event": "incident.opened",
  "incident": {
    "id": "inc_abc123",
    "type": "pod_crash_looping",
    "severity": "high",
    "cluster": "my-cluster",
    "scope": "default/my-app-5d9b8c-xyz",
    "fired_at": "2024-01-15T10:30:00Z"
  },
  "org": "my-org"
}
Events: incident.opened · incident.resolved
EnterpriseNiro creates Incident.io incidents directly via their API.

Minimum severity filter

Each channel has a minimum severity setting — incidents below the threshold don’t trigger that channel.
SeverityTypical use
InfoLogging webhook — capture everything
WarningSlack — catch problems early
ErrorOn-call Slack — significant failures only
CriticalPagerDuty — severe outages requiring immediate response

Auto-investigation

Niro can automatically run an AI investigation when incidents change state. Configure in SettingsAuto-investigation:
ModeWhen investigation runs
offNever — manual only
firingWhen an incident opens
resolvedWhen an incident resolves
bothOn both open and close
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 June 12, 2026