> For the complete documentation index, see [llms.txt](https://docs.paradime.io/app-help/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.paradime.io/app-help/products/bolt/creating-schedules/command-settings/datahub-sync.md).

# DataHub Sync

### Overview

Paradime provides a convenient way to push dbt™ metadata from your Bolt runs directly into DataHub, keeping your DataHub catalog up to date with the latest models, lineage, columns, and descriptions from your dbt™ project.

By leveraging Paradime's DataHub Integration, you can orchestrate your data pipeline by pushing dbt™ artifacts to DataHub immediately after your dbt™ transformations complete. You can configure this by adding the push command directly in the same Bolt schedule as your dbt™ commands, or by using the on run completion trigger in a separate pipeline.

Under the hood, Paradime feeds the [manifest file](https://docs.getdbt.com/reference/artifacts/manifest-json) and the [catalog file](https://docs.getdbt.com/reference/artifacts/catalog-json) into DataHub's native `dbt` ingestion source, so the result matches what a dbt Cloud / dbt Core ingestion produces.

<figure><img src="/files/A4z6yWBvYOFg8v8y7EW4" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
**Prerequisites**

**1. Configure the DataHub Integration**

You will need a DataHub GMS URL and a Personal Access Token to use these commands. See our docs here.

**🔧 dbt™ Artifact Configuration**

* DataHub's dbt source needs **both** `target/manifest.json` **and** `target/catalog.json`.
* The catalog is only produced by `dbt docs generate`, so your schedule must run `dbt docs generate` before the push command.
* Whenever a dbt™ command is executed, files in the `target` directory will be overwritten. So you will need to run the push command after your dbt™ artifacts have been generated.

**2. Set Environment Variables**

Set your DataHub credentials and configuration as environment variables for Bolt Schedules

* `DATAHUB_GMS_URL`
* `DATAHUB_GMS_TOKEN`
* `DATAHUB_TARGET_PLATFORM`
* `DATAHUB_DOMAIN` (optional)
  {% endhint %}

#### How to Configure DataHub Artifacts Push

When setting up the DataHub Artifacts Push task, add the command after the dbt™ commands that generate your artifacts (including `dbt docs generate`). Paradime searches the resources directory and pushes **every** dbt™ project it finds (any folder containing both `target/manifest.json` and `target/catalog.json`), so a multi-project setup is handled in one task.

{% hint style="success" %}
We recommend running `dbt docs generate` as the step immediately before the push command. This guarantees the `catalog.json` DataHub needs is present and up to date for every run.
{% endhint %}

### datahub-artifacts-push

Push Bolt dbt™ artifacts (manifest + catalog) to DataHub.

```
paradime run datahub-artifacts-push [OPTIONS]
```

| Flag                             | Type               | Description                                                                                                                                                                                                                                                                                 |
| -------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--datahub-server`               | *`Required, TEXT`* | <p>The DataHub GMS server URL (e.g. <code>https\://\<instance>.acryl.io/gms</code>).</p><p><br>- Env: <code>DATAHUB\_GMS\_URL</code></p>                                                                                                                                                    |
| `--datahub-token`                | *`Required, TEXT`* | <p>The DataHub personal access token used to authenticate to GMS.</p><p><br>- Env: <code>DATAHUB\_GMS\_TOKEN</code></p>                                                                                                                                                                     |
| `--target-platform`              | *`Required, TEXT`* | <p>The data warehouse platform the dbt™ models run on (e.g. <code>snowflake</code>, <code>bigquery</code>, <code>redshift</code>).</p><p><br>- Env: <code>DATAHUB\_TARGET\_PLATFORM</code></p>                                                                                              |
| `--domain`                       | *`Optional, TEXT`* | <p>DataHub domain URN to associate the pushed assets with (e.g. <code>urn:li:domain:sales</code>). When set, every emitted dataset is associated with that domain.</p><p><br>- Env: <code>DATAHUB\_DOMAIN</code></p>                                                                        |
| `--paradime-resources-directory` | *`Optional, TEXT`* | <p>The directory where the Paradime resources are stored. The command searches this directory for <code>target/manifest.json</code> and <code>target/catalog.json</code>.</p><p><br>- Default: current directory (<code>.</code>)<br>- Env: <code>PARADIME\_RESOURCES\_DIRECTORY</code></p> |
| `--json`                         | *`Optional, FLAG`* | Output results as JSON.                                                                                                                                                                                                                                                                     |

{% hint style="info" %}
**Note**

Each flag can be supplied either on the command line or via its environment variable. Configuring the integration in Paradime sets these environment variables for you, so in a Bolt schedule you can usually call `paradime run datahub-artifacts-push` with no flags.
{% endhint %}

#### Examples

**Standard push**

When `DATAHUB_GMS_URL`, `DATAHUB_GMS_TOKEN`, and `DATAHUB_TARGET_PLATFORM` are set as environment variables, the command picks them up automatically, so no flags are needed.

<figure><img src="/files/Coc9yiGRLim7eml0HLwU" alt=""><figcaption></figcaption></figure>

```bash
# Generate the artifacts (catalog requires `dbt docs generate`)
dbt docs generate

# Push the manifest + catalog to DataHub using the environment variables
paradime run datahub-artifacts-push
```

**Push with a domain**

Use the `--domain` flag to associate every pushed asset with a specific DataHub domain URN. This overrides the `DATAHUB_DOMAIN` environment variable for this run.

<figure><img src="/files/rsxOIL0DbrhHSSJ8q8WR" alt=""><figcaption></figcaption></figure>

```bash
# Generate the artifacts (catalog requires `dbt docs generate`)
dbt docs generate

# Push the manifest + catalog and associate the assets with a domain
paradime run datahub-artifacts-push --domain urn:li:domain:sales
```

{% hint style="success" %}
**Learn More**: For details on configuring the integration and generating credentials, refer to the [DataHub integration documentation.](/app-help/integrations/datahub.md)
{% endhint %}

***

Now, let's learn how to configure the Trigger Types of a Bolt Schedule.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.paradime.io/app-help/products/bolt/creating-schedules/command-settings/datahub-sync.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
