InfraNestInfraNest
GitHub

GitHub integration

Connect your GitHub repositories to the infrastructure behind them

InfraNest already watches your domains, DNS, servers, certificates and uptime. Install the GitHub app and the two can start talking: incidents can open issues for the team that fixes them, a deployment can be checked the moment it lands, and an expiring certificate can become an issue instead of a surprise.

On Pro and up · 14-day Pro trial, no credit card · You pick the repositories

  • Issues for incidents, closed when the incident resolves
  • Any warning filed as an issue in two clicks, with the whole story
  • A deployment checked as it lands, the commit marked green or red
  • Expiring certificates and domains filed as issues
Certificate expiring → open a GitHub issue
ActivePausedSave automation

When this happens

Certificate expiring

A certificate is approaching expiry.

Change

Runs at 09:00 · Europe/Amsterdam · it’s 16:16 there now

Next runs:Tue 3 Nov, 09:00Wed 4 Nov, 09:00Thu 5 Nov, 09:00

This automation only runs when you click “Run now”.

Only if — optional filters

MatchAllAnyNoneof these conditions

Tip: a value can reference another field or the time using a placeholder.

Do this — actions run in order, stop at the first failure

1Create GitHub issueOpen an issue, with optional labels and assignees. The new issue is saved for later steps as github_issue.

In plain English

When Certificate expiring if Days left less or equal 14, then Create GitHub issue.

Switch it on, and incidents open GitHub issues that close when they are over

When a monitor goes down, the people who will fix it should not have to hear about it in a chat thread and then copy it into their tracker. Switch on Issues for Incidents for a connected account and pick the repository: each new incident opens an issue there, and when the monitor recovers and the incident resolves, the same issue is closed as completed, so the tracker never fills up with outages that ended hours ago. A repeat while the issue is open adds a comment instead of a second issue. Want labels, assignees or a repository per team? Two ready-made rules do the same with the title, labels and assignees you set.

  • Issue opened in the repository you choose, the moment the incident opens
  • Closed as completed when the incident resolves
  • A repeat while the issue is open adds a comment, not a second issue
  • Built on uptime monitoring across every provider you use
Incident opened → open a GitHub issue
Monitorapi.northwyndr.cloud stops answering — incident opened
GitHubIssue opened in northwyndr/api
Monitorapi.northwyndr.cloud is back — incident resolved
GitHubThe same issue closed as completed

One switch — or two ready-made rules, for labels and assignees.

Any problem becomes a GitHub issue in two clicks

Not everything that needs a fix is an outage. A server with a port open to the internet, a domain about to expire, a certificate that failed to renew, DNS records changed outside InfraNest: open its menu, choose Create a GitHub issue, pick the repository and check what will be sent. The issue arrives with what is wrong, what it concerns, what to do about it and a link back, signed with the name of whoever filed it, and command lines or anything that looks like a password never leave InfraNest. The card then shows the issue and its state, so the next person sees it is already filed.

  • From Home, monitors, servers, domains, certificates, DNS and incidents
  • What failed or what is wrong, and a link back
  • An open issue in the repository about the same thing offered before a duplicate
  • Already opened one by hand? Link it, and the card shows it

File the incident straight from the alert

When an alert lands in Slack, the person who sees it first can act on it there. Create issue files the incident in your tracker, in the repository your Issues for Incidents setting uses, and posts the issue in the alert’s thread; the button then turns into the issue, so everyone can open it from the alert. Pressed twice, or by two people at once, it still files one issue. In Microsoft Teams the same button opens the incident with the Create issue window ready.

  • Acknowledge or file it without leaving Slack
  • One issue, however many times the button is pressed
  • The thread says who filed it and which issue it became
  • Kept in step with the incident, like every other incident issue
# infra-alerts

InfraNestApp15:01

Marketing site is DOWN

Brief marketing-site blip

AcknowledgeCreate issueOpen in InfraNest

InfraNest15:07

🎫 Sam filed this as infra#86

Know a deployment works, not just that it finished

