v2.0.0 Read the release notes

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

Included in LakeWright Tenant-scoped SQL Durable jobs Embedded analytics Audit trails

Every 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 TenantContext only 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.

Read the architecture
Your applicationTenant-scoped SQL
// 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);
Tenant context follows the query.Identity → membership → context → query

Add the parts your app needs.

Use the packages you need with your existing UI,
identity provider, and Databricks workspace.

Durable operations.

Durable operations with idempotent starts, ownership checks, and polling that resumes after a restart.

Follow an operation

Embedded analytics and AI.

Scoped AI/BI dashboard tokens, tenant-mapped Genie conversations, and model serving through IChatClient.

Explore the modules

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
Signalboard / repository capturesBLAZOR
The real Signalboard dashboard: Alice sees Acme Logistics operations and an enabled Start button.
Acme operations, scoped to Alice’s membership.Full capture (opens in a new tab)

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

Then open localhost:8080, sign in as Alice, and try again as Bob.

Run Signalboard
git clone https://github.com/ivanvyd/LakeWright.NET
cd LakeWright.NET/samples/Signalboard
docker compose up
Already have an application?NuGet v2.0.0 ↗
dotnet add package LakeWright.AspNetCore --version 2.0.0

Add LakeWright.Databricks when your process executes SQL or jobs.