Build on
Databricks.
Ship to your
customers.
The .NET build kit for customer-facing analytics on Databricks. Your customers use your app, not your workspace. LakeWright checks tenant membership and scopes SQL to the right schema.
Apache 2.0 .NET 10 No workspace needed to try it
schema: acmeschema: globexEvery query starts
with a tenant.
With one service principal, Databricks sees your backend’s identity on every request. LakeWright checks membership in your application and carries the tenant’s catalog and schema into each statement.
- Membership first
A tenant ID becomes a
TenantContextonly after membership is checked. - Schema from membership
The statement API gets its catalog and schema from the resolved tenant context.
- SQL values stay parameters
Typed parameters for values. Direct SQL interpolation is a compile error.
// Resolved membership, not a tenant ID.
var statement = TenantScopedStatement.Create(
tenant,
"SELECT * FROM orders WHERE status = :status",
StatementParameter.String("status", "OPEN"));
await executor.ExecuteAsync(
statement, cancellationToken);Add the parts your app needs.
Use the packages you need with your existing UI,
identity provider, and Databricks workspace.
Tenant-scoped data.
Tenant-scoped SQL, typed parameters, raw-data queries, and bounded CSV exports.
Build your first queryDurable operations.
Durable operations with idempotent starts, ownership checks, and polling that resumes after a restart.
Follow an operationEmbedded analytics and AI.
Scoped AI/BI dashboard tokens, tenant-mapped Genie conversations, and model serving through IChatClient.
See tenant isolation
in Signalboard.
Run the Blazor sample with two organizations and three identities. Switch users to check the same operation from another tenant.
Run the sample yourself


The sample’s identity picker and X-Demo-User header are for local use. Use real OIDC in your app. Without a Databricks workspace, jobs stay Pending. Read the sample’s scope ↗
Your first two tenants
are three commands away.
Run Signalboard with Docker. It builds the app, starts PostgreSQL, and seeds both organizations.
- No .NET SDK to install
- No Databricks account required
git clone https://github.com/ivanvyd/LakeWright.NET
cd LakeWright.NET/samples/Signalboard
docker compose updotnet add package LakeWright.AspNetCore --version 2.0.0Add LakeWright.Databricks when your process executes SQL or jobs.
Help improve
LakeWright.
Report a bug, review an isolation decision, or propose a change. Open an issue before starting substantial work.