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

# GitLab

> Connect gitlab.com or GitLab Self-Managed to Paradime for Turbo CI, on-merge runs, and Lineage Diff on merge requests, HTTPS clones, DinoAI agents, and DinoAI Code Review.

[GitLab](https://gitlab.com/) hosts your dbt™ repositories. Paradime connects to GitLab through a **GitLab connection**. The connection is a Paradime bot in your GitLab that receives merge request and comment events from your projects, and posts statuses and notes back.

One GitLab connection gives you:

* **CI/CD with no pipeline file.** [Turbo CI](https://docs.paradime.io/products/bolt/ci-cd/turbo-ci/gitlab.md), [on-merge runs](https://docs.paradime.io/products/bolt/ci-cd/continuous-deployment/gitlab.md), and [Lineage Diff](https://docs.paradime.io/products/bolt/ci-cd/lineage-diff/gitlab.md) run on your merge requests without a `.gitlab-ci.yml` job or a Paradime API key.
* **Repository clones over HTTPS.** The Code IDE, Bolt, DinoAI agents, and `dbt deps` reach the project with short-lived tokens. There is no deploy key to manage.
* **DinoAI agents that work as your people.** An agent pushes only to its own branch, and the merge requests it opens show the person who started the session as the author.
* **DinoAI Code Review and `@paradime`.** DinoAI reviews merge requests and answers mentions in merge request comments.

![The Paradime and GitLab logos side by side, with the text Paradime + GitLab](https://mintcdn.com/paradime-docs/8Ap_apA6iXxCRLlY/images/paradime-gitlab-integration.jpg?fit=max\&auto=format\&n=8Ap_apA6iXxCRLlY\&q=85\&s=518ed76d697134384d6d9aeef19ddd84)

## What you can do

> [card] [Turbo CI on merge requests](https://docs.paradime.io/products/bolt/ci-cd/turbo-ci/gitlab.md)
>
> Build and test changed models on every merge request, with a commit status for each Turbo CI schedule.

> [card] [On-merge runs](https://docs.paradime.io/products/bolt/ci-cd/continuous-deployment/gitlab.md)
>
> Run your on-merge schedules on the merge commit, with a summary note on the merge request.

> [card] [Lineage Diff](https://docs.paradime.io/products/bolt/ci-cd/lineage-diff/gitlab.md)
>
> See the downstream impact of column changes in one note on the merge request.

> [card] [Clone over HTTPS](https://docs.paradime.io/integrations/gitlab/connect-a-repository.md)
>
> Connect a workspace to a GitLab project with no deploy key. Each person commits and pushes as themselves.

> [card] [DinoAI Code Review](https://docs.paradime.io/products/dino-ai/code-review.md)
>
> A DinoAI reviewer reviews each merge request and posts its findings as one GitLab review.

> [card] [@paradime in merge requests](#dinoai-on-merge-requests)
>
> Mention `@paradime` in a merge request comment to ask DinoAI a question, request a review, or retry a failed step.

With a linked GitLab account, DinoAI in the Code IDE can also read, list, open, and comment on merge requests as you. **Create MR with DinoAI** in [Git Lite](https://docs.paradime.io/products/code-ide/version-control/git-lite.md) opens the merge request on GitLab, and you can edit schedule and agent YAML from the Bolt UI.

## gitlab.com or GitLab Self-Managed

Paradime has two GitLab integrations. Pick the one that matches where your projects live.

| | GitLab (gitlab.com) | GitLab Self-Managed |
| - | - | - |
| **Where you open it** | **Settings > Integrations > GitLab** | **Settings > Integrations > GitLab Self-Managed** |
| **GitLab version** | Always current | 16.0 or later, over `https` |
| **Who installs it** | An **Owner** of the projects' top-level group | A GitLab **instance administrator** |
| **Ways to give Paradime access** | **Sign in with GitLab**, an Owner token, or your own bot token | An administrator token, or your own bot token |
| **Scope of one connection** | One top-level group. Install again for each other group. | The whole instance |
| **Private CA certificate** | Not needed | Optional, for a TLS certificate from a private CA |
| **Separate sign-in URL** | Not needed | Optional, for browsers that reach GitLab at a different address |
| **OAuth application for account linking** | Paradime's own application. Nothing to set up. | One on your instance. **Install for me** registers it. Otherwise an administrator registers it once. |
| **Setup guide** | [Connect gitlab.com](https://docs.paradime.io/integrations/gitlab/gitlab-com.md) | [Connect GitLab Self-Managed](https://docs.paradime.io/integrations/gitlab/self-managed.md) |

> [!NOTE]
>
> Both integrations are in the **Workspace** tab of **Settings > Integrations**. You need permission to edit the workspace's Git repository settings to install or manage them. Other people see the state of the connection, but they cannot change it.

## What the Paradime bot does in GitLab

Paradime works in GitLab through one bot user per connection:

* **Install for me** creates a GitLab service account named `paradime`, with a token named `paradime`. The token has the `api` and `write_repository` scopes. On GitLab 17.9 or later, it also has the `self_rotate` scope, so Paradime can [rotate it](https://docs.paradime.io/integrations/gitlab/connection-health.md#token-rotation).
* **Use my own bot** uses a bot user, a group access token, or a project access token that you manage.

The bot is a member of each connected project, with the **Developer** or **Maintainer** role. With that role, the bot:

* Receives **Merge request events** and **Comments** from a project webhook on each project.
* Posts commit statuses, such as `Paradime Turbo CI`, `Paradime Lineage Diff`, and `Paradime Code Review`.
* Posts and updates merge request notes, such as the merge run summary and the DinoAI failure summary.
* Gives Bolt runs and DinoAI agents short-lived tokens to clone the project. An agent's token can push only to the agent's own branch.

A **Maintainer** bot can also repair the project webhooks when GitLab disables them. A **Developer** bot cannot manage webhooks, so a project Maintainer repairs them. See [Check the connection health](https://docs.paradime.io/integrations/gitlab/connection-health.md).

## Network requirements

* **GitLab to Paradime.** GitLab sends webhooks to `https://api.<your Paradime region>.paradime.io/api/v1/<company token>/webhook/gitlab`. For example, the US region uses the host `api.us.paradime.io`. If your network limits outbound traffic from GitLab, allow this host.
* **Paradime to GitLab.** On GitLab Self-Managed, Paradime calls your GitLab API and clones over `https`. If your instance is behind a firewall, allow the [Paradime IP addresses](https://docs.paradime.io/developers/ip-restrictions.md).

## DinoAI on merge requests

A [DinoAI Code Review](https://docs.paradime.io/products/dino-ai/code-review.md) reviewer works on GitLab merge requests the same way it works on GitHub pull requests. On GitLab:

* DinoAI posts all its findings at once as one GitLab review, with comments on the changed lines.
* The `Paradime Code Review` commit status shows on the merge request.
* On GitLab 19.3 or later, a blocking reviewer sets its reviewer state to **Requested changes** when findings are open, or **Reviewed** when none are.

To bring DinoAI into a merge request, mention `@paradime`, `@dinoai`, or the Paradime bot's username in a comment. DinoAI reacts with 👀, then answers in the same thread.

| Comment | What DinoAI does |
| - | - |
| `@paradime review` | Reviews the merge request. |
| `@paradime retry` | Runs the failed Turbo CI step again on the latest commit, and the steps after it. |
| `@paradime <anything else>` | Starts a DinoAI session with your question, or continues the merge request's session. |

To use a mention, you need the **Developer** role or higher on the GitLab project, and your GitLab account [linked](https://docs.paradime.io/integrations/gitlab/connect-a-repository.md#link-your-gitlab-account) to a Paradime account that can run DinoAI agents in the workspace. If your account is not linked, DinoAI replies with the steps to link it. DinoAI does not answer mentions on merge requests from forks. See [Mentions](https://docs.paradime.io/products/dino-ai/code-review/mentions.md).

## Set up GitLab

> [card] [Connect gitlab.com](https://docs.paradime.io/integrations/gitlab/gitlab-com.md)
>
> Install with Sign in with GitLab, an Owner token, or your own bot.

> [card] [Connect GitLab Self-Managed](https://docs.paradime.io/integrations/gitlab/self-managed.md)
>
> Install on your own instance, with an optional CA certificate and sign-in URL.

> [card] [Connect a repository](https://docs.paradime.io/integrations/gitlab/connect-a-repository.md)
>
> Clone a workspace's project over HTTPS, link your GitLab account, or use a deploy key.

> [card] [Connection health](https://docs.paradime.io/integrations/gitlab/connection-health.md)
>
> Check the connection, repair webhooks, rotate the token, or disconnect.

> [!NOTE]
>
> You can still connect a GitLab project with only an SSH deploy key, with no GitLab connection. Turbo CI, on-merge runs, and Lineage Diff then need a GitLab pipeline. See [Connect with a deploy key](https://docs.paradime.io/integrations/gitlab/connect-a-repository.md#connect-with-a-deploy-key).


## Related topics

- [Set up DinoAI Code Review](https://docs.paradime.io/guides/programmable-agents/set-up-dinoai-code-review.md)
- [Review modes and blocking](https://docs.paradime.io/products/dino-ai/code-review/review-modes.md)
- [Connect a GitLab repository](https://docs.paradime.io/integrations/gitlab/connect-a-repository.md)
- [Connect GitLab to Paradime: gitlab.com and GitLab Self-Managed](https://docs.paradime.io/changelog/2026-11-04/gitlab-integration.md)
- [GitLab connection health](https://docs.paradime.io/integrations/gitlab/connection-health.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.