A green pipeline says the deploy ran. It does not say the site came back up. With the ready-made rule switched on, when GitHub reports a successful production deployment, InfraNest checks the environment straight away with the monitor that watches it, and sets the commit status to success or failure from what it actually saw. The check is a one-off: it does not count towards the monitor's uptime and never opens an incident. The same signal can purge the Cloudflare cache or post the release on your status page.

  • The environment checked the moment GitHub reports the deployment
  • Commit marked green or red from the real result, under its own status name
  • Optional: purge the Cloudflare cache after every deploy
  • Optional: announce the deployment on your status page
Deployment succeeded → check it is up → set commit status
GitHubDeployment to production reports success
Monitorapp.northwyndr.cloud checked once, straight away
GitHubCommit status set to success, from what the check saw

If the check fails, the commit is marked as failed instead.

See every deploy next to the monitors it affects

When something slows down or goes down right after a release, you should not have to compare timestamps between two tabs to notice. Link a repository to the monitors, servers or tags it affects, and every deploy GitHub reports appears as a marker on their response-time and server charts, with the commit, the environment and who deployed it. When an incident opens within the hour after a deploy, the incident says so at the top of its timeline, with a link to the deploy. A deploy only adds this information: it never changes a status, the uptime or an incident.

  • A marker on the chart for every deploy, failed ones in a different colour
  • "Deployed 7c1e4a9 to production 12 minutes before this incident", on the incident itself
  • Link a repository to a monitor, a server or a whole tag
  • Works with any deploy job that uses a GitHub environment
API healthhttps://api.northwyndr.com/health
Response timeUptime24h7d30d

Deploys shown from northwyndr/api (production).Manage

3 deploys in this range:e91d3f0 · production7c1e4a9 · productionb52f0d3 · production

Expiring certificates and domains become work with an owner

An email that a certificate expires in fourteen days is easy to read and easier to forget. Filed as an issue, it is tracked like the rest of the team's work, shows up in the same board and has someone assigned. Two ready-made rules open one two weeks before a certificate expires and a month before a domain does, at most once a day, across every registrar and certificate source you have connected. A rule can also start a GitHub Actions workflow instead, if your renewal is already scripted.

  • An issue two weeks before a certificate expires, a month before a domain does
  • At most once a day
  • Or run a GitHub Actions workflow that does the renewal for you
  • Expiry dates from every registrar and certificate source you connect
