Skip to main content

Overview

The Niro agent starts with a read-only RBAC role. Additional capabilities are opt-in — you enable them by re-running the installer with the appropriate environment flag. Each capability grants a specific set of RBAC permissions and unlocks corresponding features in the dashboard. Capabilities are additive and reversible: setting a flag to 1 adds the RBAC grant; setting it to 0 removes it. No enrollment token is needed for capability changes — the agent reuses its existing key.

Enabling capabilities

Re-run the installer with the flags you want:
The updated RBAC takes effect immediately. The new capability appears in the dashboard within ~15 seconds (on the next heartbeat).

Revoking capabilities

Set any flag to 0 to revoke the corresponding RBAC grant:

Capabilities reference

NIRO_ENABLE_PODS (default: on)

Controls whether the agent includes pod details in its heartbeat. Pod listing is enabled by default because it’s read-only and low-risk. You’d only disable it if you have a compliance reason to prevent Niro from seeing pod names or images.

NIRO_ENABLE_LOGS

Enables live pod log streaming to the browser. When enabled, the agent can receive log stream commands from Niro and stream the output of kubectl logs --follow back to the browser.
Log streaming establishes a pods/log SubResource access on your cluster. This means Niro will have access to your pod logs. Only enable this if your security model permits Niro to access application logs.

NIRO_ENABLE_APPLY

Enables applying Kubernetes manifests from the Niro dashboard and GitOps flow.
The apply role includes delete for managed namespaced resources so Niro can remove resources you delete in the dashboard and clean up managed objects during sync. Namespaces are never deleted by Niro.

NIRO_ENABLE_SELF_UPDATE

Allows the agent to update itself to the version specified by Niro. When this is enabled:
  1. Niro signals the desired agent version in the response to each status update
  2. If the agent’s current image tag doesn’t match, the agent patches its own Deployment’s image tag
  3. Kubernetes rolls out the new pod; the old pod terminates
  4. The new pod reports the updated version on its first heartbeat
Self-update replaces the running pod. There’s no in-place upgrade — the pod is replaced as part of a normal Kubernetes rollout. If you have a single replica (the default), there’s a brief gap between the old pod terminating and the new pod becoming ready.

Default RBAC (always granted)

Even without any opt-in capability flags, the agent always has:
This is sufficient to:
  • Report node inventory in heartbeats
  • Report pod inventory in heartbeats
  • Report resource usage (if metrics-server is installed)
  • Report Kubernetes Warning events in heartbeats

Checking enabled capabilities

The dashboard shows a capabilities badge on the cluster card in the Fleet view and in the cluster settings. You can also check directly:
Or inspect the agent’s heartbeat in the logs:
Last modified on June 11, 2026