> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qodo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Install Qodo on GitLab (on-premises)

> Install and configure the GitLab integration for Qodo on-premises deployments.

This guide helps you install and configure Qodo on-premises with your GitLab instance. You can install Qodo on a single project to start small or expand it across multiple projects as needed.

Assuming your Qodo environment is already set up, configuring GitLab typically takes about 20 minutes. This includes creating access tokens, configuring the service, and setting up webhooks.

Once complete, Qodo processes merge requests and delivers actionable output such as code reviews and insights, directly in your MRs.

## Prerequisites

Before you begin, ensure you have:

* **A Qodo on-premises deployment.** You will receive your Qodo on-premises URL from your Qodo Account Manager. It typically looks like: `qodo-merge.yourcompanyname.st.qodo.ai`
* **System administrator access.** Required if you want to set up Qodo at the group level.

## Installation (group level)

### Step 1: Generate a token

<Steps>
  <Step>
    Navigate to the **Groups** section in GitLab and select the group where you want to set up Qodo.

    <Columns cols={2}>
      <Frame>
        <img src="https://mintcdn.com/qodo/8f9QSVoLIbSaCs56/images/code-review/gitlab-groups-owner.jpeg?fit=max&auto=format&n=8f9QSVoLIbSaCs56&q=85&s=ed8aa0fd18aa8571cd14fd52f266ffe3" alt="GitLab groups list showing group with Owner role" width="854" height="1203" data-path="images/code-review/gitlab-groups-owner.jpeg" />
      </Frame>
    </Columns>
  </Step>

  <Step>
    Within the selected group, go to **Group settings → Access tokens**.

    <Columns cols={2}>
      <Frame>
        <img src="https://mintcdn.com/qodo/8f9QSVoLIbSaCs56/images/code-review/gitlab-group-settings-access-tokens.png?fit=max&auto=format&n=8f9QSVoLIbSaCs56&q=85&s=04737ef61ff11b7a7a754ae89d54342b" alt="GitLab group settings sidebar with Access Tokens menu item" width="720" height="355" data-path="images/code-review/gitlab-group-settings-access-tokens.png" />
      </Frame>
    </Columns>
  </Step>

  <Step>
    Configure the access token with the following settings:

    * **Name:** Any name will suffice
    * **Expiration date:** Choose an appropriate period
      * For a proof of value (PoV): 1–2 months
      * For a customer setup: 1 year
    * **Role:** At least **Developer**
    * **Scopes:** Select only the **api** scope

    <Columns cols={2}>
      <Frame>
        <img src="https://mintcdn.com/qodo/8f9QSVoLIbSaCs56/images/code-review/gitlab-group-access-token-create.png?fit=max&auto=format&n=8f9QSVoLIbSaCs56&q=85&s=9de2510606290ddc0fc1350075b6fb18" alt="GitLab group access token form with name, expiry, role, and api scope fields" width="720" height="446" data-path="images/code-review/gitlab-group-access-token-create.png" />
      </Frame>
    </Columns>

    <Note>
      Copy and save the bearer token immediately. You will not be able to view it again.
    </Note>

    <Columns cols={2}>
      <Frame>
        <img src="https://mintcdn.com/qodo/8f9QSVoLIbSaCs56/images/code-review/gitlab-group-access-token-created.png?fit=max&auto=format&n=8f9QSVoLIbSaCs56&q=85&s=3df1da5002cc4faa1c2cc59910b3d7c9" alt="GitLab group access token created showing token value to copy and save" width="720" height="236" data-path="images/code-review/gitlab-group-access-token-created.png" />
      </Frame>
    </Columns>
  </Step>
</Steps>

### Step 2: Create a shared webhook secret

Select a strong secret value (it can be any string). You can use any secret generation tool you prefer.

### Step 3: Create a group webhook

<Steps>
  <Step>
    Within the selected group, navigate to **Group settings → Webhooks**.

    <Columns cols={2}>
      <Frame>
        <img src="https://mintcdn.com/qodo/8f9QSVoLIbSaCs56/images/code-review/gitlab-group-settings-webhooks.png?fit=max&auto=format&n=8f9QSVoLIbSaCs56&q=85&s=34464e6ef8373b7ffe596c52190da3ca" alt="GitLab group settings Webhooks page with webhook list" width="356" height="479" data-path="images/code-review/gitlab-group-settings-webhooks.png" />
      </Frame>
    </Columns>
  </Step>

  <Step>
    Select **Add new webhook**.

    <Columns cols={2}>
      <Frame>
        <img src="https://mintcdn.com/qodo/8f9QSVoLIbSaCs56/images/code-review/gitlab-group-hooks-empty.png?fit=max&auto=format&n=8f9QSVoLIbSaCs56&q=85&s=f5261ee35c5213b926b3eac3a56ac7bd" alt="GitLab group webhooks empty state with Add new webhook button" width="718" height="167" data-path="images/code-review/gitlab-group-hooks-empty.png" />
      </Frame>
    </Columns>
  </Step>

  <Step>
    Configure the webhook with the following settings:

    * **Name:** Choose an appropriate name (no specific requirement)
    * **Description:** Free text
    * **URL:** Use the Qodo on-premises URL provided by your Qodo Account Manager (for example: `https://qodo-merge.yourcompanyname.st.qodo.ai/webhook`)
    * **Secret token:** The shared secret you created in Step 2
    * **Triggers:** Select **Comments** and **Merge request events**

    <Columns cols={2}>
      <Frame>
        <img src="https://mintcdn.com/qodo/8f9QSVoLIbSaCs56/images/code-review/gitlab-group-hook-form.png?fit=max&auto=format&n=8f9QSVoLIbSaCs56&q=85&s=5e6a0f67eb8235a4eaa47bed25deba36" alt="GitLab group webhook form with URL, secret token, and description fields" width="720" height="367" data-path="images/code-review/gitlab-group-hook-form.png" />
      </Frame>

      <Frame>
        <img src="https://mintcdn.com/qodo/8f9QSVoLIbSaCs56/images/code-review/gitlab-group-hook-trigger-events.png?fit=max&auto=format&n=8f9QSVoLIbSaCs56&q=85&s=ec04114b662a15859d81ebf5cacfd431" alt="GitLab webhook trigger events with Comments and Merge request events enabled" width="720" height="338" data-path="images/code-review/gitlab-group-hook-trigger-events.png" />
      </Frame>
    </Columns>
  </Step>
</Steps>

## Verify the installation

<Steps>
  <Step>
    Open a new merge request in one of the projects within the selected group where Qodo was configured.
  </Step>

  <Step>
    Add a comment using one of the supported commands:

    * `/agentic_describe`
    * `/agentic_review`

    Qodo should respond with a review or PR summary directly on the merge request.
  </Step>
</Steps>

## Troubleshooting

If Qodo is not responding:

* Verify that the merge request is opened in a repository that is included in the configured group or project scope.
* Contact the Qodo team for assistance.

## Installation (project level)

If you want to limit Qodo to a specific GitLab project (repository), follow the same steps outlined above, but perform them at the **project level** instead of the group level.

You can repeat this process for multiple projects. Note that each project must use a **unique webhook secret**.

## Next steps

[Using Qodo in PRs](/code-review/get-started/use-qodo-in-prs): Get the most out of Qodo.
