DuckDB is an open-source analytical database that runs inside another program or on a laptop, with no server to manage. It reads CSV, Parquet and JSON files directly, and can read Delta and Iceberg tables, which makes it a practical engine for local development.
For example, a developer can open a terminal, start DuckDB and run SELECT region, sum(amount) FROM 'orders/*.parquet' GROUP BY region against a folder of Parquet files, with no table created and no data imported first. The same engine can be embedded in a Python program or a test runner, where it reads a small set of fixture files, runs a pipeline's SQL and returns the result in milliseconds. That speed is what makes it practical to run many tests on every change.
DuckDB is a columnar, vectorized engine built for analytics: scans, joins and aggregates over many rows, rather than many small transactions. It runs in a single process on one machine, which keeps it simple and fast for data that fits on that machine, but it is not a shared warehouse for many users or a replacement for a production platform. Its SQL dialect is close to PostgreSQL's, with differences from Databricks and Snowflake SQL that a translation step has to handle.
Those dialect differences matter for tests: a test that runs on DuckDB proves the logic of a pipeline, not every detail of the platform's SQL, which is why platform-specific lint rules complement it. See also DuckLake, lakehouse and Golden tests on DuckDB.
DuckDB is open source under the MIT license and runs on macOS, Windows and Linux, which makes it easy to use the same engine on a laptop and in a CI job. It is also a common choice for exploring a sample of data before writing a pipeline, because it can query files where they are. See also Delta Lake and Apache Iceberg.
Emolysis uses DuckDB on your machine for the development loop and as the judge for golden tests. It is not a production target. See the DuckDB platform page. Because it starts instantly and needs no cluster, a test run takes seconds and spends no warehouse compute.