Stop re-explaining the same step
Give any step a name. Mention it in a later cell and Lunapad wires the dependency — the same idea across notebooks in a shared workspace.
One notebook from first question to shared report.
Ask questions, connect sources, and see answers inline.
Give any step a name. Mention it in a later cell and Lunapad wires the dependency — the same idea across notebooks in a shared workspace.
PRQL, SQL, Python, or a visual pipeline in every cell. Click to build, then open the text when you want to edit the details.
Run pandas, numpy, or plotly in a Python cell on the server. Name the output like any other step — downstream PRQL or SQL cells can pick it up.
Upload a spreadsheet, query DuckDB in the browser, or connect Postgres, ClickHouse, MySQL, or Snowflake through Trino. Read-only by default.
Because external connections share one query layer, you can join a warehouse table to an upload or a second database without moving data first.
Results land right below the step — on your computer with DuckDB WASM, or against your team warehouse when you connect one.
Built for your stack
No account, no cloud, no usage limits. Clone the repo and start it with Docker Compose.
$ git clone https://github.com/nicodemus-opon/lunapad && cd lunapad && docker compose up What's in the box
lunapad/ ├── web app (SvelteKit) ├── DuckDB WASM + warehouse connectors ├── dbt runner └── docker composeSelf-hosting guide →
No, not by default. Lunapad runs right in your browser, so your files stay on your computer unless you choose to connect a shared source like a team database. It's read-only by default, so nothing gets changed by accident.
Upload a spreadsheet or file directly, or connect to DuckDB, Postgres, ClickHouse, MySQL, Snowflake, and other federated sources through Trino — then combine them in one question.
Only if you choose to. The AI query drafting feature can use a popular AI service, or you can run a private AI on your own computer instead, so no data has to leave your machine.
Yes. Both ways to use Lunapad are free: try the hosted demo at lab.lunapad.dev, or self-host from the GitHub repo. There's no paid tier.
No. Start with a blank notebook and any data source. When your team already uses dbt, open the project in Lunapad to run models, see lineage, and promote notebook cells to real models on disk.
Yes on self-host. Docker Compose runs a shared workspace: notebooks, connections, and your dbt project live together, with roles for who can edit or only view. See the self-hosting guide in the docs.
Lunapad is open source and runs on your machine or your server. It is notebook-first: you explore interactively, then publish reports from the same place. There is no per-seat SaaS notebook tax, and your data does not have to live in a vendor cloud by default.
Evidence builds static report sites at compile time. Lunapad is for live exploration first — run cells, iterate, chain steps — then publish reports that refresh from live queries, with filter widgets your readers can use themselves.
From your first question to a polished report, all in one place.