Skip to content

Technical Guide

This section covers the architecture, APIs, development, and operations of Sowel.

Overview

Sowel follows a reactive event-driven pipeline:

Integration message (MQTT, cloud API poll, plugin)
  → Integration Plugin (receives + parses)
    → Device Manager (updates DeviceData)
      → Event Bus: "device.data.updated"
        → Equipment Manager (re-evaluates bindings + computed Data)
          → Event Bus: "equipment.data.changed"
            → Zone Manager (re-evaluates aggregations)
              → Event Bus: "zone.data.changed"
                → Recipe Engine (triggers → conditions → actions)
                  → Actions may emit Orders → Integration Plugin → device
            → WebSocket pushes to UI clients

Since spec 053, everything is a plugin — integrations and recipes are distributed from GitHub via the PackageManager service. There are no built-in integrations in src/ anymore.

Sections

Section Description
Architecture System design, plugin V2, self-update, backup, CI/CD, logging
Deployment Production deployment, updates, backup/restore, troubleshooting
API Reference REST API endpoints and WebSocket events
Plugin Development How to create third-party plugin integrations
Recipe Development How to create automation recipe packages
Data Model SQLite schema, TypeScript types, event bus events
Contributing Development setup, conventions, and workflow

Specs index

For a chronological list of every spec with one-line summaries and status, see ../specs-index.md.