A source-available stack that turns cheap ESP32 touch panels into a SignalK glass cockpit — authored once, validated against the hardware, and rendered everywhere.
Marine multi-function displays are expensive, closed, and frozen: the screens are hardcoded in firmware, so changing a layout means a new build and a trip to the chandlery. Meanwhile a $30 ESP32-S3 touch panel has a brighter screen than a lot of dedicated chartplotters.
Yey Boats started as a single firmware that rendered live SignalK data on a Sunton ESP32-4848S040, and grew into a small ecosystem around one idea:
Describe a boat dashboard once, know it will work on the target before you send it, and render it on the instrument, in the browser, and (soon) on phones and watches.
That idea is now four cooperating projects — a language for dashboards, the firmware that draws them, a manager plugin that flashes and configures every display on the boat from the SignalK console, and a physics simulator that feeds the whole thing realistic Adriatic sailing data so none of it needs a wet boat to develop against.
| Project | What it is | Stack | Activity |
|---|---|---|---|
| 🧭 instruments | The MFD firmware. LVGL 9 glass-cockpit UI, SignalK WebSocket client, WiFi/BLE provisioning, ArduinoOTA. | C++ / Arduino / PlatformIO | |
| 📐 midl | Marine Instrument Definition Language — declarative JSON/YAML dashboards, validated against each device's capability manifest. | TypeScript | |
| 🛠️ Instruments-manager | SignalK server plugin + webapp to discover, register, configure, and OTA-update every display on the boat. | Node.js / JavaScript | |
| 🌊 simulator | Physics-accurate Adriatic sailing simulator (Beneteau Oceanis 45) with pluggable SignalK / stdout / NMEA sinks. | Python |
navigator-tg-bot(private, a Telegram demo bot) and.github(this repo, org infra) are two more repos in scope for org automation — see the triage playbook — but are excluded from the public roster above.
All badges above are live — they query the GitHub API through shields.io on every page load, so the counts, languages, and "last commit" stamps update on their own as the repos move.
Roughly 75k lines of code across ~190 commits, in four languages, all speaking one protocol (SignalK) and one dashboard format (MIDL).
author a dashboard develop without a boat
┌──────────────┐ ┌──────────────┐
│ MIDL │ │ simulator │ Oceanis 45 physics
│ (the lang) │ │ (fake telem) │ → SignalK frames
└──────┬───────┘ └──────┬───────┘
│ validate vs device │
│ capability manifest ▼
▼ ┌──────────────┐
┌──────────────┐ register / OTA │ SignalK │
│ manager │◀──────────────────▶│ server │
│ (SK plugin) │ push layout └──────┬───────┘
└──────┬───────┘ │ WebSocket
│ config + firmware ▼
▼ ┌──────────────┐
┌────────────────────────────────────────────────┐
│ instruments (ESP32-S3 firmware) │
│ LVGL glass-cockpit ◀── live boat state │
└────────────────────────────────────────────────┘
- Just want to see it? Spin up the simulator against a local SignalK server — no hardware required.
- Have a panel? Flash instruments
(
make build && make flash) and provision it over WiFi/BLE. - Running a boat network? Install the manager plugin in SignalK to manage every display from one console.
- Designing screens? Read the MIDL spec.
Every project is source-available under PolyForm Noncommercial 1.0.0 — free for personal, research, and educational use. Commercial use requires a separate license; contact rights@yey.boats.