Skip to main content

Feature Flags

Manage feature flags to control feature availability across the platform.

Overview

Feature flags let administrators globally enable or disable features without redeploying. They are used as kill-switches for platforms, widgets, integrations, features, bot modules, automation actions, copyright providers, event types, and system-level controls.

Managing Flags

Access feature flag management via Admin > Feature Flags. Flags are grouped by category and toggled individually. Toggling a flag immediately persists the change via PATCH /v1/admin/feature-flags/{id}.

Toggle buttons are gated on the feature-flags:edit permission — users with only feature-flags:read see the toggles but cannot flip them.

Categories

The admin UI groups flags into the following categories (rendered in this order):

  • system
  • platform
  • widget
  • feature
  • integration
  • bot_module
  • automation
  • copyright_provider
  • event

Flag Reference

system category

System flags are admin-scope, user-scope flags that apply to the platform as a whole rather than to individual accounts.

KeyLabelDescription
system:account_creationAccount CreationControls whether users may create new streaming accounts. When disabled globally, all users are blocked from creating accounts. Per-user overrides (see Users) can grant or deny individual users regardless of the global setting.
system:copyright_public_directoryPublic Copyright DirectoryKill-switch for the unauthenticated /music surface on the marketing site (landing page, song browser, playlists, detail pages, reports). When off, the /music link disappears from header + footer and every page under /music/* returns 404. Account-level copyright detection (feature:copyright_detection) is unaffected.
system:copyright_public_quick_checkPublic Copyright Quick CheckNarrower kill-switch for just the inline paste-a-URL quick-check widget on /music. The rest of the directory stays live when this is off. Typically used for rollout or to shed API load.

feature category

Feature flags gate individual dashboard pages and major feature areas.

KeyLabelDescription
feature:botsBotsBot Control dashboard page
feature:bot_modulesBot ModulesBot Modules configuration page
feature:bot_commandsBot CommandsBot Commands management page
feature:musicMusicMusic feature (player page + popout, Spotify polling worker, track events, REST/GraphQL controls). Gates the entire music stack. The overlay widget and the {song} bot variable are gated separately by widget:spotify_now_playing.
feature:connectionsConnectionsConnections page umbrella — disabling hides the entire Connections section
feature:streamelementsStreamElementsStreamElements tip ingestion (replaces the former integration:streamelements key)
feature:obs_remoteOBS RemoteOBS WebSocket remote control feature — gates the OBS integration dashboard page and all OBS config endpoints
feature:advanced_overlaysAdvanced OverlaysAdvanced overlay builder features (e.g. multi-plan-only widget library, custom CSS). Paid-tier unlock: disabled on Free by default.
feature:custom_botCustom Bot AccountAllows the account to register a custom bot identity per platform instead of using the shared Lumio bot. Paid-tier unlock: disabled on Free by default.

widget category

Widget flags gate overlay widgets that render inside a broadcast overlay.

KeyLabelDescription
widget:obs_browser_sourceOBS Browser SourceOBS Browser Source widget — overlay element that renders in OBS via browser source (renamed from a former integration: key)
widget:spotify_now_playingSpotify Now PlayingGates the Spotify Now Playing overlay widget and the {song} chat-bot variable (both surfaces that embed "now playing" data in a broadcast). Does not gate the music player, popout, worker, or API controls — those live behind feature:music.

integration category

Integration flags gate third-party tool integrations displayed in the Connections integrations modal.

KeyLabelDescription
integration:shopifyShopifyShopify e-commerce integration (renamed from platform:shopify; not a streaming platform)
integration:obs_websocketOBS WebSocketOBS WebSocket integration entry in the integrations modal — must be enabled for users to save or delete OBS connection settings

Flag Taxonomy Rules

Use the correct category when adding new flags:

CategoryUse for
feature:*Dashboard pages and major feature areas
widget:*Overlay widgets only (things that render inside a broadcast overlay)
integration:*Third-party integrations in the integrations modal
platform:{x} / platform:{x}:{type}Streaming platforms (Twitch, YouTube, Kick, Trovo, Discord) — master switch + login/channel/bot sub-flags
system:*Admin-scope system switches with user-scope resolution (e.g., system:account_creation)
bot_module:*Individual bot moderation modules (link protection, spam protection, etc.)

Resolution Chain

Flag resolution differs by scope:

Account-scope flags (feature:*, widget:*, integration:*, platform:*, bot_module:*):

  1. GLOBAL_OFF — the flag is disabled globally (admin kill-switch). Stops here.
  2. PLAN_LOCKED — the flag requires a plan the account does not have.
  3. ACCOUNT_OVERRIDE — an explicit per-account override set by an admin.
  4. Enabled (no reason set).

User-scope flags (system:account_creation):

  1. USER_OVERRIDE — the user has an explicit per-user override (allow or deny). Stops here.
  2. GLOBAL_OFF — the global flag is disabled. Stops here.
  3. Enabled (no reason set).

The reason field on FeatureStatus reflects the first layer that returned enabled=false. When a flag is enabled the reason field is null.

Permissions

  • feature-flags:read — view the flag list
  • feature-flags:edit — toggle flags

The dashboard entry itself is gated on admin:access. System admins (is_system: true) implicitly receive all admin permissions.