> ## 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.

# DataHub

> Connect DataHub to Paradime so Bolt pushes your dbt™ docs artifacts (models, lineage, columns, and descriptions) to DataHub after every production docs run.

[DataHub](https://datahubproject.io/) is an open-source metadata platform for data discovery, observability, and governance. Connecting DataHub to Paradime keeps your DataHub catalog in sync with your dbt™ project by pushing your dbt™ docs artifacts (models, lineage, columns, and descriptions) to DataHub.

## Two ways to sync

You can push dbt™ metadata to DataHub in two ways:

<CardGroup cols={2}>
  <Card title="Automatic sync" icon="rotate">
    Connect DataHub in the Paradime UI, and Paradime pushes dbt™ metadata to DataHub automatically after every [Paradime Catalog Refresh](/products/bolt/creating-schedules/command-settings/paradime-refresh-catalog), with no command required.
  </Card>

  <Card title="Bolt or CLI command" icon="terminal" href="/products/bolt/creating-schedules/command-settings/datahub-sync">
    Push explicitly from a Bolt schedule or the CLI using the DataHub sync command as part of your production pipeline.
  </Card>
</CardGroup>

Push explicitly with the command from either surface:

| Surface       | Where                                                                                   |
| ------------- | --------------------------------------------------------------------------------------- |
| Bolt schedule | [DataHub sync](/products/bolt/creating-schedules/command-settings/datahub-sync) command |
| CLI           | [`paradime bolt` DataHub CLI](/developers/paradime-cli/datahub-cli)                     |

You can connect the integration in two ways:

* **Connect UI**: a dedicated form to enter your GMS URL, token, and optional domain, with a built-in connection test. Fastest way to get set up.
* **Environment variables**: set your DataHub credentials as Paradime environment variables. Useful for scripted or templated setups.

Both methods use the same underlying credentials, described below.

## Prerequisites

<Info>
  Before generating API credentials, ensure you have:

  * An active DataHub instance (DataHub Cloud / Acryl)
  * Permission to create Personal Access Tokens in DataHub
  * Metadata Service Authentication enabled on your instance
  * The service account used to generate the Personal Access Token must have **Admin** permissions in DataHub. The token inherits the account's privileges, and Admin access is required to push dbt™ metadata to the GMS endpoint.
</Info>

## Step 1: Generate API Credentials

Paradime authenticates to DataHub's GMS (Generalized Metadata Service) endpoint using a Personal Access Token. The token is created from your DataHub instance and used together with your GMS server URL.

1. Log in to your DataHub instance as a user with permission to manage access tokens.
2. Click your profile in the top right corner and navigate to **Settings**.
3. Select the **Access Tokens** tab from the settings menu.
4. Click the **Generate new token** button.
5. Enter a name for your token (e.g., "Paradime Integration"), set an expiry, and click **Create**.
6. Copy the **Access Token** from the dialog. Store it securely as we will need it to set up the Paradime integration. **Important:** The Access Token will only be displayed once. Make sure to copy and store it in a secure location before closing this dialog.

## Step 2: Find Your GMS Server URL

Paradime sends metadata to your DataHub GMS endpoint. For DataHub Cloud, this is your instance URL with the `/gms` path, for example:

```text theme={"system"}
https://<instance>.acryl.io/gms
```

## Step 3: Connect the DataHub Integration

The DataHub integration can be connected by a Paradime Admin user. Choose one of the following methods, both enable the background data catalog refresh.

### Option 1: Connect via the UI (recommended)

<Frame>
  <img src="https://mintcdn.com/paradime-docs/vrtvqFryCVgm3kAH/images/image-284.png?fit=max&auto=format&n=vrtvqFryCVgm3kAH&q=85&s=5602b9bacfcdda183203d685cb1e8977" alt="Connecting the DataHub integration in Paradime" width="1246" height="1234" data-path="images/image-284.png" />
</Frame>

Use the dedicated **Connect to DataHub** panel to set up the integration and enable the background catalog refresh directly from Paradime.

1. In Paradime, go to **Settings → Integrations** (see [connecting integrations](/integrations/connecting-integrations)).
2. Find **DataHub** and click **Connect** to open the **Connect to DataHub** panel.
3. Fill in the fields:
   * **GMS URL**: your DataHub GMS server URL (e.g. `https://<instance>.acryl.io/gms`).
   * **Personal Access Token**: the token you generated from your DataHub instance.
   * **Domain (optional)**: a DataHub domain URN or domain id to associate pushed assets with (e.g. `urn:li:domain:sales`).
4. Click **Test Connection** to verify Paradime can reach your GMS endpoint with the supplied token.
5. Once the test passes, save the connection.

After connecting, Paradime automatically pushes dbt™ docs artifacts to DataHub after every production `dbt docs generate` run, no environment variables required. The target warehouse platform is inferred from your production connection.

You will be able to control the sync by using the [Paradime Catalog Refresh](/products/bolt/creating-schedules/command-settings/paradime-refresh-catalog) Command in Bolt.

### Option 2: Connect via Environment Variables

Alternatively, set your DataHub credentials as environment variables in Paradime before connecting the integration.

1. In Paradime, go to **Workspace Settings** > **Environment Variables**.
2. Create the following environment variables:
   * `DATAHUB_GMS_URL`: Set this to your DataHub GMS server URL (e.g. `https://<instance>.acryl.io/gms`)
   * `DATAHUB_GMS_TOKEN`: Set this to your DataHub Personal Access Token
   * `DATAHUB_TARGET_PLATFORM`: Set this to the warehouse your dbt™ models run on (e.g. `snowflake`)
3. Click **Save** to store the environment variables.

## Connection parameters

Whichever method you use, Paradime reads the same DataHub credentials and configuration. The UI captures these in the **Connect to DataHub** form; the environment variable method reads them from the following variables:

| Environment Variable      | Required | Description                                                                                   |
| ------------------------- | -------- | --------------------------------------------------------------------------------------------- |
| `DATAHUB_GMS_URL`         | ✅        | The DataHub GMS server URL (e.g. `https://<instance>.acryl.io/gms`)                           |
| `DATAHUB_GMS_TOKEN`       | ✅        | The Personal Access Token generated from your DataHub instance                                |
| `DATAHUB_TARGET_PLATFORM` | ✅        | The data warehouse platform the dbt™ models run on (e.g. `snowflake`, `bigquery`, `redshift`) |
| `DATAHUB_DOMAIN`          | Optional | A DataHub domain URN to associate pushed assets with (e.g. `urn:li:domain:sales`)             |

Make sure these environment variables are set in your Paradime Workspace Settings > Environment Variables before attempting to use the environment variable method.

## DataHub Integration Capabilities

Paradime uses DataHub's native `dbt` ingestion source to push dbt™ metadata from Bolt into DataHub. This allows you to keep your DataHub catalog in sync with your dbt™ project as part of your Paradime workflows, enabling:

* Pushing dbt™ models, lineage, columns, and descriptions to DataHub on every run
* Associating pushed assets with a DataHub domain
* Pushing artifacts for multiple dbt™ projects in a single task
* Integrating catalog updates into larger data orchestration workflows


## Related topics

- [DataHub CLI](/developers/paradime-cli/datahub-cli.md)
- [Push to DataHub](/products/bolt/creating-schedules/command-settings/datahub-sync.md)
- [Integrations](/integrations/index.md)
- [Commands](/products/bolt/creating-schedules/command-settings/index.md)
- [GitHub App](/integrations/github/github-app.md)
