Hi all. I've been building this for a few weeks and it's at a place where I'd love to put it in front of HA folks for some early feedback.
Tesserae is a self-hosted dashboard companion for e-ink panels: compose tile-based dashboards out of widgets in a web UI, render them headless, then push the frames to physical displays. Works with Pimoroni Inky (pHAT, wHAT, Impression 4"/5.7"/7.3"/13.3"), Waveshare Spectra 6 driven by an ESP32, TRMNL devices (Seeed Studio hardware running the TRMNL firmware, pictured above with the resident QA inspector), and Kindles running KOReader's trmnl-display plugin.
One Tesserae instance drives a whole household of panels at once, each with its own dashboard. Above each card is a live preview of what's currently on the device.
Dashboards are tile-based. Pick a layout preset (single cell, 2×2 grid, hero top/bottom, etc.), assign a widget per cell, pick a theme. The dashboard's panel block sizes to the device you're binding to, so the same composition retargets to a different panel just by ticking a different device.
Landscape panels work the same way. This Bedside dashboard binds to a landscape waveshare photo painter running custom firmware.
Where it fits with HA specifically:
- Installs as a Home Assistant App with Ingress, so it lives in your sidebar like any other App. The HA App repo handles the install; the main repo has docs covering the App path.
- MQTT auto-discovery publishes every Tesserae-managed device as an HA entity. Battery percentage, signal strength, IP, current frame as an image entity, current dashboard name, last refresh time. They appear under the Tesserae hub device card and group cleanly.
- HA-aware widgets bundled in: lights, locks, climate, cameras, sensors, history graphs, energy / solar, zones, todo lists, plus battery + heartbeat tiles for your other HA devices. They use HA's WebSocket API so reactivity is essentially live (subject to your e-ink refresh cadence).
- Webhook endpoint for HA automations: trigger an on-demand render when someone leaves home, when sunset hits, when a button is pressed. Token-authenticated, single POST.
- Rotations: cycle a single panel through several dashboards on a daily anchor. Morning dashboard at 06:00, midday at 12:00, evening at 18:00, repeat. Any HA-triggered schedule with a higher priority preempts the rotation, so a doorbell-pressed automation can interject a "someone's at the door" dashboard.
There's also a small but growing community widget catalog you can browse and install from inside the UI: extra calendar views, a Spotify now-playing widget, AI-image-generation if you want a different wallpaper every morning, plus a few utility bundles.
It works just as well as wall art. This one (in our hallway) cycles between batteries, Spotify, and a litter-box weight tracker.
It's AGPL-3.0-or-later licensed, fully self-hosted, no cloud calls Tesserae itself makes (widgets you opt into may, e.g. weather and AI image generation hit their respective APIs).
Code + docs:
- GitHub: GitHub - dmellok/tesserae: E-ink dashboard companion. Compose tile-based dashboards, render headless, push to Pi and ESP32 panels over MQTT. · GitHub
- Wiki: Tesserae
I'd genuinely love feedback on the HA integration shape, what's missing, and which widgets would be most useful for HA people. The community catalog is small but growing and PRs for new widgets are very welcome.
Disclaimer: built with AI assistance (Claude Code). All architecture decisions, code review, hardware testing, and the choice of what ships vs what doesn't are mine.






