Skip to main content

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:

  1. Clones the repository at the target branch.
  2. Detects the dbt adapter and version, creates an isolated virtual environment, and installs dbt.
  3. Runs dbt deps and dbt parse to produce manifest.json.
  4. Parses the manifest to upsert models and columns, and extracts the semantic layer (semantic models, entities, dimensions, measures, metrics).
  5. 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.

note

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.