# tesserae

> Self-hosted, open-source server for e-ink wall dashboards: compose pages in a browser, render them headlessly, push frames over MQTT or REST. Home Assistant friendly.

- **Category:** Dashboard
- **Licence:** AGPL-3.0
- **Latest version:** v0.480.0
- **Open source:** oss
- **Languages:** JavaScript, Python, HTML, CSS
- **Platforms:** Docker, Windows, macOS, Proxmox, Home Assistant, Build from Source
- **Tags:** Dashboard, Raspberry Pi, Mqtt, Esp32, Widgets, Home Assistant, Koreader, Self Hosted, Smart Home, E ink, Tesserae, E Paper, Epaper, Trmnl

## Description

Tesserae is a self-hosted server that feeds dashboards to e-ink panels around the home. Pages are built in a browser editor — widget grids or pixel-precise free canvases — and every frame is produced on the server: headless Chromium captures the composition at the display's own resolution, then a per-device renderer applies Floyd-Steinberg dithering calibrated to measured panel palettes and packs the result into the byte layout that controller expects. Battery panels poll over REST while always-on clients take pushed MQTT frames, so one installation can run a fleet of screens, each rotating through its own schedule. About 37 widgets ship included (Open-Meteo weather, clock faces, calendar views, Hacker News / Reddit / RSS / Wikipedia feeds, many Home Assistant tiles, GTFS transit boards, NASA APOD, photo galleries, todo lists, a generic webpage embed), and community extras come from a reviewed catalog with checksum-verified installs. Every extension point — widgets, themes, render pipeline, transports, device drivers — is a folder you drop in; an MCP endpoint lets AI agents design a page, check a preview render, and send it to a screen. Run it with one docker compose up from the official ghcr.io image, as a one-click Home Assistant App, or via shell and PowerShell installers covering macOS, Linux, Pi and Windows machines (a systemd setup script is included); LXC and manual venv paths are documented too. First-party online contact — version checks, an anonymous install counter and a daily aggregate ping — is opt-in and off by default. Caveats: it is pre-1.0, the image is heavy (~2.5 GB unpacked, it bundles Chromium), the built-in broker tops out at MQTT v3.1.1, and third-party widgets run in-process under a socket-level egress allowlist rather than a true sandbox. A separate hosted Tesserae Cloud (waitlist, paid plans) exists; the self-hosted server is the full product, free under AGPL-3.0-or-later.

## Links

- [Homepage](https://github.com/dmellok/tesserae)
- [Website](https://tesserae.ink)
- [Docker](ghcr.io/dmellok/tesserae)
- [GitHub discussions](https://github.com/dmellok/tesserae/discussions)
- [Documentation](https://docs.tesserae.ink/)
- [Discord](https://discord.gg/6qmwkGhGR7)
- [Widget community catalog](https://tesserae.ink/catalog/)
- [Browser firmware flasher](https://tesserae.ink/flash)

---
Source: https://selfhost.directory/project/tesserae