CertificatesEvery SSL/TLS certificate we see across your infrastructure — discovered automatically from your monitors, with expiry tracking and alerts.+ Add certificate
All sourcesCloudflareDigitalOceanHetznerManualMonitorporkbunPublic log (crt.sh)ScanTransIP
SubjectExpires
northwyndr.com8 certificates7 auto-renew · 5 discovered, not monitored
api.northwyndr.comLet's Encrypt (R3) · rsa 2048 · found by Scan8 days ago
api.northwyndr.comLet's Encrypt (R3) · rsa 2048 · found by Monitorin 3 months
archive.northwyndr.comLet's Encrypt (R3) · rsa 2048 · found by Scanin 2 months
cdn.northwyndr.comLet's Encrypt (R3) · rsa 2048 · found by Scanin 2 months
cdn.northwyndr.comWildcardCloudflare Inc ECC CA-3 · ecdsa 256 · found by Cloudflarein 10 months
docs.northwyndr.comLet's Encrypt (R11) · ecdsa 256 · found by Monitorin 2 months
northwyndr.com+1Let's Encrypt (R3) · rsa 2048 · found by Monitorin 2 months
Showing 7 of 19 certificates
northwyndr.com1 certificates1 auto-renew · 1 discovered, not monitored
cdn.northwyndr.comWildcardCloudflare Inc ECC CA-3 · ecdsa 256 · found by Cloudflarein 10 months
northwyndr-app.dev1 certificates1 auto-renew
staging.northwyndr-app.devLet's Encrypt (R11) · ecdsa 256 · found by DigitalOcean, Monitornext month
northwyndr.cloud1 certificates1 auto-renew · 1 discovered, not monitored
*.northwyndr.cloudWildcardLet's Encrypt (R11) · ecdsa 256 · found by Hetznerin 2 months
vpn.northwind.example1 certificates1 discovered, not monitored
vpn.northwind.examplevpn.northwind.example · rsa 4096 · found by Manual12 days ago
northwyndr.com3 certificates3 auto-renew
api.northwyndr.comLet's Encrypt (R3) · rsa 2048 · found by Monitorin 3 months
docs.northwyndr.comLet's Encrypt (R11) · ecdsa 256 · found by Monitorin 2 months
northwyndr.com+1Let's Encrypt (R3) · rsa 2048 · found by Monitorin 2 months
northwyndr-app.dev2 certificates2 auto-renew
northwyndr-app.devWildcardLet's Encrypt (R11) · ecdsa 256 · found by Monitorin 21 days
staging.northwyndr-app.devLet's Encrypt (R11) · ecdsa 256 · found by DigitalOcean, Monitornext month
northwyndr.shop1 certificates1 auto-renew · 1 discovered, not monitored
northwyndr.shop+1Let's Encrypt (R11) · ecdsa 256 · found by porkbunin 2 months
northwyndr.com1 certificates1 discovered, not monitored
shop.northwyndr.comGlobalSign GCC R6 AlphaSSL CA 2023 · rsa 2048 · found by Public log (crt.sh)in 3 months
northwyndr.com3 certificates3 auto-renew · 3 discovered, not monitored
api.northwyndr.comLet's Encrypt (R3) · rsa 2048 · found by Scan8 days ago
archive.northwyndr.comLet's Encrypt (R3) · rsa 2048 · found by Scanin 2 months
cdn.northwyndr.comLet's Encrypt (R3) · rsa 2048 · found by Scanin 2 months
northwyndr-mail.com2 certificates2 discovered, not monitored
northwyndr-mail.comSectigo RSA Organization Validation Secure Server CA · rsa 2048 · found by Scanin 18 days
northwyndr-mail.com+1Sectigo RSA Organization Validation Secure Server CA · rsa 2048 · found by Scanin 11 months
northwyndr.nl1 certificates1 discovered, not monitored
billing.northwyndr.nlSectigo RSA Organization Validation Secure Server CA · rsa 2048 · found by Scanin 24 days
status.supplier.example1 certificates1 auto-renew · 1 discovered, not monitored
status.supplier.exampleLet's Encrypt (R3) · rsa 2048 · found by Scanin 2 months
northwyndr-mail.com1 certificates1 auto-renew · 1 discovered, not monitored
northwyndr-mail.com+2Let's Encrypt (R3) · rsa 2048 · found by TransIPin 3 months
northwyndr.nl1 certificates1 discovered, not monitored
northwyndr.nl+1Sectigo RSA Organization Validation Secure Server CA · rsa 2048 · found by TransIPin 5 months

Start from a ready-made rule, or build your own

The rules on this page are ready-made automations: pick one, choose the repository, and switch it on. When you want something else, the builder offers GitHub events as triggers (pushes, pull requests and reviews, issues and comments, workflow runs, checks, deployments and releases) and GitHub actions as steps: open, comment on, label, assign or close issues, request reviews, merge pull requests, run, re-run or cancel workflows, create deployments and releases, and set commit statuses. Every rule reads back in plain English before you switch it on.

  • Twelve ready-made rules that connect GitHub to the rest of your setup
  • GitHub events as triggers, GitHub actions as steps
  • Combine them with monitors, certificates, domains, DNS and status pages
  • Nothing runs until you switch the rule on — see how rules are built
Automations · Templates

Start from a ready-made recipe — filter by category or trigger, or search. One click pre-fills the builder; tailor it before saving.

Monitor down → nobody acknowledges → escalate

v2

Monitor alert → Wait → Send notification → Wait → Send notification → Wait → Send notification

Monitoring+ Use

Expiring domain → approve, then auto-renew

v2

Domain expiring → Require approval → Set auto-renew → Send notification

Domains+ Use

Incident opened → announce on status page, unless it is a blip

v2

Incident opened → Wait → Post status-page announcement → Send notification

Incidents+ Use

Monitor down → reboot the server

v2

Monitor alert → Wait → Reboot server → Send notification

Servers+ Use

Ask another system, then act on the answer

v2

Domain expiring → Call webhook → If / branch → Send notification → Send notification

Integrations+ Use

Renewal not live within 24 hours → alert

v2

