This page is the published copy of the operating guide that ships with the tool
as
AGENTS.md — in the release archive and in
getsynq/synqcli. It is deliberately
denser than the rest of this section. Start at
Monitors as code for what the YAML declares, and
see the CLI reference for every flag.synqcli to declare data
quality monitors, SQL tests and deployment rules as code: the loop to follow, the
mistakes that cost real time, and what each command does to a workspace. It is
written to be acted on top-down.
synqcli reconciles a workspace with a YAML file. You declare which monitors
and tests belong on which assets; deploy makes the workspace match. That means it
creates, it updates, and it deletes — anything in the file’s namespace that is
no longer declared goes away. Understanding that one sentence prevents most of the
damage this tool can do.
1. The loop
1. See what already exists —export
Never start from a blank file against a workspace that already has monitors.
export writes the current state back out as YAML:
deploy accepts.
Edit that rather than authoring from scratch, and you will not silently delete
someone’s monitors.
2. Get the schema into your editor
deploy --dry-run
namespace, a mistyped
asset path, or a file that is missing half of what the workspace has.
4. Deploy
--auto-confirm,
but only once the same config has been through --dry-run at least once.
5. Iterate on the diff, not the file
Re-run --dry-run after every edit. An empty plan is the goal — it means the
workspace matches your file, so the config is now the source of truth.
2. Never do these
- Never run
deploywithout--dry-runfirst on a workspace you did not author the config for. Deploy is a reconcile, so an incomplete file is a delete. - Never guess a
namespace. It is the grouping key: everything under one namespace is reconciled together, and a typo means “this namespace has nothing declared, so delete everything in it”. Get it fromexport. - Never hand-assign monitor ids. They are derived deterministically from the monitor’s identity, which is what makes a re-deploy an update instead of a duplicate. Let the tool compute them.
- Never edit the published docs or the schema by hand. Both are generated.
- Never assume a rename is a rename. Changing something in a monitor’s
identity produces a new monitor and deletes the old one — with its history.
--dry-runshows that as a delete plus a create; look for it. - Never point a config at a workspace you have not confirmed. See below.
3. Confirm the target
Credentials resolve in this order:--client-id/--client-secretflagsQUALITY_CLIENT_ID/QUALITY_CLIENT_SECRET- A
.envfile in the working directory - A browser login, cached and shared with the other Coalesce Quality CLIs
--region eu|us|au, or --endpoint for a
self-hosted deployment. auth login remembers the choice, so later commands need
no flag. A wrong region is the most expensive mistake available here — it
reconciles the wrong workspace, deleting what it does not find declared.
4. What goes in the YAML
One file declares monitors and tests per asset:- Monitors watch an asset over time:
volume,freshness,field_stats,custom_numeric. - SQL tests assert something is true right now:
not_null,unique,empty,accepted_values,rejected_values,min_max,min_value,max_value,freshness,relative_time,business_rule,business_query. - Deployment rules apply monitors by query rather than by listing assets, so new matching assets are covered without editing the file.
5. advisor — propose tests for an asset
advisor asks the model to suggest tests for an entity, and can write them
straight into a config:
--columns to narrow the scope, --instructions-file for a long
prompt, --severity for the default it assigns, --namespace for the group it
writes into, and --deploy to deploy immediately.
Review what it writes before deploying it. --output then read then deploy --dry-run is the safe order; --deploy skips your review, not the reconcile.
Instructions steer it, and being specific pays. Some that work:
6. What each command costs
schema— free, offline. No credentials, no API call.export— reads the workspace. Cheap.deploy --dry-run— resolves asset paths and diffs against the workspace. Cheap, and always worth it.deploy— writes. The cost is the blast radius, not the runtime: creates, updates and deletes in one pass.advisor— a model call per entity, plus warehouse metadata reads. The only command here with a per-run cost worth thinking about; scope it with--entity-idand--columnsrather than pointing it at everything.
7. When something fails
The full command and flag reference is generated from the CLI itself and published
as the CLI reference. For what the YAML
declares and why, start at
Monitors as code.