dzQuali is a self-hosted data observability and data quality tool. It runs on your own computer or server, connects to your databases with a read-only account, learns how your tables normally behave, checks them on the schedule you choose and alerts you in Slack or by email when something breaks. By default it keeps only counts and percentages, never your rows. This page covers version 0.8.
Requirements · Install · First start · Connect a database · Choose tables · Observability · Data quality · Incidents and alerts · Large tables · Users and security · What dzQuali keeps · Trial & license · Editions · What leaves your server · Update, backup & uninstall · API · Troubleshooting · Getting help
ingeniaz.com (license checks).Download dzquali-0.8.0-linux-x64.tar.xz and extract it in a folder you can write to:
tar -xJf dzquali-0.8.0-linux-x64.tar.xz
cd dzquali
./dzquali
dzQuali opens at http://localhost:8090 (or the next free port). Nothing is installed in the system: everything
stays inside the dzquali folder (your data is in dzquali/data). Keep it running for scheduled checks;
Configuration → Drivers and system can start it automatically with the computer. By default it only listens on
the machine itself; put it behind your HTTPS reverse proxy or VPN to reach it from other machines.
Configuration → Connections → Add connection. dzQuali tests the connection, tells you why it fails (driver, network, TLS, user/password, missing database) and warns if the account can write. Each connection shows the minimum privileges to grant, for example in PostgreSQL:
CREATE ROLE dzquali LOGIN PASSWORD '…';
GRANT CONNECT ON DATABASE your_db TO dzquali;
GRANT USAGE ON SCHEMA your_schema TO dzquali;
GRANT SELECT ON ALL TABLES IN SCHEMA your_schema TO dzquali;
Support level. PostgreSQL 16 is certified (our full test battery passes against it). MariaDB 10.11 / MySQL, SQL Server, Snowflake, BigQuery and Oracle are experimental: implemented and reviewed, but not yet certified by us against live servers. The connection screen shows the status of each version. Please report anything that doesn't work. An administrator can limit which database hosts dzQuali may connect to (Configuration → Security → Allowed database hosts).
Open a connection, search tables by name (or by column name), filter by schema, select one, many or all results, choose how often to check them (every 1–12 hours, or daily at a given hour) and press Watch. Each table gets the rules that are on in Rules; you add your own later.
The normal range is the median of comparable past values ± a margin based on their usual variation, so one bad day does not move it. Sensitivity (low, medium, high), learning days and holidays are adjustable. Closing an incident as "expected" teaches dzQuali that the value is normal.
A failed check opens an incident with severity, owner, state (open, investigating, resolved, closed), comments and a timeline. Repeated failures update the same incident. It closes by itself when the check passes again; closing by hand asks for a reason and a note. dzQuali measures the time to detect and to resolve. Three kinds are told apart: unusual (anomaly), rule broken and could not check (connection problem, not data).
Alerts go by email (your SMTP server) and Slack (incoming webhook) when something starts failing, can't run or recovers, with an optional daily reminder. Set Configuration → Security → Address of dzQuali to get an "Open incident" button in Slack and links in emails.
All queries are read-only with a time limit (20 seconds; 60 on Snowflake and BigQuery), one table at a time. On tables above about 2 million rows (or 5 GB in BigQuery), empty, invalid and future-date checks read a 1% sample, and repeated values are skipped, unless you set a recent rows window on the table (e.g. only rows of the last 24 hours by a date column). Every result says whether it is exact, from a sample or an estimate. A running check can be cancelled.
data/dzquali.conf: back it up separately.By default only counts and percentages (rows, empty values, different values, averages, results of checks), never values or rows of your data. Two options, off by default, change that, and only an administrator can turn them on in Configuration → Security: see failing rows (up to 20 rows read on demand, shown and not stored, personal-looking columns masked, every view in the audit log) and keep the 5 most frequent values of each column in profiles (personal-looking columns masked).
The 14-day free trial starts when you set up dzQuali with the activation code from your Ingeniaz account; no card is needed. Each code works once, on one installation, and each email gets one trial. When it ends, checks stop until you buy a license (your results stay visible). Go to License → Buy a license, pay by card or PayPal through Lemon Squeezy, and paste the license key you receive by email in License → License key. A license covers one installation and up to 50 watched tables. To move it to another server (once per month), press Release from this server first. dzQuali verifies the license about once a day and keeps working for up to 5 days if it can't reach ingeniaz.com (the trial and course licenses too); it therefore needs outbound HTTPS to ingeniaz.com (directly or through a proxy). To cancel or get a refund (7 days after your first payment), see the Refund & Cancellation Policy.
Every edition detects the same way: freshness, volume, schema, distribution, profiling, rules, quality indicators, incidents and alerts. Editions differ in collaboration, control, size and support. The edition comes inside the signed license and dzQuali enforces it on its server; Configuration → License shows yours, its limits and what each other edition adds.
| Starter | Team | Enterprise | |
|---|---|---|---|
| Watched tables | 50 | 500 | no limit |
| Users | 1 | 10 | no limit |
| Viewer role, delivery times (SLA), exceptions, rule versions, export/import, failing rows, API | — | ✓ | ✓ |
| Chained audit log, allowed servers, PostgreSQL as dzQuali's own store | — | — | ✓ |
| Second factor for administrators | optional | optional | required |
| Support | priority email | priority email |
The 14-day trial has everything on. The Free edition is for Ingeniaz course students: everything on with 4 watched tables, 2 connections and 3 users, for the length of the course; paste the course code in Configuration → License. It shows "Course edition — not for production use". Moving to a smaller edition never deletes anything: what's no longer included is kept and shows as "Available in Team / Enterprise".
Only license traffic to ingeniaz.com: when the trial starts, the administrator's email and an installation id; once a day, the license key (or the course code), the installation id and the dzQuali version. Never your database credentials, table names, rows or check results. Alerts go only to the Slack webhook and SMTP server you configure. See the Privacy Policy.
Update: close dzQuali, extract the new version and replace every file and folder except
data, then start it. Before changing its database, dzQuali saves a copy in data/backups; an administrator
can also make one in Configuration → Security. To restore, close dzQuali and put the copy back as
data/dzquali.db (it opens only with the same data/dzquali.conf).
Uninstall: close dzQuali and delete the folder.
Everything the screens do is available through a documented API: http://localhost:8090/api/openapi.json.
app/sbom.json lists every library included in each version.
Forgot the password or lost the phone with the authenticator. If email (SMTP) is set up in Alerts, use
Forgot your password?. Otherwise, ask the person who installed dzQuali on the server: the steps to get a one-time code
are in the README.txt file inside the dzQuali folder.
"Could not reach the database server". Check host, port and firewall, and the allowed hosts list. To reach a database
on the same machine use its network address, not localhost, if dzQuali runs elsewhere.
A table says "learning". Volume and distribution need 14 days of history (adjustable) before flagging unusual values.
"dzQuali can't reach ingeniaz.com" when setting up. Allow outbound HTTPS to ingeniaz.com
(directly or through a proxy) and try again; nothing is created until the activation is accepted.
Start with this documentation and our videos. Email contacto@ingeniaz.com for billing, licenses, refunds, bugs in the Software and security reports. Starter: we usually answer within 3 business days; Team and Enterprise: within 1 business day. In English or Spanish. We do not provide phone support, installation on your servers, or consulting.