trellis Data
trellis is a lightweight, local-first app that connects conceptual and logical data modeling with how you actually build the warehouse today—dbt-core first, with a live canvas that stays aligned to your project.
Why trellis
Typical pain
- ERDs live in separate tools and go stale on real projects.
- Transformations drift from the story the business understands.
- Stakeholders can’t see structure without wading through SQL and YAML.
- “All-in-one” warehouse designers rarely meet teams where they are (dbt, git, the modern stack).
What you get with trellis
- Small PyPI install, local web app — run it beside your dbt project; the canvas and model files (
data_model.yml, dbt YAML) stay in version control, so names, relationships, and descriptions evolve like the rest of your code—not a one-off diagram export. - One place to see entities, fields, relationships, and descriptions—tied to your repo, not a dead export.
- Conceptual view for names and meaning; Logical view for columns, types, and materialization detail—switch without losing context.
- Greenfield: sketch entities and attributes, then push structured artifacts into dbt.
- Brownfield: load what you already modeled in dbt, infer links from relationship tests, and push descriptions and tags back into the project.
What you can do
- Visualize your data model — canvas layout, conceptual vs logical views, less manual “diagram maintenance.”
- Work with your dbt project — point at
manifest.json/catalog.json, keep the diagram honest, round-trip descriptions and tags, and generate relationship tests from drawn links. - Optional — Kimball-style modeling — classify facts and dimensions, sensible default placement, and a Bus Matrix when your team thinks in stars/snowflakes; you can stay on plain entities if you prefer.
- Optional — business events & processes — capture events with 7W-style annotations and group them into processes; most useful for greenfield and dimensional workflows. Skip this entirely if it’s not your methodology.
Getting started
Install
pip install trellis-datamodel
# or: uv pip install trellis-datamodel
Run next to your dbt project
cd /path/to/your/dbt-projecttrellis init— createstrellis.yml(point it at your dbt paths and artifacts).trellis run— opens http://localhost:8089 (usetrellis run --helpfor port and config path).
Generate manifest.json and catalog.json with dbt docs generate in your dbt project so trellis can load models; without them, the UI may start but show no dbt-backed entities.
Install from source or hack on the app: see CONTRIBUTING.md.
Examples & walkthroughs
Short video walkthroughs:
| Getting started | Init, settings in the UI, conceptual vs logical, relationships, push to dbt. |
| dbt integration | Link a project, mock data, bind entities to models, stay in sync with artifacts. |
| Documenting business processes | Optional / experimental: events, 7Ws, processes—enable in config or UI first. |
More narrative walkthroughs and context: full tutorial · general information.
Configuration
After trellis init, edit trellis.yml. Annotated options and defaults live in trellis.yml.example (paths, modeling style, optional lineage/exposures, entity guidance, prefixes, etc.).
You can also open /config in the app to edit settings in the browser (validated saves; see example file for field meanings).
Landing page and Canvas defaults
Choose the page shown when opening the root URL, and optionally define shared Canvas filters:
start_page: canvas # or entity-list
canvas:
default_filters:
domains: []
tags: []
start_page affects only /; explicit routes such as /canvas and /entity-list remain authoritative. Canvas defaults are project-wide settings stored in version-controlled trellis.yml, not personal preferences. They are applied once to an otherwise unfiltered Canvas session. Users can clear or change them while working; those session changes are reversible and are not written back to trellis.yml.
From Entity List, Open filtered on Canvas opens the complete current filtered result set on Canvas. An explicit Canvas URL entity filter takes precedence over project-wide domain and tag defaults.
Vision
trellis is built and tested around dbt-core today. The longer-term idea is to stay tool-agnostic—concepts outlive any one framework. Possible directions include dbt Fusion, Pydantic-flavored exports, or adapters for tools like SQLMesh or Bruin where it makes sense. For now, the focus is a great experience with dbt-core.
Contributing
Contributions welcome. Workflow, local dev, tests, and packaging: CONTRIBUTING.md. All contributors sign the CLA once per GitHub account—see CLA.md and the bot on your PR.
Acknowledgments
- dbt-colibri for lineage-related capabilities that support trellis visualization.
License
trellis Datamodel is licensed under the GNU Affero General Public License v3.0. See NOTICE for a short summary of copyright and licensing.
Metadata
Release files for trellis-datamodel 0.24.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| trellis_datamodel-0.24.0.tar.gz | 1.1 MB | With provenance | Details for trellis_datamodel-0.24.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| trellis_datamodel-0.24.0-py3-none-any.whl | Python 3 | none | any | Details for trellis_datamodel-0.24.0-py3-none-any.whl |
Total release size: 2.2 MB
Release files / trellis_datamodel-0.24.0.tar.gz
| Download URL | trellis_datamodel-0.24.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a58492cf8858a2fe1519ca61c87887dd87a33eee211ff0b875e807e408e1f4c1
|
|
BLAKE2b-256 checksum How to use checksums |
6845b5be2854dac4804c566ce20a8e1be26eae44847406fd52ad245cc9d0f642
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 15, 2026.
Transparency logRelease files / trellis_datamodel-0.24.0-py3-none-any.whl
| Download URL | trellis_datamodel-0.24.0-py3-none-any.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1798313a8f880569cee778c09a2cd0232216f2a1eb0091d2c1246d4ca5a30bc1
|
|
BLAKE2b-256 checksum How to use checksums |
4875827730b8fc657b2ace230c9fa441f5e4648d7672e0d487cfbf9fb8bec2cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 15, 2026.
Transparency logSecurity for trellis-datamodel 0.24.0
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.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for trellis_datamodel-0.24.0.tar.gz
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 Oct 15, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.