Hey all ![]()

Sharing something I’ve been working on — ERD Studio, an open-source VS Code extension that puts a visual ERD designer inside your dbt repo.
The problem
My design lived in SqlDBM/dbdiagram. My code lived in dbt. My brain was the middleware keeping them in sync — and I kept forgetting. Sound familiar?
Three pain points kept biting:
- The diagram drifts from the code. Change a column in dbt and the ERD doesn’t notice.
- You can’t refresh part of the warehouse on its own schedule. Other ERD tools don’t tag your dbt models by domain, so “rebuild just the customer area every hour” isn’t a button.
- Your AI can’t read your model. Every prompt re-explains the same join keys, grain, and cardinality — and the AI still drifts.
What ERD Studio does
A canvas inside VS Code with two stages:
- Logical — your design. Columns, grain, SCD types, model roles, design rationale. Stored as plain YAML.
- Physical — derived live from your
target/manifest.json. Cardinality inferred from your existingunique/relationshipstests. No config — just open it on an existing dbt project and it works.
Toggle between them; mismatches get a colour-coded overlay showing exactly where design and warehouse have drifted.
Why the file format matters
The model lives in your repo as plain YAML + JSON next to the SQL:
- Git-diffable
- No proprietary format, no vendor UI
- AI-readable — install the harness (Claude Code / Copilot / Gemini / Codex) and your assistant gets a schema spec telling it exactly which file to edit for each operation
So you can point an AI at your bronze layer and say “draft a star schema for orders” — it profiles the sources, drafts an ERD on the canvas against your modelling style (Kimball, Inmon, etc.), and writes the dbt models, schema YAML, and tests once you’ve signed off.
What you get on day one
Existing dbt project with decent test coverage? Point ERD Studio at your manifest.json — it reads your unique and relationships tests to seed a Physical-stage ERD on day one. No re-modelling required.
Bonus: it auto-generates a selectors.yml (one selector per ERD), so dbt run --selector domain_silver_orders refreshes every model in that diagram with a single command. No hand-managed tags.
Links
- GitHub (MIT): GitHub - liam-machine/erd-studio: Visual ERD designer for dbt — design your data warehouse on a canvas, in your repo, where your AI assistant can read it. Free and open source. · GitHub
- VS Code Marketplace: ERD Studio - Visual Studio Marketplace
Keen for feedback
Especially from anyone using Kimball or Inmon and feeling the design-vs-warehouse-drift pain. What am I missing? What would make this useful for your team?