Lifecycle¶
Installation¶
- User provides a GitHub URL
- Lumiverse clones the repo to
{DATA_DIR}/extensions/{identifier}/repo/ - Reads and validates
spindle.json - If no
dist/folder exists, runsbun buildonsrc/backend.tsandsrc/frontend.ts - Extension is registered in the database
- Backend runtime is started if the extension is enabled
Enable / Disable¶
- Enable: starts the backend runtime and schedules the frontend module to load
- Disable: sends
shutdownto the backend runtime (5s grace period), tears down the frontend module, unregisters all macros/interceptors/tools/context handlers, and stops any active frontend processes owned by the extension
By default, backend runtimes start in process mode. See Runtime Modes for platform-specific behavior.
Update¶
- Runs
git pullin the extension's repo directory - Re-reads
spindle.json - Rebuilds from source if needed
- Restarts the backend runtime if the extension was running
Removal¶
- Stops the backend runtime
- Deletes the database row (cascades permission grants)
- Deletes the extension directory (repo + storage)
Startup Order¶
On Lumiverse boot, all enabled extensions are started after database migrations complete. Extensions should not depend on a specific load order.