Lux Docs

Build on Lux without guessing.

Lux Cloud + OSS core

Product docs for the Lux runtime: tables, cache, vectors, realtime, time series, auth, HTTP, SDK, CLI, and self-hosting.

Lux Cloud

Managed Lux projects with the same open-source runtime underneath: tables, cache, vectors, realtime, queues, time series, auth, snapshots, logs, custom domains, and direct protocol access.

What Lux Cloud gives you

Lux Cloud is the hosted product surface for building apps on Lux. Self-hosting stays available, but Cloud adds project management, gateway keys, auth configuration, dashboard tooling, and operational automation.

IncludedWhy it matters
Managed projectsProvision Lux projects in seconds without handling infrastructure.
Explorer + consoleInspect keys, tables, vectors, and time series from the browser.
Project keys + Cloud gatewayUse publishable keys from browsers and secret keys from trusted servers.
Lux AuthApp users, sessions, OAuth providers, JWTs, and auth-owned system tables.
Custom domainsAttach your own API/Auth or database protocol subdomains at no extra monthly charge.
Snapshots + WALDurability and recovery without operational setup.
Logs + metricsObserve projects and troubleshoot without building separate tooling.

Create a project

Sign in to your dashboard, click New Project, choose a region and tier, and your project is live in seconds.

Or create and link via the CLI:

CLI
lux create my-project --accept-charges
lux link my-project
lux env pull

Connect

There are two main connection surfaces. Use the SDK/Cloud gateway for application code. Use direct protocol access when you need low-level command access or Redis-compatible tooling.

SDK and Cloud gateway

The gateway is the normal app surface. Browser clients use publishable keys. Server clients use secret keys. Signed-in app users send a project key plus their Lux Auth JWT.

SDK gateway
import { createBrowserClient, createClient } from "@luxdb/sdk";

const lux = createBrowserClient(
  "https://api.luxdb.dev/v1/my-project",
  "lux_pub_..."
);

const { data, error } = await lux
  .table("messages")
  .select()
  .eq("channel_id", "general")
  .limit(50);

const admin = createClient(
  "https://api.luxdb.dev/v1/my-project",
  "lux_sec_..."
);

Direct Lux protocol

Cloud projects also expose a canonical TLS endpoint for direct protocol access:

Lux URI
luxs://:password@your-project.db.luxdb.dev:6380

For Redis-compatible clients that do not understand the luxs:// scheme, use the equivalent TLS URI:

Redis Client Compatibility
redis-cli --tls -u rediss://:password@your-project.db.luxdb.dev:6380

Best for: app servers, workers, migration runs, Redis-compatible tools, and anything that can safely hold the database password.

HTTP API

Every project is accessible via REST at api.luxdb.dev. Authenticate with a project key from the project settings page.

HTTP
curl -H "apikey: lux_pub_..." \
  -H "Authorization: Bearer lux_pub_..." \
  https://api.luxdb.dev/v1/my-project/kv/hello

The SDK uses these HTTP routes under the hood for project clients:

Routes
GET    /v1/:project/kv/:key                  # get a key
PUT    /v1/:project/kv/:key                  # set a key
DELETE /v1/:project/kv/:key                  # delete a key

GET    /v1/:project/tables/:table            # query rows
POST   /v1/:project/tables/:table            # insert row
PUT    /v1/:project/tables/:table/:id        # update row

POST   /v1/:project/ts/:key                  # add sample
GET    /v1/:project/ts/:key?agg=avg&bucket=60000  # range query

POST   /v1/:project/vectors/search           # vector search
POST   /v1/:project/exec                     # any command

Best for: browser apps, edge functions, serverless, MCP, and any environment where TCP sockets are awkward or unavailable. See the full HTTP API reference.

Custom domains

Lux Cloud lets you attach your own subdomains to a project without a separate per-domain add-on. Use them for user-facing API/Auth endpoints, direct database protocol endpoints, or both.

Domain typeRoutes toUse it for
API/Auth/v1 and /auth/v1SDK clients, browser-safe project keys, auth redirects, edge/serverless calls, and app APIs.
DB protocol:6380 over TLSTrusted servers, workers, Redis-compatible tooling, migrations, and direct RESP clients.

Open Dashboard -> Project -> Domains, choose a type, and enter a subdomain such as api.example.com or db.example.com. Lux shows the required CNAME and TXT verification records.

If the domain is hosted on Cloudflare, click Cloudflare to authorize Lux to create the DNS records for you. After approval, Lux redirects back to the dashboard, verifies DNS in the background, provisions routing, and emails the workspace owner when the domain becomes active.

Custom domain endpoints
# API/Auth custom domain
https://api.example.com/v1
https://api.example.com/auth/v1

# DB protocol custom domain
luxs://:password@db.example.com:6380
rediss://:password@db.example.com:6380

Dashboard

Every Lux Cloud project includes a full-featured dashboard:

FeatureDescription
TablesBrowse relational tables and inspect auth-owned system tables
RealtimeLive key change feed via KSUB
VectorsManage and query vector indexes
Time SeriesVisualize and query time series data
QueuesMonitor stream-based queues and consumer groups
AuthConfigure app auth users, sessions, and OAuth providers
DomainsAttach API/Auth and DB protocol custom domains with manual DNS or Cloudflare-assisted setup
ConsoleRun commands directly from the browser
LogsTail runtime logs in realtime
SnapshotsCreate, view, download, and manage point-in-time snapshots

CLI

Install the Lux CLI:

Install
curl -fsSL https://luxdb.dev/install.sh | sh
lux login

Common commands:

Commands
lux init
lux projects
lux create my-app --accept-charges
lux link my-app
lux env pull
lux migrate run
lux seed run
lux status my-app
lux destroy my-app --accept-consequences

SDK

The Lux SDK is the highest-level DX path when you want project auth, table queries, vectors, and direct Redis-compatible access from one package:

Install SDK
bun i @luxdb/sdk
SDK example
import { createBrowserClient, createClient, Lux } from "@luxdb/sdk";

// Browser/app access through the Cloud gateway.
const lux = createBrowserClient(
  "https://api.luxdb.dev/v1/my-project",
  "lux_pub_..."
);

const { data, error } = await lux
  .table("messages")
  .select()
  .eq("channel_id", "general")
  .limit(50);

// Trusted server access can use the secret key.
const admin = createClient("https://api.luxdb.dev/v1/my-project", "lux_sec_...");

// Direct SDK access is for local/self-hosted non-TLS Lux projects.
const direct = new Lux("lux://127.0.0.1:6379");

For simple edge/serverless calls, use the HTTP API directly:

Fetch example
const res = await fetch("https://api.luxdb.dev/v1/my-project/kv/hello", {
  headers: {
    apikey: "lux_pub_...",
    Authorization: "Bearer lux_pub_..."
  }
});
const { result } = await res.json();

Pricing

One simple price per project, billed monthly. Free for 14 days, no credit card required to start.

Standard

$10/mo per project

512 MB hot cache

5 GB storage

1000 ops/sec sustained

Snapshots, WAL, recovery

See /pricing for the full breakdown.

Operational notes

Lux uses WAL replay plus snapshots for durability. Cloud adds managed process restarts, metrics, logs, and snapshot storage. For production expectations and launch-stage limits, read Reliability and Limits.