Skip to main content
A workspace is your team’s container on Luxxon. Every API key, every wallet, every session belongs to one. The same primitive works on the consumer side and the supplier side — the roles field enables specific scopes. Create one in 30 seconds at console.luxxon.devNew workspace, or via the wire protocol below.

What it owns

Roles

CONSUMER and SUPPLIER. A workspace can be one or both; the gates are: SUPPLIER-only workspaces can’t request sessions; CONSUMER-only workspaces can’t accept them. Mixed workspaces (a security firm that buys feeds in one zone and sells in another) just hold both roles.

Creating a workspace

Two-step flow because the workspace is bound to a Base wallet — the platform needs to know the human creating it controls the private key.

1. Request a challenge

POST /workspaces/challenge (public) with the wallet address:
Returns:

2. Sign + create

Sign the exact message with the wallet’s private key (any Sign-In-With-Ethereum-compatible signer — viem, ethers, MetaMask all work). Then POST the workspace with the signature:
This endpoint is public — the signature itself is the auth. The signing wallet becomes the workspace OWNER + first member. The nonce-and-signature single-use pair is the gate, and is enforced against the in-memory pending challenges table.

3. Capture the ZedToken

The response carries consistencyToken (also in the X-Lx-Consistency-Token header). Echo it on any immediate follow-up call (e.g. minting your first API key) so the SpiceDB write is guaranteed visible. See Conventions / ZedTokens.

Membership

The creator is the first OWNER. Membership is dual-stored: SpiceDB holds the authoritative relation graph on the lx_workspace resource, and LxWorkspaceMember is a per-workspace cache for cheap listings.
Hierarchy: owner > admin > viewer. Higher roles inherit the lower’s permissions through the permission graph defined in the spicedb/schema.zed source:
Inviting additional members via API is on the roadmap. During early access, every workspace has exactly one OWNER member (the creator).

What a workspace cannot have

  • A second wallet. One workspace, one address. Need another wallet? Create another workspace.
  • Two slugs. Slugs are unique globally.
  • A USDC balance held by Luxxon. The platform never custodies funds — the wallet address you registered is where USDC actually sits.

Soft delete

deletedAt is in the schema; the delete endpoint is on the roadmap. Workspaces aren’t currently destructible via API. See /workspaces for endpoint reference.