# Veridelta > Compare two datasets on their primary keys under rules you declare, on a laptop, in CI, or inside a warehouse. Veridelta compares two datasets under the rules in a YAML file and reports what differs. Check a file with `veridelta validate --json`, run it with `veridelta run --json`, and read the exit code, or call the same steps as tools of the `veridelta mcp` server. The [AI agents](https://veridelta.github.io/veridelta/agents/) page gives the steps, and [llms-full.txt](https://veridelta.github.io/veridelta/llms-full.txt) holds every page under Docs in one file. ## Docs - [Home](https://veridelta.github.io/veridelta/): Veridelta compares two datasets on their primary keys and reports every row that differs under the rules you declare. - [Troubleshooting](https://veridelta.github.io/veridelta/how-to/troubleshooting/): Each section starts from what you see, then gives the cause and the change that fixes it. - [Configuration](https://veridelta.github.io/veridelta/configuration/): A configuration file declares the two datasets to compare, the primary keys that pair their rows, and the rules that decide when two values match. - [Sources](https://veridelta.github.io/veridelta/sources/): A source block describes one side of a comparison: a file, a lakehouse table, a database or DuckDB table or query, or a warehouse table. - [Rules](https://veridelta.github.io/veridelta/rules/): A rule changes how the columns it selects are compared. - [Pushdown](https://veridelta.github.io/veridelta/pushdown/): Pushdown compares two tables inside the database that stores them. - [Results](https://veridelta.github.io/veridelta/results/): `DiffEngine.run()` and `DiffEngine.run_from_configs()` return a `DiffResult`. - [Command line](https://veridelta.github.io/veridelta/cli/): The `veridelta` command runs a comparison, checks a configuration, proposes value maps and other rules, prints the JSON Schemas of its files and its output, and serves its checks and comparisons to an AI agent. - [CI integrations](https://veridelta.github.io/veridelta/ci/): The GitHub Action and the GitLab CI template run `veridelta run` in a pipeline, then report the result. - [AI agents](https://veridelta.github.io/veridelta/agents/): An AI agent, such as a coding assistant, runs Veridelta through its command line or through its MCP server. - [Upgrading](https://veridelta.github.io/veridelta/upgrading/): Upgrading moves a project to a newer Veridelta release. - [Roadmap](https://veridelta.github.io/veridelta/roadmap/): This page lists work that is not built yet. ## Optional - [1. Core concepts](https://veridelta.github.io/veridelta/examples/01_core_concepts/): Veridelta checks two datasets for logical equality, not physical equality. - [2. YAML and CLI](https://veridelta.github.io/veridelta/examples/02_yaml_and_cli/): A configuration file declares a comparison in YAML: its sources, primary keys, and rules. - [3. Advanced rules](https://veridelta.github.io/veridelta/examples/03_advanced_rules/): A migration review compares a pipeline's output before and after a rewrite: each difference must be declared by a rule or reported. - [4. HTML reports](https://veridelta.github.io/veridelta/examples/04_html_reports/): An HTML report presents a `DiffResult` as one file: the verdict, the row counts, the column-level drift, and the differing rows, in pages. - [5. Validate and CI](https://veridelta.github.io/veridelta/examples/05_validate_and_ci/): In CI, a comparison runs on every pull request. - [6. Model evaluation runs](https://veridelta.github.io/veridelta/examples/06_model_evaluation_runs/): A team that changes how its model is served, such as a new inference server, runs its evaluation suite again. - [From drift to rules](https://veridelta.github.io/veridelta/how-to/from-drift-to-rules/): A first run of a rewritten pipeline against the old one often fails on most of its rows. - [API reference](https://veridelta.github.io/veridelta/api/): The public Python interface, generated from its docstrings. - [Changelog](https://veridelta.github.io/veridelta/changelog/): Every release, newest first, with what changed and why.