Skip to main content
The Global Event Bus enables decoupled communication between core systems and plugins through a type-safe event system. Core systems emit events when important actions occur, and plugins can react without direct coupling to business logic. Note: This documentation covers the internal backend event bus for plugin communication. If you’re looking for the satellite events system (incoming events from satellites), see Satellite Events.

Overview

Key features:
  • Type Safety: Full TypeScript integration with strongly-typed event data
  • Plugin Isolation: Secure event listener registration with error isolation
  • Performance: Fire-and-forget event processing
  • Security: Events cannot be intercepted or modified by plugins

Event Naming Convention

Events follow the domain.action pattern, aligned with the permission structure:
  • user.registered, user.login, user.logout, user.updated, user.deleted
  • team.created, team.updated, team.member_added, team.member_removed
  • settings.updated, settings.smtp_configured, settings.github_configured
  • mcp.server_installed, mcp.server_uninstalled, mcp.server_configured

Event Data Structure

Event Constants

Usage in Core Routes

Emit events after successful operations:

Plugin Event Listeners

Plugins register event listeners in their configuration:
For detailed plugin event listener examples, see the Plugin System Documentation.

Available Events

Events are emitted for user lifecycle (user.*), team management (team.*), settings changes (settings.*), and MCP operations (mcp.*). Each event includes relevant data and context. For complete event schemas and data structures, see the event type definitions.