SELF-HOSTED DASHBOARD SERVER

A self-hosted dashboard platform for e-paper displays.

Build dashboards in your browser, render them server-side, and deploy them to Kindles, ESP32 displays, Raspberry Pis, TRMNL hardware, and custom e-paper devices.

AGPL-3.0-or-later · No telemetry · No cloud account required

A weather dashboard on a portrait e-ink panel
A task board on an e-ink panel
A morning dashboard on a wall-mounted e-ink panel
Waveshare 7.3
143GitHub stars
16Panels supported
MQTT + RESTTransports
1,140Passing tests
100%Self-hosted
ZeroTelemetry

Editor

Compose in the browser

Drag, snap, preview — then push to any panel.

Architecture

How it actually works

A single Tesserae server drives Raspberry Pi, ESP32, Kindle, TRMNL and custom clients at the same time. Compose once; it renders server-side and fans frames out over MQTT or REST.

Browser editorcompose · preview
Tesserae serverrenders dithered frames
Raspberry Pi
ESP32
Kindle
TRMNL
Any Linux

Supported hardware

One server, many panels

Verified across the major e-ink families — with more on the bench. Add your own with a small adapter.

Hardware guide
PanelResolutionStatus
Seeed StudioTRMNL BYOS protocol

All E Series and DIY Kit models share the TRMNL BYOS protocol. Pending rows mean hardware-side confirmation on Tesserae’s render path is in progress.

reTerminal E1001800×480Pending
reTerminal E1002800×480Pending
reTerminal E10031404×1872Verified
reTerminal E10041200×1600Pending
TRMNL 7.5" OG DIY Kit800×480Verified
XIAO 7.5" ePaper Panel800×480Pending
Pimoroni Inkypi-png / pi-bin
Inky Impression 4"640×400Pending
Inky Impression 5.7"600×448Verified
Inky Impression 7.3"800×480Verified
Inky Impression 13.3"1600×1200Verified
Inky pHAT / wHATvariousVerified
Waveshare 13.3" Spectra 61200×1600Verified
Waveshare 7.3" PhotoPainter800×480Verified
Waveshare 4.2" B/W400×300Pending
TRMNL OG800×480Verified
TRMNL X1872×1404Pending
Kindle Paperwhite 2 (jailbroken)758×1024Verified

Anything else: pick custom in Settings → Panel and set the dimensions. Statuses reflect real-hardware verification.

Gallery

Dashboards people actually run

Weather, transit, home status, dev metrics, now-playing — composed in the browser and rendered to crisp e-ink frames.

community templates · click to enlarge

Why it exists

One rendering layer for every e-paper display

Tesserae wasn't built to compete with existing dashboard ecosystems. It solves a specific problem: how do you drive any e-paper display from a single, self-hosted system? Most projects optimise for one device family or one vendor — Tesserae takes a protocol-first approach instead.

  1. 01Compose dashboards visually in the browser.
  2. 02Render layouts server-side.
  3. 03Deliver updates over MQTT or HTTP.
  4. 04Drive several classes of display hardware at once.

Self-hosted first

Runs entirely on infrastructure you control. No accounts, subscriptions, or mandatory cloud services.

Hardware agnostic

A single server drives Raspberry Pi panels, ESP32 devices, Kindles, TRMNL hardware, and custom clients at the same time.

Protocol driven

Rendering, transport, and display hardware are separate concerns. MQTT and HTTP let clients with very different capabilities coexist.

Extensible

New tiles, renderers, transports, and device clients can be added without changing the core architecture.

Built for experimentation

Designed for unusual hardware, custom firmware, prototypes, and one-off projects as well as polished installs.

Instead of asking “what dashboard should I run on this display?”Tesserae asks how one ecosystem can support every display.

That decision drives nearly every architectural choice in the project.

Designed for
  • Home Assistant users
  • Makers
  • E-paper enthusiasts
  • Self-hosters
  • Hardware hackers
  • Digital-signage builders
01
Compose

Lay out widgets in the browser editor.

02
Render

The server rasterizes a dithered frame for the panel.

03
Push

Send it over MQTT or REST to the panel.

04
Paint

The display refreshes. Done.


Built for hackers

Everything is yours to run, read, and extend

No accounts, no black boxes. The rendering pipeline, transports, and device clients are all open and swappable.

Read the source on GitHub

Install

Self-host in under a minute

One container — or a one-line script, a Home Assistant App, an LXC container, or straight from source. Open the UI, set a password, and start composing.

  • No account required
  • No cloud required
  • No telemetry
  • One container
  • Runs anywhere
Full install guide in the docs
mkdir ~/tesserae && cd ~/tesserae
curl -fsSLO https://raw.githubusercontent.com/dmellok/tesserae/main/docker-compose.yml
docker compose up -d