Skip to main content

Overview

The Niro GitHub integration uses a GitHub App to connect your repositories to your clusters. Once connected, you get:
  • Automatic manifest validation when PRs are opened
  • Advisory AI review posted as PR comments
  • Auto-apply to the cluster on merge
  • GitHub Deployment statuses on commits
  • Image Automation: auto-PR when new image versions are published

How it works

Niro creates a GitHub App on your behalf (via GitHub’s App manifest flow). This App:
  • Installs in your GitHub account or organization
  • Receives webhooks for PR and push events on repos you’ve granted access to
  • Posts review comments and check runs to PRs
  • Creates GitHub Deployment statuses when applies complete
  • (For image automation) reads package/release tags from the registry
The App’s private key and webhook secret are stored securely — you don’t need to manage them.

Setup

See Set Up GitOps for the full step-by-step walkthrough.

GitHub App permissions

The Niro GitHub App requests the following permissions:
PermissionScopeReason
contentsRead & writeRead manifests, commit builder output, create PRs
pull_requestsRead & writePost review comments, update PR status
checksRead & writeCreate check runs for policy findings
deploymentsRead & writeCreate Deployment statuses on merge commits
metadataReadRequired by GitHub for all Apps
For Image Automation:
PermissionScopeReason
packagesReadRead package tags from GHCR

Webhook events

Niro subscribes to the following GitHub webhook events:
EventWhat Niro does
pull_request (opened, synchronize, reopened)Run policy checks + AI review, post comment + check run
pull_request (closed, merged)If merged: apply (or delete) manifests to cluster
push (to linked branch)Update deployment status, detect drift
registry_package (published)Evaluate against image policies, open bump PR if applicable
Webhook delivery is idempotent — Niro deduplicates by GitHub’s delivery ID to prevent double-processing.

PR review behavior

When a PR is opened against a linked repo branch:
  1. Webhook received — Niro immediately returns 202 Accepted and enqueues the job
  2. Background job runs — parses manifests, runs policy checks, optionally runs AI review
  3. PR comment posted — a single comment per deployment lists all findings
  4. Check run created — shows pass/warn/fail in the PR checks section
The PR comment is updated (not duplicated) if you push more commits to the same PR.

Check run states

StateMeaning
PassNo high-severity findings
⚠️ NeutralMedium or low severity findings only
✅ (with note)AI review unavailable — rule-based check still ran
Check runs are never blocking — they don’t prevent merging regardless of findings. Each repo link has the following settings (editable on the Integrations page):
SettingDescription
RepositoryThe GitHub repo
BranchThe branch to watch (e.g. main)
PathThe folder containing this deployment’s manifests
ClusterThe target cluster
NamespaceThe target namespace (used for namespace-mismatch policy checks)
Auto-syncWhether to apply automatically on merge

Multiple repos and clusters

You can link:
  • Multiple repos to the same cluster
  • The same repo to multiple clusters (e.g. deploy/production → prod cluster, deploy/staging → staging cluster)
  • Multiple folders in the same repo to different clusters or deployments
Each folder in the repo is an independent Niro deployment. Niro tracks which manifests it applied from each folder.

Uninstalling

To remove the GitHub integration:
  1. Go to Integrations → GitHub
  2. Click Uninstall App — this removes all repo links and the App installation from GitHub
If you only want to remove a specific repo link, click the three-dot menu next to the link and select Remove.
Last modified on June 12, 2026