Skip to content

Plugin System

Web.Casa is built on a modular plugin system. Every major feature is a plugin that registers itself at startup and can be independently enabled, disabled, installed, or uninstalled.

Web.Casa ships with 12 plugins:

PluginDescription
DockerContainer, image, network, and volume management
DeployGit-based project deployment with build pipelines
AILLM integration and chat assistant
DatabaseMySQL, PostgreSQL, and Redis administration
MonitoringReal-time CPU, memory, disk, network metrics and alerts
BackupKopia-based backup and restore
App StoreOne-click Docker app installation from catalog
File ManagerWeb-based file browsing, editing, and management
FirewallFirewalld zone, port, service, and rich rule management
PHPPHP-FPM and FrankenPHP runtime management
MCP ServerModel Context Protocol server for AI tool integration
Cron JobScheduled task management

From the Plugins settings page:

  1. View all available plugins and their current status
  2. Enable a plugin to activate its features
  3. Disable a plugin to deactivate it without removing data

Warning: Some changes require a restart of Web.Casa to take effect. The UI indicates when a restart is needed.

  • Install — downloads and registers a plugin
  • Uninstall — removes the plugin and its associated data

Plugins may depend on other plugins. For example:

  • The App Store plugin depends on Docker
  • The AI plugin may depend on Docker and Deploy for full functionality

Web.Casa enforces dependencies automatically:

  • You cannot disable a plugin that other enabled plugins depend on
  • Enabling a plugin with dependencies will prompt you to enable the required plugins first

Each plugin can be shown or hidden from the sidebar navigation independently of its enabled/disabled state. This lets you keep plugins active in the background without cluttering the sidebar.

All plugins implement a standard interface with lifecycle methods:

MethodPurpose
Metadata()Returns metadata: name, version, description, dependencies
Init()Registers routes, event handlers, and database tables at startup
Start()Activates background processes (collectors, schedulers, watchers)
Stop()Cleanly shuts down when the application stops

The event bus is the communication backbone between plugins:

  • Plugins publish events (e.g., container.started, host.created, backup.completed)
  • Plugins subscribe to events from other plugins or the core system
  • No direct dependencies between plugins — communication is fully decoupled

Example flows:

  • The Monitoring plugin subscribes to Docker events for container lifecycle tracking
  • The Notification plugin subscribes to alert events to send Discord/Telegram messages
  • The AI plugin subscribes to deployment events to offer diagnostic suggestions

Each plugin gets a scoped configuration store (ConfigStore):

  • Read and write settings without colliding with other plugins
  • Settings are accessible through the Web.Casa settings UI
  • Simple key-value interface — no direct database access needed

Plugins receive access to the CoreAPI, which provides shared utilities:

  • Database connections and migration helpers
  • Authentication middleware
  • WebSocket manager for real-time streaming
  • Event bus handle for publishing and subscribing
  • Logger instance for structured logging