Repositories & environments
Repositories
A repository is a dbt project on GitHub that Zingle AI is connected to. Once registered, Zingle AI can:
- Read the project - clone it, parse
manifest.json, and populate the model catalog and semantic layer. - Write to it - create branches, commit agent-generated changes, and open pull requests.
Registering a repo captures its GitHub owner/name, the default branch, and an optional subdirectory (for monorepos where the dbt project lives in a subfolder).
Syncing
When you add a repo - or trigger a manual sync - Zingle AI runs a background job that:
- Clones the repository at the target branch.
- Detects the dbt adapter and version, creates an isolated virtual environment, and installs dbt.
- Runs
dbt depsanddbt parseto producemanifest.json. - Parses the manifest to upsert models and columns, and extracts the semantic layer (semantic models, entities, dimensions, measures, metrics).
- Removes stale models/columns no longer present.
Every sync is recorded in sync history so you can see what changed and when. Syncs interrupted by a restart are automatically marked failed and can be re-run.
A pull request merged from Studio triggers a fresh sync, so the catalog always reflects what's actually on your default branch.
Environments
An environment binds a repository to a warehouse compute target. It answers the two questions every agent run needs:
- Which code? - the repository (and branch/subdirectory).
- Where does SQL run? - the warehouse target (database, schema, compute).
Environments let the same repo point at different warehouses (for example, a dev target vs a production target) without re-registering the repo. Agents, validation runs, and warehouse queries all execute in the context of a selected environment.
See Warehouse connections for how targets are defined, and Infra for the UI that manages all of this.