{"id":8074,"library":"dbt-loom","title":"dbt-loom","description":"dbt-loom is a dbt-core plugin designed to facilitate multi-project deployments by enabling the injection of public model definitions from upstream dbt artifacts into downstream dbt projects. It supports various sources for these artifacts, including local files, remote HTTP(S) endpoints, dbt Cloud, and major object storage providers like S3, Google Cloud Storage, and Azure Storage. The library is currently at version 0.9.4 and is under active development, receiving regular updates to enhance features and maintain compatibility with dbt-core.","status":"active","version":"0.9.4","language":"en","source_language":"en","source_url":"https://github.com/nicholasyager/dbt-loom","tags":["dbt","dbt-core","data mesh","multi-project","data orchestration","plugin"],"install":[{"cmd":"pip install dbt-loom","lang":"bash","label":"Install dbt-loom"}],"dependencies":[{"reason":"Core functionality relies on dbt-core's plugin API. Requires dbt-core >=1.6.0-b8, with specific features (e.g., Databricks/Snowflake warehouse manifests) requiring >=1.8.0.","package":"dbt-core","optional":false},{"reason":"Required for fetching dbt manifests from AWS S3-compatible object storage.","package":"boto3","optional":true},{"reason":"Required for fetching dbt manifests from Google Cloud Storage (GCS).","package":"google-cloud-storage","optional":true},{"reason":"Required for fetching dbt manifests from Azure Storage.","package":"azure-storage-blob","optional":true}],"imports":[{"note":"dbt-loom operates as a dbt-core plugin, activated through its configuration file (dbt_loom.config.yml) rather than explicit Python imports in user code.","symbol":"dbt-loom","correct":"dbt-loom functionality is typically configured via dbt_loom.config.yml and hooks into dbt-core's plugin system. Direct Python imports are not usually required by end-users."}],"quickstart":{"code":"# 1. Install dbt-loom\npip install dbt-loom\n\n# 2. Ensure your upstream dbt project has public models defined in its schema.yml\n#    e.g., in upstream_project/models/schema.yml:\n#    models:\n#      - name: public_customers\n#        access: public\n\n# 3. Run your upstream dbt project to generate its manifest.json\n#    cd upstream_project && dbt build --target production\n\n# 4. Create a dbt_loom.config.yml file in your downstream dbt project's root directory\n#    (replace with actual path to upstream manifest.json)\n#    Example dbt_loom.config.yml:\n#    manifests:\n#      - name: upstream_project\n#        type: file\n#        config:\n#          path: ../path/to/upstream_project/target/manifest.json\n\n# 5. Reference the upstream public model in your downstream dbt project\n#    e.g., in downstream_project/models/my_downstream_model.sql:\n#    SELECT *\n#    FROM {{ ref('upstream_project', 'public_customers') }}\n\n# 6. Run your downstream dbt project\n#    cd downstream_project && dbt build","lang":"bash","description":"To quickly get started with dbt-loom, first install the package. Then, ensure your upstream dbt project has `access: public` defined for models you wish to share and generate its `manifest.json`. In your downstream dbt project, create a `dbt_loom.config.yml` file pointing to this upstream manifest. Finally, you can reference the public models using the standard `ref('upstream_project_name', 'model_name')` syntax and run your downstream dbt commands."},"warnings":[{"fix":"Monitor dbt-loom and dbt-core release notes for compatibility updates. Pin dbt-loom and dbt-core versions in your `requirements.txt`.","message":"dbt-core's plugin API, which dbt-loom utilizes, is still in beta. This means that future updates to dbt-core may introduce breaking changes to the plugin interface, potentially requiring updates to dbt-loom.","severity":"gotcha","affected_versions":"All dbt-loom versions depending on dbt-core < 1.x (stable plugin API)"},{"fix":"Be aware of this limitation when relying on dbt-generated documentation for cross-project models. Refer to the upstream project's documentation directly for full details.","message":"Documentation generated by `dbt docs generate` for models injected by dbt-loom may be sparse. This is because `PluginNodeArgs` (how dbt-loom injects nodes) are not fully-realized `dbt ManifestNode` objects.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Upgrade your `dbt-core` installation and compatible dbt adapter to at least 1.6.0-b8, and 1.8.0+ if using advanced warehouse storage manifest sources.","message":"dbt-loom requires `dbt-core` version 1.6.0-b8 or newer. For specific features, such as fetching manifest files from Snowflake Stage or Databricks Volumes/DBFS/Workspace, `dbt-core` version 1.8.0 or newer is required.","severity":"breaking","affected_versions":"<0.9.0 (and users of older dbt-core versions)"},{"fix":"Ensure all models intended for cross-project consumption are explicitly marked as `access: public` in the upstream dbt project's schema definition.","message":"Only dbt models explicitly marked with `access: public` in their `schema.yml` file in the upstream project will be injected into downstream projects by dbt-loom.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-16T00:00:00.000Z","next_check":"2026-07-15T00:00:00.000Z","problems":[{"fix":"Ensure that any seeds or other internal resources that are dependencies of public models in an upstream project are also made accessible or handled appropriately within the upstream project's manifest, or restructure dependencies to avoid this scenario.","cause":"This typically occurs when a public model in an upstream project depends on a protected (non-publicly exposed) seed in the same upstream project, and the downstream project cannot resolve the seed dependency.","error":"Compilation Error 'model.parent.dim_commission_type' depends on 'seed.parent.seed_commission_type' which is not in the graph!"},{"fix":"Try running `dbt clean` in both the upstream and downstream projects before `dbt deps` and `dbt build`/`dbt run`. This can clear out incompatible unique_ids generated between `dbt-core` versions. Also, verify `dbt-loom` and `dbt-core` versions for known compatibilities.","cause":"This error can occur when working with versioned models, potentially due to inconsistencies in how `dbt-core` versions represent node unique IDs for versioned models, or lingering artifacts from previous `dbt` runs.","error":"Compilation Error 'model.revenue.orders.v1' which is not in the graph! (or similar with versioned models like 'model.revenue.orders.v1.0')"},{"fix":"Update the upstream project's `schema.yml` file to set `access: public` for the `model.balboa.us_population` model if it is intended to be consumed by other projects.","cause":"Attempting to reference a dbt model in an upstream project that has not been explicitly marked with `access: public` in its `schema.yml` file. dbt-loom purposefully only injects public models.","error":"Parsing Error Node model.great_bay.test_us_population attempted to reference node model.balboa.us_population, which is not allowed because the referenced node is private to the marketing group."}]}