Install the CLI
- Binary
- Docker
Pick a version from the releases page
— the archive filename carries it, so it has to be named explicitly:Builds are published for macOS and Linux on both amd64 and arm64. Each archive
also carries the operating guide and the example suites, and every release ships
a On macOS a downloaded binary may be quarantined. If it refuses to start,
checksums.txt you can verify with
sha256sum -c checksums.txt --ignore-missing.Every published binary runs DuckDB, which is what the walkthrough below uses so
it needs no warehouse and no credentials.
xattr -d com.apple.quarantine /usr/local/bin/synq-recon clears the flag.Sign in
Authentication is only needed once you want to save suites to your workspace or run them on our backend. A purely local comparison needs no credentials at all.auth whoami prints the workspace your credential resolves to. Get into the habit of reading that line — it is the only thing that decides which workspace a command writes to.
Describe what to compare
A suite is a YAML file holding the connections and the comparisons. Save this asquickstart.yaml:
quickstart.yaml
bisection block is tuned small here so the drill-down has something to do on a thousand rows. On real tables the defaults are the right starting point.
Validate before you run
--db to also connect, run every query through the database’s planner, and report table sizes, indexes and a suggested key column:
--db does not run the suite’s setup: SQL, so for this walkthrough it will report that app_orders does not exist. That is expected — the tables are created by setup when the comparison runs.Compare
The command exits
1. For a comparison, a non-zero exit means “differences found”, which is a result rather than a failure. Exit codes has the full list.--no-report keeps the run entirely local. Without it, a run reports its results to your workspace whenever it can find a credential, so they show up in the app alongside backend runs.
Locate the difference
Get the rows
Every mismatch leaf comes with ready-to-run SQL for both sides:Point it at your own databases
Swap theconnections: block for the real thing, drop the setup: block, and name your tables. Nothing else changes:
suite.yaml
- Keep the credentials out of the file. Move the
connections:block to a git-ignored.connections.yaml— the CLI picks it up automatically. See keep credentials out of the suite. - Run
check-config --db. It confirms every connection and query, and warns if your key column is not indexed — which is the difference between a drill that takes seconds and one that takes minutes.
Next steps
Authoring suites
Datasets, column selection, key columns, and the validation loop in full.
Time windows and cutoffs
Comparing two live systems? Read this before you trust a mismatch.
Workspace suites
Save the suite, run it on our backend, put it on a schedule.
CLI reference
Every command, argument and flag, generated from the CLI itself.