Ask questions. Build workflows. Share reports.

One notebook from first question to shared report.

What you get

Ask questions, connect sources, and see answers inline.

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.

Write it your way

PRQL, SQL, Python, or a visual pipeline in every cell. Click to build, then open the text when you want to edit the details.

When SQL is not enough, use Python

Run pandas, numpy, or plotly in a Python cell on the server. Name the output like any other step, and downstream PRQL or SQL cells can pick it up.

Bring every source into one question

Upload a spreadsheet, query DuckDB in the browser, or connect Postgres, ClickHouse, MySQL, or Snowflake through Trino. Read-only by default.

Join across sources in one query

Because external connections share one query layer, you can join a warehouse table to an upload or a second database without moving data first.

See the answer where you asked

Results land right below the step, on your computer with DuckDB WASM or against your team warehouse when you connect one.

How it works

Lunapad treats analysis like a chain of named answers. You can read it, rerun it, publish it, and turn the parts that matter into dbt models.

  1. Start with the data you already have

    Open a CSV, DuckDB file, spreadsheet, warehouse, or dbt project. Lunapad keeps the work in the browser until you choose a shared setup.

  2. Turn each answer into a step

    Ask a question, give the result a useful name, then reference that name in the next question. The notebook becomes a readable chain instead of one giant query.

  3. Rerun only what changed

    When a source or step changes, Lunapad follows the dependency map and refreshes the affected answers, charts, and report blocks.

  4. Publish the work or move it into dbt

    Share a report link for review, schedule refreshes on a hosted workspace, or move stable logic into your dbt project without starting over.

Connect the sources your team already has.

Lunapad runs on DuckDB in the browser, registers external catalogs through Trino, and carries the work into dbt, reports, exports, and project files.

Relational sources

Connect operational databases through managed Trino catalogs.

Postgres
MySQL
MariaDB
SQL Server
Oracle
Redshift
SingleStore
Snowflake
DuckDB built in

NoSQL / Search

Bring semi-structured stores and search indexes into the same query graph.

MongoDB
Cassandra
Elasticsearch

Other sources

Use analytical databases, sheets, warehouses, and uploaded files together.

ClickHouse
Google Sheets
BigQuery
CSV
Parquet
JSON

Model and publish

Move from notebook steps to project assets and reports.

dbt
Trino catalog layer
Evidence.dev
Excel exports

Run it on your own computer

No account, no cloud, no usage limits. Clone the repo and start it with Docker Compose.

terminal
$ git clone https://github.com/nicodemus-opon/lunapad && cd lunapad && docker compose up
Self-hosting docs

Want Lunapad without operating it?

For teams that want a shared Lunapad workspace without running the server, upgrades, and backups themselves. The hosted service is opening in beta for a small number of teams; bring your data sources, dbt project, and reporting workflow, and we will help shape the first workspace with you.

Frequently asked questions

Does my data leave my computer?

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.

What can I connect to?

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.

Does the AI feature send my data to a third party?

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.

Is Lunapad free?

Yes. The core app is open source, and you can try the hosted app at app.lunapad.dev or self-host from the GitHub repo. Managed hosting is a separate option for teams that want Lunapad run for them.

Can you run Lunapad for my team?

Yes. Managed hosting is for teams that want a shared Lunapad workspace without operating the server themselves. Contact sales and we can talk through your data sources, dbt project, and reporting workflow.

Do I need dbt?

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.

Can my team share one instance?

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.

How is this different from Hex or a BI tool?

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.

How is this different from Evidence?

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.

Start getting answers from your data.

From your first question to a polished report, all in one place.