Skip to main content
dbt-features logo

dbt-features

Feature catalog for dbt projects, built for ML teams.

tests demo python coverage license

Live demo · Docs

Catalog index showing feature groups grouped by entity, with faceted filters for type, lifecycle, freshness, and owner


Install

pip install dbt-features

For warehouse enrichment (freshness, row counts, null %), install the extra for your warehouse:

pip install 'dbt-features[duckdb]'       # local / dbt-duckdb
pip install 'dbt-features[postgres]'     # Postgres
pip install 'dbt-features[redshift]'     # Redshift
pip install 'dbt-features[snowflake]'    # Snowflake
pip install 'dbt-features[bigquery]'     # BigQuery

Requires Python 3.10+. The base install does not depend on dbt-core.

Quickstart

Try it with no setup - bundled sample data, served on a free port:

dbt-features demo

On your dbt project:

dbt parse
dbt-features build --connection my_profile --output ./catalog
dbt-features serve --output ./catalog

In CI, gate on the metadata with the linter:

dbt-features lint --strict                       # fail on errors and warnings
dbt-features lint --entity-catalog entities.yml  # also enforce entity names

For production (with type inference and correct schemas):

dbt docs generate                              # populates catalog.json with column types
dbt-features build \
    --manifest target/manifest.json \
    --catalog target/catalog.json \
    --connection my_profile --target prod \
    --output ./catalog

See Production setup for details.

What it does

  • Reads your dbt manifest and finds models marked is_feature_table: true.
  • Renders a static HTML site: feature groups, features, lineage, ML model consumers.
  • With --connection, pulls freshness, row counts, null %, and cardinality from the warehouse.

Read-only. No backend, no database.

Python API

Downstream tools can build on the parsed catalog instead of re-reading manifest.json:

from dbt_features import parse_project

catalog = parse_project("path/to/dbt/project")
for group in catalog.feature_groups:
    for feature in group.features:
        print(feature.name, feature.consumers_derived, feature.consumers_declared)

Stability: parse_project, Catalog, FeatureGroup, Feature, ExposureInfo, and LineageRef (all re-exported from dbt_features) are the public, provisional surface. They are intended to be stable but are not yet semver-locked — the resolved data model is still settling, so expect only additive changes, called out in the changelog, until the surface is frozen. Anything prefixed _, the renderer/enrichment internals, and the HTML layout are internal and may change at any time. Feature.used_by is deprecated in favour of consumers_derived / consumers_declared and is slated for removal.

Docs

Development

git clone https://github.com/gauthierpiarrette/dbt-features
cd dbt-features
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest

License

Apache 2.0. Not affiliated with dbt Labs.

Metadata

Release files for dbt-features 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dbt-features 0.6.0
File Size Uploaded
dbt_features-0.6.0.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for dbt-features 0.6.0
File Interpreter ABI Platform
dbt_features-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.4 MB

Release files / dbt_features-0.6.0.tar.gz

Download URL dbt_features-0.6.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
f72023b1a89f6efc856ea409920d4b3f6f4add7060b439684b4bddb0055a0dd0
BLAKE2b-256 checksum
How to use checksums
20cf94f7d522bbd6ff3fb3c5dbe585cd324d1dc743e8ffdf4ff9320de3e53468
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 2, 2026.

Transparency log

Release files / dbt_features-0.6.0-py3-none-any.whl

Download URL dbt_features-0.6.0-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
d2d048f0f51f6bf7ebdefd5ac67c1893122772e12a2a04b135663d9ed5276894
BLAKE2b-256 checksum
How to use checksums
872cfa166f605b462f5b331188056c121566c341ca3ccaa76009d5806862fb65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page