Skip to content

Tesserae

Self-hosted e-ink dashboard companion. Compose tile-based dashboards in the browser, render them headless, and push the resulting frame to one or more panels, Raspberry Pi and ESP32 over MQTT, TRMNL hardware and Kindle (via KOReader) over HTTP-pull.

Sibling rebuild of inky-dash, same job, but every layer of the publishing pipeline is a drop-a-folder extension point: new widget, new theme, new font, new renderer, new device kind. The name comes from tessera, the individual tile of a mosaic; the editor composes a dashboard out of cells.

New here? Start with the path that matches you

How it works

  1. Compose a dashboard of cells in the editor; each cell is a widget plugin.
  2. Render the dashboard headlessly with Chromium at the target panel's exact pixel size.
  3. Quantise the frame to the panel's colour palette and pack it for the wire.
  4. Publish, over MQTT (Pi, ESP32) or HTTP-pull (TRMNL, Kindle). A small client on the panel paints it and sleeps.

Every layer, the bundled widgets + the community catalog, the themes, the fonts, the renderers, the device kinds, is a drop-a-folder plugin or a dedicated app surface discovered at boot. See Build a widget with AI for the authoring path and the widget contract for the full spec.

Project status

Tesserae is a self-hosted hobby project, built in the open by a solo maintainer. The composer → renderers → transport → devices pipeline, scheduler, Home Assistant MQTT auto-discovery, webhook push, the Spectra theme system (browse / builder / image-to-palette extraction), font picker, and form-driven page editor are all shipping. Four reference clients (ESP32, Pi .bin, Pi PNG, TRMNL / KOReader) run on real hardware, see what's tested. The panel matrix is still small, so testers on other displays are very welcome, as are contributors: open an issue or PR.