Roblox · server-side Luau

Keep Roblox native services. Add an external backend only where they stop fitting.

Crux gives Roblox server scripts a shared backend for verified player records, persistent data, leaderboards, economy, live config and server discovery. The shipped Luau SDK uses HttpService behind a server-only token, so backend authority stays out of LocalScripts.

Dev BaaS includes 10,000 MAU and every backend feature. No credit card. Roblox integration runs from server-side Scripts with a Crux server token.

ServerScriptService / Luau shipped SDK surface
local Crux = require(game.ServerScriptService.Crux)

local crux = Crux.init(
  PROJECT_ID,
  SERVER_TOKEN,
  ENVIRONMENT_ID
)

game.Players.PlayerAdded:Connect(function(player)
  local record = crux:VerifyPlayer(player.UserId)
  local saves = crux:GetDataStore("progression")
  local value = saves:GetAsync(player.UserId)
end)
Verify before you integrate

Inspect the Roblox integration before you trust it.

The Luau module is public and MIT licensed. The hosted API contract is inspectable, the current service state is live, and the exit commitment is written down.

Live API status

A live check of the hosted API right now. No made-up uptime percentage and no hidden demo environment.

Check current status

Public API contract

The hosted HTTP surface is documented as OpenAPI. Inspect the wire format before choosing an SDK or writing an adapter.

Open the spec

MIT client SDKs

The JavaScript, Godot, Unity, and Roblox client SDK source is public. The hosted backend itself remains a managed proprietary service.

Inspect the SDK source

Documented exit path

Read what is exportable today and the written commitment for advance notice plus an export window if the hosted service winds down.

Read the exit guarantee

Roblox SDK source

Read the exact Luau module that performs HttpService calls, retries transient failures, verifies Roblox users, and exposes data, leaderboard, economy, config and server-registry methods. It also documents the current server-token matchmaking boundary in code.

Inspect Crux.lua
Native first

Do not replace Roblox infrastructure just to say you have a backend.

Roblox already ships durable data stores and fast memory stores. Use them. Add an external system only when the job crosses the boundary of one Roblox game or needs operator/backend behavior you want outside Roblox.

01

Keep native Roblox services for

  • Durable state that belongs entirely inside one Roblox game
  • Fast ephemeral queues and shared state with MemoryStoreService
  • Reserved-server and place handoff with TeleportService
  • Simple Roblox-native configuration and platform workflows

Roblox documents DataStoreService for persistent data and MemoryStoreService for frequent, ephemeral data such as matchmaking queues.

02

Add Crux when you need

  • One player record shared with another Roblox experience or external service
  • Server-owned leaderboards, inventory and currency behind one backend contract
  • Support/admin access to player state without writing bespoke operator tools first
  • A backend also consumed by web, mobile, PC or dedicated-server code
  • Server registry, live config and durable backend data outside a single Roblox runtime
Trust boundary

The secret belongs on the Roblox server.

The Crux Roblox module is designed for server Scripts. The server token authenticates the Roblox server to Crux. Do not copy it into a LocalScript, replicated value, client UI, or any place a player can read.

VerifyPlayer(player.UserId) maps the Roblox user into a Crux player record from server-side code. From there the same server can use Crux data stores, leaderboards, economy, live config and server-registry APIs. Crux's current matchmaking queue is player-token scoped, so the Roblox server-token SDK intentionally does not present it as a runnable server-side path.

Shortest useful evaluation

  1. Create the free project and prove its live API responds.
  2. Open the authenticated Roblox setup and create a server token.
  3. Copy Crux.lua into ServerScriptService.
  4. Enable Roblox HTTP requests and initialize the SDK with project, token and environment IDs.
  5. Call VerifyPlayer from PlayerAdded; Crux will mark the project externally connected when that server token is actually used.
Choose the right Roblox path
Your problemStart here
External HttpService integrationHttpService guide
DataStore vs external storageDataStore decision guide
Compare backend vendorsRoblox backend alternatives
Shared progression / multiple experiencesProgression architecture
MemoryStore matchmaking boundariesMatchmaking guide
Working Crux server scriptRoblox + Crux quickstart
One server call is enough to judge the fit

Do not migrate your DataStores first.

Create a free project, wire one server-side feature, and watch Crux confirm the external connection. Keep the rest of your Roblox stack unchanged until the external backend earns its place.

Roblox-native architecture references: DataStoreService, MemoryStoreService, and HttpService.