Qualytics CLI
Command-line interface for the Qualytics data quality platform.
Manage connections, datastores, containers, quality checks, anomalies, and operations as code. Export your entire Qualytics configuration to git-tracked YAML files and deploy across environments through CI/CD pipelines.
Installation
pip install qualytics-cli
Or with uv (faster):
uv pip install qualytics-cli
Requirements: Python 3.10 or higher.
Quick Start
# 1. Authenticate via browser (recommended)
uv run qualytics auth login --url "https://your-instance.qualytics.io/"
# 2. Check connectivity and API compatibility
qualytics doctor
# 3. Export your datastore configuration to YAML
qualytics config export --datastore-id 1 --output ./qualytics-config
# 4. Preview what an import would do (without making changes)
qualytics config import --input ./qualytics-config --dry-run
Commands
| Group | Description |
|---|---|
auth |
Authenticate and manage credentials |
connections |
Create and manage database connections |
datastores |
Create and manage datastores |
containers |
Create and manage computed containers |
checks |
Create and manage quality checks |
dbt |
Migrate dbt tests to Qualytics quality checks |
migrate |
Create checks and computed containers from a check sheet |
anomalies |
View and manage detected anomalies |
operations |
Trigger sync, profile, and scan operations |
config |
Export and import configuration as code |
users |
List and view users |
teams |
List and view teams |
tags |
Manage tags (list, create, delete) |
schedule |
Schedule recurring operations |
mcp |
Start the MCP server for LLM integration |
doctor |
Check CLI health, connectivity, and API compatibility |
Run qualytics <command> --help for full details on any command.
Documentation
| Guide | Description |
|---|---|
| Getting Started | Authentication, configuration, environment variables |
| Connections | Creating and managing database connections |
| Datastores | Creating and managing datastores |
| Quality Checks | Creating checks from YAML (single and bulk) |
| Operations | Sync, profile, scan workflows |
| Export/Import | Config-as-code: export, import, CI/CD promotion |
| dbt Migration | Converting a dbt manifest into quality checks |
| Check Sheet Migration | Bulk checks + computed containers from a normalized XLSX/CSV sheet |
| Anomalies | Viewing and managing anomalies |
| Computed Fields | User-defined computed fields in export/import |
| Computed Tables | Bulk import of computed tables from Excel/CSV |
| MCP Server | LLM integration with Claude Code, Cursor, etc. |
| CI/CD Promotion | GitHub Actions workflow for environment promotion |
Development
git clone https://github.com/Qualytics/qualytics-cli.git
cd qualytics-cli
uv sync # Install dependencies
uv run pytest # Run tests
uv run pre-commit run --all-files # Lint, format, type checks
For architecture details and contribution guidelines, see AGENTS.md.
Releasing
Releases are automated via GitHub Actions. The version lives in pyproject.toml and is managed by uv version.
Steps to release a new version
-
Ensure
mainis green -- CI (lint + tests across Python 3.10-3.14 + pre-commit) must pass. -
Trigger the Release workflow -- Go to Actions > Release and click Run workflow. Select the bump type:
patch-- bug fixes (1.0.0 → 1.0.1)minor-- new features (1.0.0 → 1.1.0)major-- breaking changes (1.0.0 → 2.0.0)
-
The workflow automatically:
- Bumps the version in
pyproject.tomlviauv version --bump <type> - Commits the change and creates a
v{version}git tag - Pushes the commit and tag to
main
- Bumps the version in
-
The tag push triggers the Publish workflow, which:
- Builds the package (
uv build) - Publishes to PyPI via OIDC trusted publishing (no API tokens needed)
- Creates a GitHub Release with auto-generated release notes and attached artifacts
- Builds the package (
Manual version check
# Current version in pyproject.toml
uv version --short
# Installed version
qualytics --version
License
MIT License -- see LICENSE for details.
Metadata
Release files for qualytics-cli 1.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qualytics_cli-1.2.1.tar.gz | 410.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qualytics_cli-1.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 587.2 kB
Release files / qualytics_cli-1.2.1.tar.gz
| Download URL | qualytics_cli-1.2.1.tar.gz |
|---|---|
| Size | 410.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a9c9926a8d422966dcde4317c148a7afcb96f3411f12ee951a46ea47312d8eb9
|
|
BLAKE2b-256 checksum How to use checksums |
1d4817cc3c0fe92d55b80104622703ed20e3e8a0fb977e921a02d31ea5b93219
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / qualytics_cli-1.2.1-py3-none-any.whl
| Download URL | qualytics_cli-1.2.1-py3-none-any.whl |
|---|---|
| Size | 177.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0ace7e8b26b6335e66051d5f9ace8e52b55a604aa9b997a1addd03d61ba166fb
|
|
BLAKE2b-256 checksum How to use checksums |
a9f4309910697817c72abc3c636145e7e705ca9aa0a67bd92d42f4c7bde35b54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|