| docs | ||
| knowledge | ||
| plugins | ||
| scripts | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| Discord profile banner.png | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| run.js | ||
| safe-mode.js | ||
| TODO.md | ||
Lumi Bot
Discord bot + WebUI with role-based access, plugin management, and self-update support.
Quick start
Requires Node.js 18+.
- Install dependencies:
npm install - Run with auto-restart:
npm run run - Open
http://localhost:3000/setupand enter your Discord app + bot settings.
You can also seed local configuration with a .env file. Use .env.example
as the template; .env is ignored by git.
Discord app setup
- OAuth2 redirect URI:
http://localhost:3000/auth/discord/callback - OAuth2 scopes:
identify,guilds,guilds.members.read - Add the bot to your server and copy the Guild ID.
WebUI roles
The WebUI maps Discord roles to access levels:
DISCORD_ADMIN_ROLE_IDDISCORD_MOD_ROLE_ID
You can set these in .env or change role IDs in Admin → Settings.
Plugins
Use Admin → Plugins to install, enable, update, or uninstall plugins. You can also create a local plugin from the WebUI.
Updates and recovery
Use Admin → Updates for version-aware core and plugin updates. Lumi reads
repo metadata from main by default, can explicitly target the newest
experimental-* branch, creates snapshots before updates, blocks unsafe major
jumps without compatibility bridge metadata, and keeps advanced ZIP updates
hidden behind manual reveal controls.
Recovery mode can be started with LUMI_SAFE_MODE=1 npm run run,
node run.js --safe-mode, or data/recovery/safe-mode.flag. See
docs/updates.md and
docs/recovery-mode.md.
Twitch bot
Configure Twitch chat settings in Admin → Settings:
twitch_bot_usernametwitch_bot_oauth(OAuth token)twitch_channels(comma-separated)
Custom commands can target Discord, Twitch, or both from Admin → Commands.
Users and linking
Users have an internal UUID and username. Link Twitch accounts in Profile and manage usernames in Profile or Admin → Users.
Theming
Use Admin → Theming to select one of six read-only Lumi themes. Duplicate a built-in or custom theme to edit colors, surfaces, controls, status colors, focus states, radius, shadows, and spacing with a live light/dark preview. Custom themes can be applied, renamed, duplicated, and deleted. Invalid or incomplete values fall back safely to the selected built-in base theme.
Developer and modding conventions are documented in
docs/lumi-ui.md.
Notes
- Auto-update uses
git pullfrom the configured remote + branch. - Auto-restart uses
run.jsto respawn the process after updates or crashes.