Datamake is a build system for data products
Built to do exactly one thing: reduce time to value for data. Write SQL, declare what it promises to produce, and ship the whole thing as a versioned REST API: one self-contained unit called a cell. One binary, no warehouse ticket, no orchestration platform.
One cell, from sources to consumers
A cell bundles your SQL, the data it builds, and the API that serves it. Everything inside is private and free to change; consumers only ever see what you choose to publish.
Sources
Your data lake Your warehouse Other cells' exportsDatamake cell
Consumers
GET /orders_daily@2 Apps & dashboards Other teams' cellsStorage is Parquet, the catalog is DuckLake, the engine is embedded DuckDB. Open formats end to end, so your data is never held hostage by the tool.
Why composable data products?
Every new data product today waits on a ticket, a queue, and the central team, for something you already know how to build.
Datamake is the shortest path from SQL to a data product others can depend on.
Key features
Data contracts that can't lie
Every build checks the data against what you promised: the columns, the types, the uniqueness. If they drift apart, the build fails. Not a warning, a failure.
Atomic snapshots
Every build lands all at once, so consumers never see a half-built table. Releases pin the exact data other teams build on.
Versioned interfaces
A breaking change ships as a new version, served alongside the old one. Consumers migrate on their own clock, not yours.
Zero infrastructure to start
One binary with the engine built in. It runs on your laptop with no services, and the same cell deploys to Kubernetes from a single tracked config, no rewrite.
Every feature is judged against one test: does it shorten the distance between “I have a question about my data” and “I have a trustworthy answer”?
Not a warehouse replacement: the escape hatch for the use cases that never needed one.
Create your first cell
You're three commands from a versioned API serving real data, on your
laptop, in minutes. The scaffold ships sample data, so datamk run works
before you wire up a single source.
macOS (Apple Silicon) · Linux (x86_64 / arm64) · Windows via WSL2, or
cargo install from source. The installer verifies its checksum and
installs to ~/.local/bin.
$ datamk init orders && cd orders
$ datamk run # atomic snapshot, auto-verified
$ datamk serve # REST + OpenAPI on :8080
$ curl 'localhost:8080/orders_daily@2?region=us-east'
[{"order_date":"2026-06-01","region":"us-east","revenue":200.50},
{"order_date":"2026-06-02","region":"us-east","revenue":59.99}]
cell: orders
sources: # the scaffold ships sample data, so
# `datamk run` works with zero setup
# raw_orders: s3://acme-lake/orders/*.parquet
transforms: # private SQL → one snapshot
- sql/stg_orders.sql
- sql/orders_daily.sql
interface: # the only thing exposed
- name: orders_daily
version: 2.1.0 # MAJOR → /orders_daily@2
grain: [order_date, region] # filterable params
schema: { order_date: date, region: string,
revenue: decimal }
Frequently asked questions
What is Datamake, exactly?
An open-source build system for data products, built to do one thing:
reduce time to value for data. You write plain SQL and one
cell.yaml; Datamake builds the data (atomic snapshots on Parquet), verifies it
against the declared contract, and serves it as a versioned REST API. It ships as a single
Rust binary with an embedded DuckDB engine, so no warehouse, cluster, or orchestrator
is required.
Is Datamake a dbt alternative?
It solves a different problem. dbt materializes models back into the warehouse, where every table is still reachable and contract checks are tests someone can forget to run. A cell's interface is the serving boundary: non-exported tables have no route, the build fails (not warns) when the data stops matching the interface, and the result deploys as a standalone, versioned REST API.
Can I serve Parquet files as a REST API?
Yes. Point a source at s3://bucket/path/*.parquet, write plain
SQL, declare the interface, and datamk serve exposes it as REST + OpenAPI with
versioned routes and filterable parameters, with no cluster required.
Does Datamake replace my data warehouse?
No. It's the escape hatch for the use cases that never needed the warehouse. Your warehouse becomes one input among others: a cell can read warehouse tables, lake files, and other cells' versioned exports.
What's a composable data product?
A composable data product, which Datamake calls a cell, bundles logic, output, a versioned interface, and access rules into one deployable directory. Cells build on each other's exports the way code libraries do. Read the concept doc →
How much does it cost?
Nothing. Apache-2.0 licensed and free. No gated features, no paid tiers, no "contact sales."