CLI¶
quorlo [COMMAND] [OPTIONS]
quorlo scan¶
Scan a platform read-only and score how AI-ready each table is.
quorlo scan [--dsn DSN] [--connector NAME] [--schema NAME]... [--format table|json]
[--save | --no-save] [--store PATH]
| Option | Default | Description |
|---|---|---|
--dsn |
$QUORLO_DSN |
Connection string. Prefer the environment variable, which keeps passwords out of shell history. Required one way or the other. |
--connector, -c |
postgres |
Which installed connector to use. See quorlo connectors. |
--schema, -s |
all non-system schemas | Schema to scan. Repeat for several. An unknown schema is an error. |
--format, -f |
table |
table for a terminal summary, json for a machine-readable report. |
--save / --no-save |
save | Save the run to the run history. |
--store |
$QUORLO_STORE, else the user data directory |
The run history file. |
After the summary come how the run compares with the previous run of the same database and schemas (when there is one), where the time went, the run id, and what to run next:
Since last run (2 days ago): 44% → 48% (+4 pts), 3 resolved, 1 new
Scanned 2 schemas, 8 tables, 39 columns in 0.42s
fetch 0.12s (7 queries) · checks 0.20s · scoring 0.01s · persistence 0.09s
Saved as run 20261003T174608Z-baf7f9.
Next: quorlo findings what to fix, worst table first
quorlo findings --table stg_imp_01 start with the lowest-scoring table
The scan summary shows scores, not individual findings: quorlo findings is where you see those.
The timing line splits the scan into phases. fetch is reading metadata from the platform, with the number of queries it took. checks is running the checks. scoring is turning results into scores. persistence is writing the run history. Schemas stream through these phases one at a time, so the times are totals across all schemas.
Exit codes: 0 when the scan completed, 2 when it couldn't, for example an unknown connector, a connection failure, an unknown schema or an unusable --store. The error is printed to stderr. Today a low score does not change the exit code.
JSON output¶
--format json prints the full report: overall and per-dimension scores, for every table its scores and the result of each check, every finding, and the scan's timing.
quorlo scan --format json | jq '.tables[] | {table, score}'
{
"table": "quorlo_demo.retail_raw.stg_imp_01",
"score": 0.0
}
The top level has database, platform, checks (each check that ran, with its version), score, dimensions, tables, findings (each with its fingerprint), findings_count, stats (seconds per phase, queries, rows, schemas, tables, columns) and, when the run was saved, run_id. Scores are fractions between 0 and 1, or null when nothing was evaluated.
quorlo runs¶
List saved runs, newest first: id, when, which schemas, score, table and finding counts. When all listed runs share one target, it's shown in the title; otherwise each row names its target.
| Option | Default | Description |
|---|---|---|
--limit |
20 |
How many runs to list. |
--store |
$QUORLO_STORE, else the user data directory |
The run history file. |
quorlo runs show RUN¶
Print the scores of a saved run, as quorlo scan printed them. RUN is a run id or any prefix that matches exactly one run, such as 20261003T1746. Takes --format and --store. With --format json the output includes every finding. For a readable list, use quorlo findings --run RUN.
quorlo findings¶
What to fix in a saved run: worst table first, grouped under the five questions, one line per check with the columns it applies to, and a fix for each.
quorlo findings # the latest saved run
quorlo findings --table cust_mstr # one table
quorlo findings -d governance -d trust # only these questions
quorlo findings --check column.pii.unclassified # only this check
quorlo findings --run 20261003T1746 -f json # an older run, for scripts
| Option | Default | Description |
|---|---|---|
--run |
the latest saved run | Run id, or a prefix that matches exactly one run. |
--table, -t |
all | A table name, schema.table or the full name. Repeatable. A bare name that exists in several schemas shows all of them. |
--dimension, -d |
all | meaning, certification, trust, lineage or governance. Repeatable. |
--check, -c |
all | A check id from the checks reference. Repeatable; an unknown id is an error that lists the real ones. |
--format, -f |
table |
json gives the same grouping: run_id, target, query, and tables, each with its groups (check_id, dimension, severity, summary, columns, messages, fix_hint, count). |
--store |
$QUORLO_STORE, else the user data directory |
The run history file. |
Several values of one option widen the selection; different options narrow it. Filtering happens in the run store, so a large run is never loaded whole. Fix hints use COMMENT ON, which Postgres, Snowflake and Databricks share.
quorlo diff¶
Compare two saved runs: scores overall and per question, tables added or removed, which tables changed, and which findings are new or resolved.
quorlo diff # the latest run against the run before it, for the same target
quorlo diff BASE # BASE against the latest run of the same target
quorlo diff BASE HEAD # two specific runs
Takes --format table|json and --store. The comparison warns when the two runs are not strictly comparable: different databases or schemas, or check rules that changed between Quorlo versions. See run history for how findings are matched.
Exits with 2 when a run can't be found, or when there aren't two runs to compare.
quorlo connectors¶
List installed connectors, the package that provides each, and what each one is allowed to do: read data, write metadata back, read sample values. A connector that fails to load is listed with its error rather than breaking the command.
quorlo version¶
Print the installed Quorlo version.