Renewal has not reached an address → Wait → If / branch → Send notification

Certificates+ Use

Deployment succeeded → check it is up → set commit status

v2

GitHub deployment status → Check a monitor now → If / branch → Set commit status → Set commit status

Integrations+ Use

Server frozen → reboot it, at most once a day

v2

Server frozen → Reboot server → If / branch → Send notification → Send notification

Servers+ Use

Volume forecast to fill within 7 days → grow it by 25%, up to a limit

v2

Volume forecast to fill → Resize volume → If / branch → Send notification → Send notification

Servers+ Use

Weekly reminder to tidy up leftover DNS records

v2

Scheduled → Find leftover DNS records → If / branch → Send notification

DNS+ Use

Certificate expiring → run a GitHub workflow

v2

Certificate expiring → Run GitHub workflow

Integrations+ Use

Server down everywhere → take it out of the load balancer, put it back when healthy

v2

Monitor alert → If / branch → Wait → Remove LB target → Send notification → If / branch → Add LB target → Send notification

Servers+ Use

Monitor down → route by tag

v2

Monitor alert → If / branch → Send notification → Send notification

Monitoring+ Use

New domain onboarding

Domain added → Create DNS zone → Apply DNS template → Start monitoring

Domains+ Use

Auto-renew expiring domains

Domain expiring → Set auto-renew → Send notification

Domains+ Use

GitHub workflow failed → open an issue & alert

GitHub workflow run → Create GitHub issue → Send notification

Integrations+ Use

New server → enable backups & protection

Server added → Enable backups → Enable delete protection

Servers+ Use

Weak certificate → webhook

Weak certificate → Call webhook → Send notification

Certificates+ Use

Certificate expiring → open a GitHub issue

Certificate expiring → Create GitHub issue

Integrations+ Use

Certificate expiring → remind its owner

Certificate expiring → Send notification

Certificates+ Use

Certificate expiry heads-up

Certificate expiring → Send notification

Certificates+ Use

DNS record deleted → stop tracking its address

DNS record deleted → Stop tracking address

Certificates+ Use

Deployment succeeded → purge Cloudflare cache

GitHub deployment status → Purge Cloudflare cache

Integrations+ Use

DNS record changed → alert

DNS record changed (in-app) → Send notification

DNS+ Use

Domain expiring → open a GitHub issue

Domain expiring → Create GitHub issue

Integrations+ Use

Send domain events to my system

Domain added → Call webhook

Integrations+ Use

Send everything to my system

Domain added → Call webhook

Integrations+ Use

Deployment succeeded → announce on status page

GitHub deployment status → Post status-page announcement

Integrations+ Use

Release published → announce on status page

GitHub release → Post status-page announcement

Integrations+ Use

GitHub workflow failed → re-run failed jobs once

GitHub workflow run → Re-run failed jobs

Integrations+ Use

Incident acknowledged → say who is on it, on its ticket

Incident acknowledged → comment_linked_ticket

Integrations+ Use

Outage acknowledged → tell the team who is on it

Incident acknowledged → Send notification

Monitoring+ Use

Incident opened → Cloudflare Under Attack

Incident opened → Set Cloudflare security level

Integrations+ Use

Incident opened → open a GitHub issue

Incident opened → Create GitHub issue

Integrations+ Use

Incident resolved → close its GitHub issue

Incident resolved → Close GitHub issue

Integrations+ Use

Incident resolved → note how long it lasted, on its ticket

Incident resolved → comment_linked_ticket

Integrations+ Use

Incident opened → log to a webhook / Sheet

Incident opened → Call webhook

Integrations+ Use

Let another tool trigger an automation

Incoming webhook → Send notification

Integrations+ Use

Maintenance started → status announcement

Maintenance started → Post status-page announcement

Maintenance+ Use

Tell my own system when a monitor fails

Monitor alert → Call webhook

Integrations+ Use

New domain, server or status page component → monitor it

Domain added → Monitor what was added

Monitoring+ Use

New server → monitor it

Server added → Monitor the new server

Monitoring+ Use

New domain → monitor its website

Domain added → Monitor the new website

Monitoring+ Use

Monthly uptime report to a client

Scheduled → Email a monthly uptime report

