Problem: Open WebUI ships with grey-scale theming that only goes so far. An organisation putting a branded chat interface in front of its staff needs control of individual components, not just a colour swap.
Approach: We built a theme engine that compiles JSON definitions into CSS. Each component (sidebar, terminal, chat, navigation) can be styled on its own, and a theme declares its own palette, gradients, glows, and animations.
Technical details:
- JSON theme definitions compiled into targeted CSS
- Per-component styling: sidebar, terminal, chat messages, navigation
- Palettes declared as CSS custom properties
- Gradients, glow effects, and animations
- Preset themes included (cyberpunk, persona)
- Extensible property set for new theme features
- No modification to Open WebUI core
Outcome: A branded interface is one JSON file away, and switching themes does not touch Open WebUI itself. The engine carries any number of themes.
Stack: CSS, JavaScript, JSON, Open WebUI
Sandboxed plugin ran for projects/owui-theme-engine and read “Open WebUI Theme Engine” through the mediated API.