> 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/guides-new/data-mesh-setup/configure-project-dependencies.md).

# Configure Project dependencies

dbt™ Mesh introduces a new method to manage dependencies in your dbt™ project. This allow you to reference models from another project without having to import these as a dbt™️ package.

Instead, you treat your dependency on those models as an API that returns a dataset. The maintainer of the public model is responsible for ensuring its quality and stability.

## Prerequisites <a href="#prerequisites" id="prerequisites"></a>

* Use a supported version of dbt 1.7 or greater for both the upstream ("producer") project and the downstream ("consumer") project.
* Define models in an upstream ("producer") project that are configured with [`access: public`](/app-help/guides-new/data-mesh-setup/model-access.md). You need at least one successful job run after defining their `access`.
* Have at least one [Bolt schedule](broken://pages/USoytPKBmgKTXzqIDTgR) with a successful run.

## Setup your consumer project

To get started, you will to crate a configuration file in your dbt™️ consumer project for Paradime to fetch public models definition from your "producer" project. You will need to provide:

* The name of your "producer" project, as defined in your `dbt_project.yml`.
* The name of a [Bolt schedule](broken://pages/USoytPKBmgKTXzqIDTgR) in your "producer" project, Paradime will use this to fetch and inject model metadata in your "consumer" project.
* [API credentials from your "producer" project](/app-help/developers/generate-api-keys.md). The API keys must have the *Bolt schedules metadata viewer* capabilit&#x79;*.*

### 1. Add configuration file

To enable cross-project dependencies add a new file named `dbt_loom.config.yml` in your "consumer" project git repository and provide the "producer" project configuration.

{% hint style="info" %}
Make sure that this file sits in you dbt™️ project root level, this is usually in the same directory where your `dbt_project.yml` sits.
{% endhint %}

{% code title="dbt\_loom.config.yml" fullWidth="false" %}

```yaml
manifests:
  - name: jaffle_shop_platform # The name of your "producer" project
    type: paradime
    config:
      schedule_name: hourly_bolt_schedule #The name of the Bolt schedule in your "producer" project
      # Set the environment variables name which we will use to provide API credentials from the "producer" project.
      # You can set a name that is reppresentative for your producer dbt™️ project name
      api_key: ${PRODUCER_PROJECT_API_KEY} 
      api_secret: ${PRODUCER_PROJECT_API_SECRET}
      api_endpoint: ${PRODUCER_PROJECT_API_ENDPOINT}
```

{% endcode %}

### 2. Setup Workspace level API credentials

{% hint style="warning" %}
Ensure the environment variable names match those defined in your `dbt_loom.config.yml`
{% endhint %}

After generating the API credentials from your "producer" project, you will need to set these as an environment variable name in the workspace settings of the "consumer" project.

This step is required to enable [Bolt to run dbt™️ schedules](broken://pages/USoytPKBmgKTXzqIDTgR) referencing models in your "producer" project.

{% content-ref url="/pages/xdyO1PPYBnlJDuvHKyAw" %}
[Bolt Schedules Environment Variables](/app-help/documentation/settings/environment-variables/bolt-schedule-env-variables.md)
{% endcontent-ref %}

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

### 3. Setup User-level level API credentials

{% hint style="warning" %}
Ensure the environment variable names match those defined in your `dbt_loom.config.yml`
{% endhint %}

After generating the API credentials from your "producer" project, each user developing in the "consumer" project **MUST** set the API credentials as an environment variable.

This will allow user to reference "producer" project models while developing in the [Paradime Code IDE](broken://pages/iu9kFNYCtW2jWx0ajkPJ).

{% content-ref url="/pages/8hS67sNQhP6D9Ek4SksW" %}
[Code IDE Environment Variables](/app-help/documentation/settings/environment-variables/code-ide-env-variables.md)
{% endcontent-ref %}

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

## How to use cross-project model ref

When referencing models from a project-type dependency, always use the two-argument `ref` that includes the project name.

```sql
with monthly_revenue as (

    select * from {{ ref('jaffle_finance', 'monthly_revenue') }}

),

...
```

{% hint style="info" %}
Only models with [`access: public`](/app-help/guides-new/data-mesh-setup/model-access.md) can be referenced from your "producer" project.
{% endhint %}


---

# 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/guides-new/data-mesh-setup/configure-project-dependencies.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.
