The satisfying clack of a departure board, on your wall.

An open-source ecosystem for building and driving mechanical split-flap displays — and virtual ones too. Clocks, weather, transit, sports scores, messages: gateway firmware, module firmware, and a companion app that make it all work together.

How it fits together

One system, five projects

Physical split-flap modules sit on an RS-485 bus behind an ESP32 gateway. The gateway exposes a web dashboard, REST API and MQTT; the Companion app layers content on top — apps, playlists, schedules and triggers. Prefer no moving parts? The Matrix and LCD gateways render virtual flap modules on an RGB LED matrix or a touchscreen, speaking the exact same protocol.

Companion appContent: apps, playlists, schedules, triggers, multi-displayRECOMMENDED
SplitFlap GatewayESP32 bridge: web UI, REST, MQTT, provisioning & calibrationREQUIRED
Universal FirmwareOne binary for every ATtiny1616 module on the busREQUIRED*
Hardware modulesStepper motors, hall sensors, flaps — the clacking partREQUIRED*
Matrix / LCD Gateway*Virtual displays that replace physical hardware entirelyALTERNATIVE
The repositories

Projects

Everything is open source and documented in one shared wiki. Pick the pieces you need.

Gateway · ESP32-S3

SplitFlap Gateway

Firmware for the Waveshare ESP32-S3-RS485-CAN board that bridges your network to the module bus.

  • Web dashboard with discovery, provisioning & calibration for up to 255 modules
  • Live RS-485 bus monitor with protocol decoding
  • REST API (OpenAPI), MQTT with Home Assistant auto-discovery
  • OTA updates, quiet-time scheduling, 14 languages
avandeputte/SplitFlapGateway
Content · Python / FastAPI

Gateway Companion

The content brain: drives one or many gateways with apps, playlists, schedules and event triggers.

  • Built-in app library, compatible with splitflap-os apps; upload your own as .zip
  • Playlists, weekday schedules, triggers (weather alerts, ISS passes, game events)
  • Home Assistant add-on & HACS integration, Docker, Raspberry Pi one-liner
  • Vestaboard-compatible API and MCP server built in
avandeputte/SplitFlapGatewayCompanion
Module firmware · ATtiny1616

Universal Firmware

One identical binary for every module — identity is assigned at runtime, not flash time.

  • Automatic module discovery via serial-number broadcast
  • Per-flap calibration stored in EEPROM
  • Backward compatible with Adam G's original design
  • Python provisioning tool included
avandeputte/SplitFlapUniversalFirmware
Virtual display · HUB75

Matrix Gateway

A split-flap display with no split flaps: virtual modules with animated flips on an RGB LED matrix.

  • Up to 192 virtual modules on 64×32 → 256×64 panels
  • 237-flap reel: Windows-1252, colors, pictographs
  • Canvas API: pixel drawing, sprites, streaming animation
  • On-device effects — plasma, fire, matrix rain — plus audio-reactive visuals
avandeputte/MatrixPortalGateway
Virtual display · ESP32-P4

LCD Gateway

75 virtual modules rendered at 60 Hz on a 10.1″ touchscreen with Ethernet and PoE.

  • 1280×800 IPS panel, capacitive touch, hardware-accelerated rendering
  • Same protocol and REST API as physical hardware
  • Modern canvas path: raw frames, partial updates, transitions
  • Companion drives it with zero changes
avandeputte/SplitFlapGatewayLCD
Roots & relatives

Standing on shoulders

The module hardware and bus protocol come from Adam G Makes' original split-flap design. The app ecosystem grew out of csader's splitflap-os, which also works as an alternative content engine.

  • Original hardware design by Adam G Makes
  • splitflap-os apps run on the Companion
adamgmakes/SplitFlapDisplay
csader/splitflap-os
Plays well with others

Integrations

🏠

Home Assistant

Native add-on with sidebar app, HACS integration, and MQTT auto-discovery so your board shows up as a device.

🔤

Vestaboard-compatible API

Accepts Vestaboard character matrices and text messages, so existing third-party Vestaboard integrations just work.

🤖

MCP server

Model Context Protocol tools let Claude and other LLM clients read and write your display directly.

⚙️

REST & MQTT

Fully documented OpenAPI spec on both gateway and companion, plus optional MQTT for automation from anywhere.

From zero to clacking

Get started

Choose a configuration

Physical modules, LED matrix or LCD? The wiki's configuration guide helps you pick.

Flash the firmware

Flash the gateway (prebuilt binaries available) and, for physical builds, the module firmware.

Provision & calibrate

Discover modules on the bus, assign positions, and fine-tune flap alignment from the web dashboard.

Add content

Install the Companion and set up apps, playlists and schedules — or write your own app.