Skip to content

Permissions & Feature Limits

LaunchKit Pro combines RBAC permissions, feature flags, and plan limits to control what each user can do in a workspace.

RBAC permissions

Permissions are string keys (e.g. workspace.view, billing.manage, files.delete). Routes use @RequirePermission and PermissionsGuard.

Examples:

PermissionPurpose
workspace.viewView workspace
workspace.updateUpdate workspace
member.inviteCreate invites
member.update_roleChange member roles
billing.view / billing.manageBilling read/write
files.view / files.upload / files.deleteStorage
api_keys.manage / webhooks.manageDeveloper tools
admin.accessPlatform admin routes

Workspace roles map to permission sets. Platform admins have separate admin permissions.

Inspect your role:

bash
curl -s http://localhost:4000/permissions/me \
  -H "Authorization: Bearer <accessToken>" | jq

Feature flags

Feature catalog describes modules (AI, storage, webhooks, etc.) and which plan codes enable them.

bash
curl -s http://localhost:4000/features/catalog | jq
curl -s http://localhost:4000/features/editions | jq
curl -s "http://localhost:4000/features/editions/current?workspaceId=<workspaceId>" \
  -H "Authorization: Bearer <accessToken>" | jq
curl -s http://localhost:4000/workspaces/<workspaceId>/features \
  -H "Authorization: Bearer <accessToken>" | jq

See Product Editions for the Lite / Pro / Enterprise matrix foundation (informational defaults; enforcement still uses plan limits below).

If no active subscription exists, Lite defaults apply.

Plan limits

Plans (lite, pro, enterprise) define numeric limits — API keys, webhooks, AI usage caps, storage quotas, etc.

bash
curl -s http://localhost:4000/workspaces/<workspaceId>/limits \
  -H "Authorization: Bearer <accessToken>" | jq

Admins can adjust workspace upload limit via PATCH /workspaces/:workspaceId/limits (subject to plan ceiling).

Upload limit formula

Effective max upload size (MB) is the minimum of:

  1. System limitMAX_UPLOAD_SIZE_MB (backend env)
  2. Plan limit — from active subscription plan
  3. Workspace setting — optional override from workspace limits API
effectiveLimit = min(systemLimit, planLimit, workspaceSetting)

Enforcement layers

LayerPurpose
FrontendNEXT_PUBLIC_MAX_UPLOAD_SIZE_MB pre-validation (UX only)
BackendAuthoritative rejection with clear error message
Nginxclient_max_body_size hard limit at reverse proxy

All three should be aligned in production. Frontend validation alone is not sufficient.

Example Nginx (API server block):

nginx
client_max_body_size 10m;

403 permission denied

Means the user is authenticated but lacks the required permission for that workspace or admin route. Check role, workspace membership, and plan features.

LaunchKit Pro by LaunchKit Labs — buyer documentation. No secrets in this site.