# 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**
5. Enable **Request user authorization (OAuth) during installation**
6. Enable **Device Flow**

**Webhook:**

7. Add the **Webhook URL**
8. Add the **Webhook secret**
9. Enable **SSL verification**

**Display Information:**

10. Add the Nullify logo (amethyst only) available from [https://docs.nullify.ai/more-info/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 creating and resolving comments            |
| 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 Buildkite CI build status events          |
| 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         |
| Issues                      | Required         |
| Issue Comment               | Required         |
| Pull Request Review         | Required         |
| Pull Request Review Comment | Required         |
| Pull Request Review Thread  | 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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nullify.ai/enterprise-tier/github-self-hosted-app.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
