Skip to content
Glassworks
Open source MPL-2.0S1 Unleashed 0.4.3

The open core for Home Assistant wall panels.

Dashboard, ESPHome device, setup and updates for any wall panel. Everything else is a pane: voice, music, Zigbee/Thread, or one you write.

How it’s built

A frame holds panes, and Kiln installs it.

  1. Plugins. Each declares what hardware it needs.

    • Assist
    • Sendspin
    • Timers
    • Zigbee / Thread radio
    • Bluetooth proxy
    • Camera
    • Diagnostics
    • Notifications
    • Frame-specific panes, like the S1 wall base
  2. The stable contract between core and panes.

    • entities()
    • settings()
    • setupSteps()
    • overlays()
    • requires ↔ provides
  3. What every panel needs. No device code.

    • GeckoView dashboard shell
    • Setup flow
    • ESPHome device and entity registry
    • Screen policy
    • Settings menu
    • Updates through HA
  4. One per device. Everything hardware-specific lives here.

    • Board id
    • Update installer
    • Radio backend
    • Presence and light sources
    • Device extras, like relays
    • Screen-off method
  5. Any Android panel. Kiln installs over USB, from the browser.

    • An Android SoC
    • Zigbee / Thread radio (optional)
    • Presence and light sensors
    • Microphone and speaker
    • Relays, wall base and other extras
  6. The installer. Fires a stock device into a panel, over USB, from the browser.

    • Connects over USB, in the browser
    • Backs the device up first
    • Roots it, where the frame needs root
    • Flashes the frame and core
    • Provisions Wi-Fi and Home Assistant

Supporting a new panel means writing a new frame. S1 Unleashed is the Aqara S1 Plus frame, with the radio and wall-base panes.

USBRootFlashProvisionKILN · INSTALLS OVER USB, FROM THE BROWSERMicrophoneSoCRadio chipPresenceDevice I/OSpeakerHARDWARE · ANY ANDROID PANELBoard idInstallerRadio backendPresenceDevice I/OScreen offFRAME · ONE PER DEVICEShellSetupDeviceScreenSettingsUpdateGLASSWORKS COREPANE APIAssistTimersRadioDiagnosticsDevice paneSendspinPANESZHA · Z2M · OTBRRadio over TCP, firewalledMusic AssistantSynced audio over SendspinHome AssistantESPHome device · dashboard · updates
AssistWake word and voice overlay. Needs a microphone and a speaker.BetaSendspinSynced Music Assistant player. Needs a speaker.BetaTimersVoice timers on screen. Needs a microphone and a speaker.BetaZigbee / Thread radioZigbee coordinator or router, Thread border router. Needs a Silicon Labs radio.BetaBluetooth proxyRelays nearby BLE sensors to Home Assistant, listening only. Needs Bluetooth LE.AlphaCameraWakes the screen on motion that isn't a light change; snapshots and an ONVIF stream if you allow them. Needs a camera.AlphaDiagnosticsCPU, temperature, RAM, storage, Wi-Fi and uptime in Home Assistant. Needs nothing special.AlphaNotificationsHome Assistant's notifications over the dashboard, with a picture, buttons and a sound. Needs nothing special.AlphaTime zoneKeeps the time zone Aqara resets at every boot. Needs nothing special.BetaWall baseThe S1's wired wall base. Needs the S1's wall base.Alpha

Why MPL-2.0

Glassworks stays open. Your product doesn’t have to.
Port itWrite a frame for your device.
Ship itSell panels. Your frames and panes can stay closed.
Share backChanges to Glassworks' own files stay open.
↑↓ to move↵ to open