- Category
- Developer Tools
- Rank
- No. 3775Tools index
Previous survey · No. 3605 ·
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Data Processing
- GitHub
- 9 stars
- Date
About
Lunapad is a self-hosted, open-source notebook for analytics engineering that supports SQL, PRQL and Python cells. Exploratory cells can be promoted into dbt models, and queries run through Trino so a join can span two different databases without ETL.
At a glance
Lunapad is a self-hosted browser notebook for SQL and PRQL analysis. Named cells can build on one another; local queries use DuckDB in the browser, while Trino connects external databases and can join across sources. Planning a shared analytics workspace also means operating its server-side services.
Good fit
A candidate for analytics engineers who want exploratory queries, reusable models and discussion in one workspace. The built-in sample data offers a way to judge the notebook before giving it warehouse access. Choose it for a written-query workflow; the optional AI assistant still needs your own model endpoint and review of generated SQL.
Consider something else when
You want a standalone static page or a managed notebook with infrastructure included. The current Compose file runs the app, Postgres, Trino, Redis and Inngest. Browser-local DuckDB does not make the whole workspace local to the browser, and headless automation cannot query that built-in engine through the documented API.
Start here
For a local trial, use the documented Docker Compose setup and open the app on host port 3967, not its internal port 3000. Complete first-admin setup, open a notebook and run SELECT * FROM tpch.tiny.nation through the Trino sample catalog. Confirm results before adding a real data source or an AI provider.
Cost and requirements
The repository identifies Apache-2.0 licensing; self-hosting, database storage, backups and any model API usage remain your costs. Source development uses Node 22 and pnpm 9. Compose includes trial defaults: replace authentication and encryption secrets and set the correct external origin before a real deployment.
Limits to know
Connection secrets are encrypted in the metadata database, but some connectors also write credential files into the shared Trino catalog volume. Protect those files and use limited database accounts. SQL filtering is not an independent security audit. Project memory can survive clearing the AI conversation, and a remote AI endpoint receives the context sent to it.
Related work
Sources checked 2026-10-30. Source-based assessment.
- github.com/nicodemus-opon/lunapad/blob/main/README.md
- github.com/nicodemus-opon/lunapad/blob/main/package.json
- github.com/nicodemus-opon/lunapad/blob/main/LICENSE
- github.com/nicodemus-opon/lunapad/blob/main/docs/guide/01-getting-started.md
- github.com/nicodemus-opon/lunapad/blob/main/docs/guide/04-connecting-data.md
- github.com/nicodemus-opon/lunapad/blob/main/docs/guide/07-ai-assistant.md
- github.com/nicodemus-opon/lunapad/blob/main/docs/guide/11-self-hosting.md
- github.com/nicodemus-opon/lunapad/blob/main/docker-compose.yml
- github.com/nicodemus-opon/lunapad/blob/main/src/lib/server/connections.ts
- github.com/nicodemus-opon/lunapad/blob/main/src/lib/server/connection-secrets.ts
- github.com/nicodemus-opon/lunapad/blob/main/src/routes/api/connections/secret/+server.ts
- github.com/nicodemus-opon/lunapad/blob/main/src/lib/utils/sql-readonly.ts
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.