Monitoring+ Use

Production monitor down → page on-call

Monitor alert → Send notification

Monitoring+ Use

Server restarts on a schedule → propose a weekly maintenance window

Server restarts on a schedule → Send notification

Maintenance+ Use

Ticket finished and the monitor is back → resolve the incident

incident.ticket_closed → resolve_incident

Integrations+ Use

Ask before renewing a domain nothing uses

Domain expiring → Send notification

Domains+ Use

Watched domain available → notify

Watched domain available → Send notification

Domains+ Use

Weekly expiry review reminder

Scheduled → Send notification

Certificates+ Use

Showing 50 of 50 recipes

Connect GitHub to your own infrastructure

Install the app, create your account in the same step (it starts with 14 days of Pro), and switch on the first rule in a minute.

Connect GitHub in about two minutes

Install the InfraNest Automations app on your account or organisation and choose the repositories it may see. No personal tokens to create or rotate. Not an owner of the organisation? Install anyway: GitHub asks the owners, and the connection appears once they approve.

  1. 1

    Install the InfraNest Automations app

    Gives InfraNest access to only the repositories you choose, with no token to rotate later — go to Integrations, open GitHub, and select Connect.

  2. 2

    Choose your account or organisation

    Pick where to install and select All repositories or just the ones you want InfraNest to see, then confirm in the GitHub window that opens.

  3. 3

    Confirm the installation is yours

    GitHub may ask you to confirm access; once you're returned to InfraNest, the connection appears under Accounts.

That’s it — GitHub is connected.

Full setup guide

Set up with AI

I want to connect GitHub to InfraNest (infranest.io), which manages domains, DNS, servers, certificates and uptime monitoring across providers, using its GitHub App "InfraNest Automations". Explain what installing a GitHub App on my account or organisation means: what it can see, how choosing "Only select repositories" limits it, and where I can change or remove that later. If I am a member but not an owner of the organisation, explain what happens when I install it and what the owner will see. Then tell me how to check afterwards which repositories the app can access.

MCP server

GitHub in Claude and ChatGPT

Handling an incident from Claude or ChatGPT? Your assistant can file it in GitHub with the details filled in and give you the link. It asks you first.

  • Acknowledge the Checkout incident and file it in GitHub.
  • What caused this incident? Then file it in GitHub for the team.
How it works Connect Claude or ChatGPT With GitHub connected: Pro and up

Questions about the GitHub integration

#Can GitHub trigger my automations, or only get acted on?

Both, but only if you connect with the app: a token lets automations act on GitHub (open issues, merge pull requests, trigger workflows) but it can't start automations from GitHub events. Install the app if you want pushes, pull requests, workflow runs and the like to trigger anything.

#What happens to my issues if I disconnect GitHub?

Disconnecting shows you up front what stops and what InfraNest removes before you confirm. Issues for incidents stops, any automation using the connection is switched off rather than failing quietly, and your team gets notified who disconnected it and what was switched off.

#What if someone revokes access or uninstalls the app on GitHub's side?

InfraNest notices: the connection shows as failing under Needs attention, you get a notification, and automations using it stop with a message saying why. Reconnecting with the same account picks your automations back up with their settings intact.

#Can InfraNest create issues under my name or as a bot?

Installed as the app, issues and comments are created as infranest[bot]; connected with a token, they're created as the GitHub account the token belongs to. Either way, every issue ends with who filed it, or notes that InfraNest filed it automatically.

#What do I need before connecting GitHub?

An owner of the GitHub account or organisation needs to approve installing the app (or you can connect with a personal access token instead) — see the setup guide.

#Does InfraNest’s MCP server work with GitHub?

Yes. With “Also let it act” switched on, your assistant can file an InfraNest incident in your connected GitHub and give you the issue’s link. It asks you first, and an incident that already has an issue keeps it. The GitHub integration is on Pro and up. GitHub’s own MCP server works with your GitHub issues. InfraNest’s brings the incident, its monitor and what changed before it into the same conversation.

Let your repositories hear what your infrastructure is doing

Install the GitHub app and create your account in one go. It starts with 14 days of Pro, no credit card, and you pick the repositories.

Free plan · No credit card required · Set up in minutes