> For the complete documentation index, see [llms.txt](https://docs.nullify.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nullify.ai/enterprise-tier/github-self-hosted-app.md).

# Self-Hosted GitHub App

Nullify is currently available as a GitHub App that can be installed across select repositories or all current and future repositories, allowing for organization-wide coverage in one click.

Please reach out to our team to assist with your org setup.

## Install Nullify

### Setting up your GitHub application

See [creating a GitHub App](https://docs.github.com/apps/building-github-apps/creating-a-github-app/) for general guidance on setting up GitHub Apps.

1. Go to `https://github.com/organizations/<insert-your-org-name>/settings/apps/new`
2. **GitHub App Name:** Enter the name of your application.
3. **Homepage URL:** Enter `https://nullify.ai`

<div align="left"><figure><img src="/files/Wd6vngXopGJNO7cCWpi8" alt=""><figcaption><p>GitHub App name</p></figcaption></figure> <figure><img src="/files/J28PyVNKNjhWMpQR0Nke" alt=""><figcaption><p>Homepage URL</p></figcaption></figure> <figure><img src="/files/so5mBcJJrBstno2YAWYA" alt=""><figcaption><p>Webhook URL</p></figcaption></figure></div>

4. Add the **Callback URL** (provided to you by Nullify)
5. Enable **Request user authorization (OAuth) during installation**
6. Enable **Device Flow**

**Webhook:**

7. Add the **Webhook URL**. It is of the form `https://api.<your-organization>.nullify.ai/core/github/webhook`.
8. Add the **Webhook secret** (a shared secret you generate and also send to Nullify)
9. Enable **SSL verification**

**Display Information:**

10. Add the Nullify logo, available from the [brand kit](/more-info/brand-kit.md)

<figure><img src="/files/CrudHJCRvtCvEFnlOJpq" alt=""><figcaption><p>Nullify logo added to GitHub App display information</p></figcaption></figure>

11. Grant access to the following **Repository** **permissions**:

| **Permission**                                   | **Access**   | **Explanation**                                                                     |
| ------------------------------------------------ | ------------ | ----------------------------------------------------------------------------------- |
| Actions                                          | Read-only    | Read required for the autofix workflow to fix failing CI jobs                       |
| Checks                                           | Read & write | Write required to create and modify Check Runs                                      |
| Contents                                         | Read & write | Write required for the autofix engine to read code and commit fixes to fix branches |
| Issues                                           | Read & write | Write required to create and modify Issues                                          |
| <p><strong>GitHub.com:</strong> Metadata<br></p> | Read-only    | This setting is automatically set by GitHub                                         |
| Commit statuses                                  | Read-only    | Required to receive CI build status events from any provider                        |
| Pull Requests                                    | Read & write | Write required to create and modify Pull Requests                                   |

12. Grant access to the following **Organization** **permissions**:

| **Permission** | **Access** | **Explanation** |
| -------------- | ---------- | --------------- |
| Members        | Read       | Read teams      |

13. Subscribe to the following **Events**:

| **Event Type**              | **Subscription** |
| --------------------------- | ---------------- |
| Pull Request                | Required         |
| Push                        | Required         |
| Check Run                   | Required         |
| Check suite                 | Required         |
| Issues                      | Required         |
| Issue Comment               | Required         |
| Pull Request Review         | Required         |
| Pull Request Review Comment | Required         |
| Repository                  | Required         |
| Status                      | Required         |

14. In the "Where can this GitHub App be installed?" section, select **Only on this account**. Then select **Create GitHub App**.

<figure><img src="/files/6xVx2nLRuofH3aDpaMyO" alt=""><figcaption></figcaption></figure>

15. Navigate to the **Developer settings** of your new App. In **General**, get the App ID and Client ID.

<div align="left"><figure><img src="/files/pxEHxRZkbF8exjWjYXiu" alt=""><figcaption><p>GitHub App - Developer settings</p></figcaption></figure> <figure><img src="/files/Oanxr2U36TIwejD5JMsK" alt=""><figcaption><p>App ID &#x26; Client ID</p></figcaption></figure></div>

16. In **General**, generate a new Client secret.
17. In **General**, generate a private key:

<figure><img src="/files/uZvN9pwFMqP30IUjwFZ0" alt=""><figcaption><p>Private key</p></figcaption></figure>

18. Send the App ID, Client ID, Client Secret and Private Key to Nullify. This can be done via a password manager.
19. Wait for your stack to be provisioned.
20. In **Install App**, install the App in your organization:

<figure><img src="/files/KkPMsfRucGRs0Va8EOvt" alt=""><figcaption><p>Install App</p></figcaption></figure>

21. In **Repository access**, select the repositories you would like to install Nullify:

<figure><img src="/files/HtpBPbZGQAaJqY2QyG3s" alt=""><figcaption><p>Repository access</p></figcaption></figure>
