Datamake is a build system for data products
Write the SQL you already know, say what it promises, and ship it as a cell: one self-contained unit that people, apps, and AI agents can query without guessing what it means. No ticket, no platform team, no waiting.
Agents stop guessing
Point an agent at a raw API and it guesses: which column is the real
revenue number, whether a date is UTC, what -1 means. Every wrong guess
is a confident answer.
A cell hands the agent three things it can't guess:
- What exists. Every export, its version, and the filters it accepts.
- What it means. Each column's description and unit, from
cell.yaml. - Whether it was checked. The last build's verification and measured coverage.
Plug the cell into any MCP client. Nothing to misuse, nothing extra to maintain.
{ "cell": "orders", "status": "verified",
"exports": [{
"route": "orders_daily@2",
// what it can ask for
"grain": ["order_date", "region"],
// what it means
"schema": { "revenue": {
"type": "decimal", "unit": "USD",
"description": "Gross revenue, before refunds." }},
// measured on the last build
"probe": { "rows": 4, "coverage": {
"order_date": { "min": "2026-06-01",
"max": "2026-06-02" }}}
}],
"build": { "verify_outcome": "passed" }
}
// mcp.json — any MCP client
{
"mcpServers": {
"orders": {
"command": "datamk",
"args": ["mcp", "-f", "/path/to/cell.yaml", "-p", "prod"]
}
}
}
// Three tools: list_exports · describe_export · query_export.
// Only published exports, only the filters you allowed.
One cell, from sources to consumers
A cell bundles your logic, the data it builds, and the way others reach it. Everything inside is yours to change whenever you like; consumers only ever see what you chose to publish.
Sources
Your data lake Your warehouse Other cells' exportsDatamake cell
Consumers
Apps & dashboards AI agents Analysts & notebooks Other teams' cellsOpen 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 a question about your data to an answer others can depend on.
Key features
Numbers you can defend
Every build checks the data against what you promised. If they drift apart, the build fails, so nobody finds out from a dashboard. Not a warning, a failure.
No half-finished tables
Every build lands all at once, so nobody catches your data mid-refresh. A release pins exactly what other teams build on.
Change without breaking anyone
A breaking change ships as a new version next to the old one. Consumers move on their own clock, not yours.
Start on your laptop, ship the same thing
One install, nothing else to stand up. The cell you build at your desk is the cell you deploy, with no rewrite in between.
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 real data, served from your laptop, in minutes. The starter cell ships with sample data, so the first build works before you connect 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 a short description of what it promises. Datamake builds the data, checks it against that promise, and serves it to people, apps, and AI agents. One install, nothing else to run: no warehouse, no cluster, no orchestrator.
Is Datamake a dbt alternative?
It solves a different problem. dbt builds tables back into your warehouse, where everything is still reachable and the checks are tests someone can forget to run. A cell has a boundary: only what you publish is visible, the build fails when the data stops matching what you promised, and the result ships as its own versioned product that others can depend on.
Can I serve files in my data lake as an API?
Yes. Point a cell at the files, write plain SQL, say what it promises, and serve it. Versioned, filterable, and checked on every build, 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 what other cells publish.
What's a composable data product?
A composable data product, which Datamake calls a cell, bundles the logic, the data, a versioned promise about it, and who may see it into one thing you can ship. Cells build on what other cells publish, the way code libraries do. Read the concept doc →
Can AI agents use a Datamake cell?
Yes, that's a design goal. Every cell explains itself to an agent: what each column means, what it can ask for, and whether the numbers were checked on the last build. Plug it into any MCP client and the agent gets that directly, along with the data. There is no way for it to run a query you didn't allow, so it can't invent an answer. Read the guide →
How much does it cost?
Nothing. Apache-2.0 licensed and free. No gated features, no paid tiers, no "contact sales."