Lake of Tears is an open-source, self-hosted datalakehouse engineered for Kubernetes and Docker. Combines S3-compatible storage, DuckDB SQL execution, automated Airflow pipelines, JupyterLab notebooks, Superset BI, and Gemini AI search behind a single entry point.
Everything Databricks offers, without the lock-in
Lake of Tears brings together the best open-source analytical tools into a cohesive, beautifully integrated platform.
Databricks-inspired navigation with Notebooks, SQL Editor, Dashboards, Ingestion, and AI Query in a single sidebar. Proxied through a single nginx entry point—no port hopping.
Run blazingly fast SQL directly over Hive-partitioned Parquet files on S3. In-process analytical processing with zero Spark server overhead, cold-start latency, or warehouse compute costs.
No expensive separate vector database (no Pinecone or Qdrant needed). Embeddings stored directly in Parquet with DuckDB VSS (HNSW indexing) and Google Gemini for grounded Q&A.
Dedicated FastAPI auth backend with httpOnly JWT cookies. Includes single sign-on via Google, GitHub, Microsoft Azure AD, and generic OIDC (Okta, Keycloak, Auth0) plus role management.
Daily automated data summarization and scikit-learn Isolation Forest anomaly detection. Outliers are explained in plain English by Gemini with root-cause insights.
Complete Helm v0.2.0 chart with Ingress routing, PersistentVolumeClaims (NFS, Longhorn, Ceph, local-path), decoupled production secrets, and automated migrations.
Databricks vs Lake of Tears
Why pay six figures in SaaS DBU fees when you can host your own modern datalakehouse on your infrastructure?
| Feature | Databricks | Lake of Tears 💧 |
|---|---|---|
| License & Cost | Proprietary SaaS (DBU fees + cloud compute markups) | 100% Free & Open Source (MIT) |
| Deployment Target | Vendor cloud only (AWS, Azure, GCP) | Any Kubernetes cluster, bare metal, or Docker Compose |
| SQL Query Engine | Heavyweight Spark Clusters (minutes cold start, high RAM) | In-process DuckDB (instant cold start, low RAM, reads S3) |
| Vector Search Engine | Separate Databricks Vector Search managed tier | Native Parquet vectors + DuckDB VSS (HNSW indexing) |
| AI / LLM Integration | Databricks Mosaic AI (metered per token / compute) | Google Gemini (embeddings, RAG, summaries, anomaly triage) |
| Workflow Orchestration | Databricks Workflows (proprietary YAML/UI) | Industry standard Apache Airflow (embedded in UI) |
| Interactive Notebooks | Proprietary Databricks workspace notebooks | Standard JupyterLab (embedded in UI shell) |
| BI & Dashboards | Databricks SQL Dashboards (limited visualization types) | Apache Superset (enterprise-grade charts, SQL Lab) |
| Data Privacy & Control | Telemetry and data control planes in vendor cloud | 100% Self-Hosted — your data never leaves your network |
How Lake of Tears Works
One ingress controller, one unified web shell, zero complex cluster dependencies.
nginx (port 80) or Kubernetes Ingress
Lake UI Shell & Auth Backend
MinIO S3 + DuckDB + Gemini
Built-in Ingestion Pipelines
Pre-built Airflow DAGs pull operational data into raw Parquet files automatically.
Extracts charges, refunds, subscriptions, and churn events directly into partitioned Parquet.
Syncs e-commerce order history, line items, revenue discounts, and inventory fulfillment metrics.
Captures sales deals, pipeline stages, contact lifecycle stages, and win-rate analysis.
Runs configurable incremental snapshots of production tables without placing read locks.
Hourly temperature and precipitation forecasts used as join dimensions for demand correlation.
TrueNAS pool/disk health, Jellyfin streaming watch metrics, and personal voice exports.
Deploy to Kubernetes or Docker
Choose between production Kubernetes Helm deployment or single-node Docker Compose.
git clone https://github.com/Lake-of-Tears/lake-of-tears.git
cd lake-of-tears
Create your values-secret.yaml outside Git with passwords and API keys:
minio:
rootUser: "minio"
rootPassword: "YOUR_MINIO_ROOT_PASSWORD"
backend:
auth:
secretKey: "YOUR_RANDOM_JWT_SECRET"
gemini:
apiKey: "YOUR_GOOGLE_AI_STUDIO_API_KEY"
helm install lake-of-tears ./deploy/helm/lake-of-tears \
--namespace lake-of-tears \
--create-namespace \
--values deploy/helm/values-prod.yaml \
--values /path/to/values-secret.yaml \
--wait --timeout 10m
git clone https://github.com/Lake-of-Tears/lake-of-tears.git
cd lake-of-tears
cp .env.example .env
# Edit .env with your credentials
docker compose up -d
Navigate to http://localhost. The first registered account automatically becomes the administrator.