Skip to content

Sync Configuration

Configure advanced sync operations for multi-workspace deployments.

Create a sync_config.yml file to define source workspace, target workspaces, and asset selection criteria.

source:
workspace_id: 123
assets:
dashboards:
selection: ids
ids: [254, 255]
include_dependencies: true
charts:
selection: all
include_dependencies: true
datasets:
selection: mine
include_dependencies: false
databases:
selection: ids
ids: [1, 2]
include_dependencies: false
target_defaults:
overwrite: false
include_dependencies: true
jinja_context:
environment: default
company: ACME Corp
region: us-east-1
targets:
- workspace_id: 456
name: staging
overwrite: true
jinja_context:
environment: staging
database_host: staging-db.example.com
- workspace_id: 789
name: production
jinja_context:
environment: production
database_host: prod-db.example.com
FieldTypeRequiredDescription
workspace_idintegerYesSource workspace ID to pull assets from
assetsobjectYesAsset types and selection criteria

Supported asset types under source.assets:

  • charts - Chart configurations
  • dashboards - Dashboard layouts
  • datasets - Dataset/table configurations
  • databases - Database connection configs

Each asset type uses the Asset Selection schema below.

FieldTypeDefaultDescription
selectionstringallSelection strategy: all, ids, mine, or filter
idsarraynullSpecific asset IDs (required when selection: ids)
include_dependenciesbooleantrueInclude related dependencies (datasets, databases)

Default configuration that applies to all targets unless overridden:

FieldTypeDefaultDescription
overwritebooleanfalseDefault overwrite behavior for push operations
include_dependenciesbooleantrueDefault dependency inclusion behavior
jinja_contextobject{}Default Jinja template variables

Each target in the targets array:

FieldTypeRequiredDescription
workspace_idintegerYesTarget workspace ID to push assets to
namestringNoHuman-readable name for this target
overwritebooleanNoOverride default overwrite (null = use defaults)
jinja_contextobjectNoTarget-specific Jinja variables (merged with defaults)

Note: Target-specific jinja_context values override target_defaults.jinja_context.

Pull all assets of the specified type:

charts:
selection: all
include_dependencies: true

Pull specific assets by ID:

dashboards:
selection: ids
ids: [254, 255, 256]
include_dependencies: true

Pull only assets you own:

datasets:
selection: mine
include_dependencies: false

Pull assets matching filter criteria:

charts:
selection: filter
# Note: filter implementation pending

Use Jinja templates in asset configurations:

-- In your SQL query
SELECT * FROM {{ environment }}_sales_data
WHERE company = '{{ company }}'
Terminal window
# Dry run to preview changes
sup sync run ./sync_config.yml --dry-run
# Pull from source
sup sync run ./sync_config.yml --pull-only
# Push to targets
sup sync run ./sync_config.yml --push-only
# Full sync (pull then push)
sup sync run ./sync_config.yml