[v2 Bug] `dbt docs generate` failing with "this build has no embedded docs UI"
- Dominant language
- Rust
- Stars
- 13.8k
- Forks
- 2.6k
- Avg merge
- 21h 31m
- Merged PRs (30d)
- 56
Description
### Is this a new bug in dbt v2.x compared to the latest version of dbt 1.x?
- [x] I believe this is a new bug in dbt v2.x
- [x] I have searched the existing issues and could not find a duplicate
### Current Behavior
I am attempting to build the v2 dbt docs site using `dbt-oss==2.0.1`. Instead of the site being generated in my local directory, I am receiving an error:
```
[error] [Generic (dbt1000)]: dbt docs generate: this build has no embedded docs UI (built without the `embed-ui` feature), so there is no site to write
```
### Expected Behavior
Per the [docs](https://docs.getdbt.com/docs/build/view-documentation?version=2#dbt-docs-v2) (accessed today), I would expect the compiled static site to be available for me to preview:
> To generate and serve dbt Docs v2 with dbt v2, run `dbt docs generate` to build the site, then `dbt docs serve` to preview it locally. `dbt docs generate` compiles your project and writes the index for you in a single command.
### Steps To Reproduce
1. Create a new directory to house the project.
With the following `requirements.txt`:
```
dbt-oss==2.0.1
```
Run the following:
```bash
mkdir ~/dbt-reprex
cd ~/dbt-reprex
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
dbt init
```
2. Set up a local profile (using DuckDB).
```yaml
# ./jaffle_shop/profiles.yml
jaffle_shop:
target: dev
outputs:
dev:
type: duckdb
path: reprex.duckdb
schema: main
threads: 4
timeout_seconds: 300
```
3. Verify the connection, and build the project:
```
dbt debug
dbt build
```
4. Attempt to generate the docs site:
```
dbt docs generate
```
### Relevant log output
```shell
dbt debug
dbt-oss 2.0.1
Loading profiles.yml
Debugging profile: dev
Debugging dbt version: 2.0.1
Debugging platform: macos aarch64 (unix)
Debugging adapter type: duckdb (remote)
Debugging dependencies:
git: OK
Debugging connection:
"path": "reprex.duckdb",
"schema": "main"
Debugging connection test: OK
Debugged All checks passed!
============================= Execution Summary ==============================
Finished 'debug' successfully for target 'dev' [625ms]
dbt docs generate
Running compile; pass `--no-compile` to export the existing index instead.
dbt-oss 2.0.1
Succeeded seed main_raw.raw_stores (table) [32 of 45 in 0.00s]
Succeeded seed main_raw.raw_customers (table) [35 of 45 in 0.00s]
Succeeded seed main_raw.raw_supplies (table) [39 of 45 in 0.00s]
Succeeded seed main_raw.raw_products (table) [41 of 45 in 0.00s]
Succeeded seed main_raw.raw_orders (table) [43 of 45 in 0.00s]
Succeeded seed main_raw.raw_items (table) [45 of 45 in 0.00s]
Succeeded test relationships_orders_customer_id__customer_id__ref_stg_customers_ (models/marts/orders.yml:20:13) [11 of 45 in 0.00s]
Succeeded test unique_orders_order_id (models/marts/orders.yml:16:13) [7 of 45 in 0.00s]
Succeeded test relationships_order_items_order_id__order_id__ref_orders_ (models/marts/order_items.yml:10:13) [12 of 45 in 0.00s]
Succeeded test not_null_stg_supplies_supply_uuid (models/staging/stg_supplies.yml:11:13) [13 of 45 in 0.00s]
Succeeded test not_null_stg_customers_customer_id (models/staging/stg_customers.yml:8:13) [19 of 45 in 0.00s]
Succeeded test dbt_utils_expression_is_true_orders_order_total_subtotal_tax_paid (models/marts/orders.yml:8:9) [24 of 45 in 0.00s]
Succeeded test not_null_stg_products_product_id (models/staging/stg_products.yml:8:13) [14 of 45 in 0.00s]
Succeeded test not_null_stg_order_items_order_id (models/staging/stg_order_items.yml:13:13) [17 of 45 in 0.00s]
Succeeded test dbt_utils_expression_is_true_orders_order_items_subtotal_subtotal (models/marts/orders.yml:5:9) [25 of 45 in 0.00s]
Succeeded model main.stg_locations (view) [31 of 45 in 0.00s]
Succeeded model main.customers (table) [33 of 45 in 0.00s]
Succeeded model main.stg_customers (view) [34 of 45 in 0.00s]
Succeeded model main.orders (table) [36 of 45 in 0.00s]
Succeeded model main.stg_order_items (view) [44 of 45 in 0.00s]
Succeeded test unique_stg_order_items_order_item_id (models/staging/stg_order_items.yml:9:13) [4 of 45 in 0.01s]
Succeeded test not_null_stg_orders_order_id (models/staging/stg_orders.yml:12:13) [15 of 45 in 0.01s]
Succeeded test unique_order_items_order_item_id (models/marts/order_items.yml:7:13) [8 of 45 in 0.01s]
Succeeded test unique_stg_products_product_id (models/staging/stg_products.yml:9:13) [2 of 45 in 0.01s]
Succeeded test unique_stg_customers_customer_id (models/staging/stg_customers.yml:9:13) [6 of 45 in 0.01s]
Succeeded test dbt_utils_expression_is_true_stg_orders_order_total_tax_paid_subtotal (models/staging/stg_orders.yml:5:9) [23 of 45 in 0.01s]
Succeeded model main.products (table) [29 of 45 in 0.00s]
Succeeded test not_null_stg_order_items_order_item_id (models/staging/stg_order_items.yml:8:13) [16 of 45 in 0.01s]
Succeeded test dbt_utils_expression_is_true_customers_lifetime_spend_pretax_lifetime_tax_paid_lifetime_spend (models/marts/customers.yml:5:9) [26 of 45 in 0.01s]
Succeeded model main.supplies (table) [28 of 45 in 0.00s]
Succeeded test not_null_orders_order_id (models/marts/orders.yml:15:13) [20 of 45 in 0.01s]
Succeeded model main.order_items (table) [37 of 45 in 0.00s]
Succeeded test unique_stg_supplies_supply_uuid (models/staging/stg_supplies.yml:12:13) [1 of 45 in 0.01s]
Succeeded model main.stg_products (view) [40 of 45 in 0.00s]
Succeeded test unique_stg_locations_location_id (models/staging/stg_locations.yml:9:13) [5 of 45 in 0.01s]
Succeeded test accepted_values_customers_customer_type__new__returning (models/marts/customers.yml:31:13) [27 of 45 in 0.01s]
Succeeded test unique_stg_orders_order_id (models/staging/stg_orders.yml:13:13) [3 of 45 in 0.01s]
Succeeded test not_null_stg_locations_location_id (models/staging/stg_locations.yml:8:13) [18 of 45 in 0.01s]
Succeeded test not_null_customers_customer_id (models/marts/customers.yml:12:13) [22 of 45 in 0.01s]
Succeeded test unique_customers_customer_id (models/marts/customers.yml:13:13) [9 of 45 in 0.01s]
Succeeded model main.locations (table) [30 of 45 in 0.01s]
Succeeded test not_null_order_items_order_item_id (models/marts/order_items.yml:6:13) [21 of 45 in 0.01s]
Succeeded test relationships_stg_order_items_order_id__order_id__ref_stg_orders_ (models/staging/stg_order_items.yml:14:13) [10 of 45 in 0.01s]
Succeeded model main.stg_supplies (view) [38 of 45 in 0.01s]
Succeeded model main.stg_orders (view) [42 of 45 in 0.00s]
============================ Errors and Warnings =============================
[error] [Generic (dbt1000)]: dbt docs generate: this build has no embedded docs UI (built without the `embed-ui` feature), so there is no site to write
============================= Execution Summary ==============================
Finished 'docs' with 1 error [615ms]
```
### Environment
```markdown
- OS: MacOS (Tahoe 26.6.2)
- CPU: ARM
- dbt distribution and version: dbt-oss 2.0.1
```
### Which database adapter are you using?
duckdb
### Is this a discrepancy vs. dbt 1.x?
- [x] Yes — this works in dbt 1.x but not in dbt v2.x
### Additional Context
[This page](https://docs.getdbt.com/docs/dbt/dbt-availability?version=2) indicates that at least a "lite" form of the docs site should be available under the OSS version.
Contributor guide
Assessment
This issue has not been assessed yet.