Back to projectsOpen Source

Flipper - Display server for TRMNL e-ink devices

Self-hosted Go server that drives TRMNL e-ink displays — no cloud, no subscription, one binary.

github.com/olivere/flipper

GoePaperTRMNL

Flipper is a self-hosted display server for TRMNL e-ink devices, written in Go. Point a device at Flipper and it serves images from a local directory — resized, dithered, and encoded for the panel. Everything runs on the local network: no cloud account, no subscription, a single binary.

From image folder to device fleet

Drop images into a directory and Flipper handles the rest. Beyond static images, built-in screens render weather, Hacker News, and news headlines programmatically. Playlists control what shows when — globally or per device.

  • Supports TRMNL OG (800×480, B&W) and TRMNL X (1872×1404, 16-level grayscale), detected automatically from device headers
  • Playlists with per-entry duration and parameters; each device can be assigned its own
  • Device registry with telemetry: firmware version, battery, WiFi signal strength
  • One-shot, model-matched firmware updates (OTA) straight from the CLI

Deliberately simple

The design follows the Go standard library, not a framework. Device state lives in a JSON file, processed images in memory, and TLS works out of the box with an auto-generated self-signed certificate — TRMNL devices require HTTPS.

  • Single binary, TOML config, environment variable overrides
  • No database, no external runtime dependencies
  • HTTPS by default, self-signed certificate with local IPs baked in
  • MIT licensed