What is a cluster?
In Niro, a cluster represents a single k3s installation. It has:- A unique ID (assigned at enrollment)
- A user-defined name
- An environment tag (
dev,staging,production, orunspecified) - An in-cluster agent that reports heartbeats and executes commands
api.niro.cx over outbound HTTPS.
Cluster lifecycle
Enrollment
Enrollment is a one-time exchange that establishes the cluster’s identity:- A Niro user creates a cluster and receives a single-use enrollment token (valid for 1 hour)
- The installer script runs on the cluster, creates the
niro-systemnamespace, and deploys the agent - The agent contacts Niro with the token
- Niro exchanges the token for a long-lived agent key, which is stored in a Kubernetes Secret inside
niro-system - The enrollment token is invalidated immediately after exchange
Heartbeat
After enrollment, the agent sends a heartbeat every ~15 seconds. The heartbeat is the primary state channel:- Updates node inventory (status, version, capacity, usage)
- Updates pod inventory (phase, restarts, resources, images)
- Reports recent Kubernetes Warning events
- Advertises which capabilities are enabled
- Triggers incident detection and policy evaluation
Commands
Commands flow from Niro to the cluster over a persistent connection the agent maintains. When Niro needs to send a command (apply a deployment, stream logs, etc.), it delivers it over this connection. The agent processes the command and immediately re-establishes the connection. This design means no inbound port forwarding is required — the agent only needs outbound HTTPS access.Cluster status
The fleet overview shows a status badge for each cluster:| Status | Meaning |
|---|---|
| Healthy | Agent is heartbeating and no active incidents |
| Warning | Active low/medium severity incidents |
| Critical | Active high severity incidents (crash loop, node not ready, etc.) |
| Unknown | No heartbeat received within the expected window |
| Offline | Heartbeat has been absent long enough to fire a cluster_offline incident |
Cluster detail view
Clicking a cluster opens its detail view with:- Overview — live node list with CPU/memory capacity and usage
- Workloads — pod count grouped by namespace and phase
- Deployments — managed workloads with apply status and last sync time
- Timeline — activity feed (restarts, apply events, policy findings, drift)
- Settings — rename, change environment, delete
Deleting a cluster
Deleting a cluster from the dashboard removes it from Niro. The agent continues running inside the cluster (it just stops receiving commands and its heartbeats are rejected). To fully uninstall:Multiple clusters
There’s no hard limit on clusters per organization (subject to your plan). The fleet overview shows all clusters at once. The pod inventory page aggregates pods across all clusters in the org.Related
- Connect a Cluster — step-by-step enrollment walkthrough
- Agent Capabilities — opt-in features: logs, apply, self-update
- Environments — tag clusters for policy severity control