Skip to main content

Extensions

Extensions add features to Lumio accounts: widgets for overlays, bot modules for chat moderation, automation nodes, themes, and integrations. They are discovered and installed from the Extension Store.

Visibility levels

VisibilityDescription
systemBuilt-in extensions maintained by Lumio. Always available, cannot be uninstalled.
publicCommunity extensions published by verified developers. Anyone can install them.
paidCommunity extensions with a price. Purchase required to install.
unlistedNot shown in Store search. Installable via direct link.
privateOnly accessible by the developer or accounts with explicit access grants.

System extensions

System extensions replace the former built-in plugin system. They provide the same functionality (chat moderation modules, overlay widgets) but run through the standard extension infrastructure (V8 isolates, Extension Supervisor iframes).

Built-in widgets

ExtensionSlugDefault InstallDescription
Chat Boxsystem-chat-boxYesLive chat feed from connected platforms
Alert Boxsystem-alert-boxYesAnimated alerts for follows, subs, raids
Event Listsystem-event-listYesScrolling list of recent events
Textsystem-textYesLabels, titles, and text overlays
Imagesystem-imageYesUpload or URL-based image overlays
Timersystem-timerYesCountdown / stopwatch timer
Spotify Now Playingsystem-spotify-now-playingNoDisplays the currently playing Spotify track
Browser Sourcesystem-obs-browser-sourceNoHeadless OBS integration events

Built-in bot modules

ExtensionSlugDefault InstallDescription
Link Protectionsystem-link-protectionYesBlock or filter URLs in chat
Spam Protectionsystem-spam-protectionYesDetect excessive caps, symbols, emote spam
Word Filtersystem-word-filterYesBlock banned words, phrases, or regex patterns
Timed Messagessystem-timed-messagesYesSend messages on a rotating schedule

Properties

  • visibility = 'system'
  • No developer or team owner (developer_id and team_id are NULL)
  • Always free (pricing_type = 'free')
  • Cannot be uninstalled (can be disabled via config)
  • Cannot be deleted by users or developers
  • 10 of 12 are auto-installed for new accounts on creation
  • lumio.config.json is the single source of truth — the API reads each manifest at compile time via include_str! (no hardcoded Rust structs)
  • All manifests include an icon field (Lucide icon name)
  • In local dev, bundles are uploaded from the filesystem; in production, deployed via CI (lumio deploy --system)

Config schema

The config_schema field in lumio.config.json defines user-facing settings. The SchemaEditor component auto-generates a settings panel from this schema. 17 field types are supported:

TypeDescription
stringSingle-line text input
numberNumeric input
booleanToggle switch
colorColor picker with hex input
selectDropdown with predefined options
textareaMulti-line text input
sliderRange slider with min/max/step
fontFont family picker (Google Fonts catalog)
iconIcon picker (Lucide, emoji, emotes, uploads)
imageImage upload or URL
soundSound file upload or URL
multiselectMultiple selection from options
groupCollapsible group of nested fields
dividerVisual separator
infoRead-only informational text
channelMulti-platform channel picker
designerFullpage designer surface field

Field properties

PropertyApplies toDescription
labelAllDisplay label
defaultAll value typesDefault value
requiredAll value typesValidation requirement
min / max / stepslider, numberNumeric range constraints
placeholderstring, textareaInput placeholder text
rowstextareaNumber of visible rows
unitsliderUnit suffix (e.g. "px", "ms")
collapsedgroupStart collapsed
visible_whenAllConditional visibility based on other field values
fieldsgroupNested child field definitions
contentinfoInformational text content
optionsselect, multiselectAvailable options array
multiplemultiselectAllow multiple selections
presetsdesignerPredefined preset configurations

A separate designer_schema array in lumio.config.json defines fields for the fullpage designer surface.

Server-side validation

Config values are validated against the config_schema before writing to extension_installs.config. Validates type match, required fields, select options, color hex format, slider range bounds, and rejects unknown keys. Both GraphQL and REST enforce validation.

Widget editor

Two rendering paths produce the same @lumio/ui components:

  1. config_schema -- The host-side SchemaEditor component auto-generates form fields directly from the schema definition
  2. editor.tsx -- SDK Editor Components (EditorInput, EditorTextarea, EditorSelect, EditorCheckbox, EditorSlider, EditorColorPicker, EditorGroup, EditorLabel, EditorDivider, EditorInfo, EditorFontRow, EditorButton) serialize via the Worker Reconciler and render as @lumio/ui on the host

Extensions can use config_schema only, editor.tsx only, or both (schema fields render first, custom editor below).

Advanced settings

The AdvancedSettings panel provides:

  • Layout: Width, height, rotation, optional X/Y positioning
  • Appearance: Opacity
  • Corner Radius: Linked (all corners) or individual per-corner control
  • Effects: Text shadow, layer blur, background blur
  • Strokes: Border styling
  • Custom CSS: Fullpage Monaco Editor modal

Extension designer

The ExtensionDesigner is a fullpage overlay with a split pane (preview + settings). It supports both designer_schema (host-side form from lumio.config.json) and designer.tsx (Worker pipeline via SDK Editor Components).

Font proxy

DSGVO-compliant font serving through Lumio infrastructure. No browser requests go to Google.

EndpointDescription
GET /v1/fonts/\{family\}/cssCSS stylesheet with @font-face rules pointing to self-hosted woff2 URLs
GET /v1/fonts/\{family\}/\{weight\}.woff2Proxied font file, cached via lo-storage

Both endpoints are public scope (no auth required) with immutable cache headers.

Store integration

System extensions appear in the Store alongside community extensions:

  • Category filter: Top-3 category chips (All, Built-in, Widgets) plus a "More" dropdown for remaining categories. Sort by Popular, Recent, or Top Rated.
  • Built-in filter: A dedicated "Built-in" category shows all system extensions across categories, sorted before community extensions.
  • Installed badge: Each card shows a green corner check-mark when the extension is already installed on the current account.
  • Detail page: Shows "Built-in by Lumio" instead of a developer panel, with category badge, Lucide icon, and install/uninstall actions.
  • Pagination: Load More button fetches the next 20 results.
  • Install: Normal install flow. System extensions cannot be uninstalled.

Discovery API

EndpointDescription
GET /v1/extensions?visibility=system&category=widgetList system widget extensions
GET /v1/extensions?visibility=system&category=bot_moduleList system bot module extensions
GET /v1/platforms/metadataStatic platform info (replaced /v1/plugins?type=platforms)
platformMetadata (GraphQL)Same as REST, public query