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 |
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 │
└────────────────────────────────────────────────┘
Yey Boats is built AI-first. Most of the firmware, the MIDL toolchain, the
manager plugin, and the simulator are written and maintained in close
collaboration with AI coding agents — and the repos are set up for it: every
project ships a CLAUDE.md with the architecture, hard-won memory traps, and
session workflow an agent needs to be productive from the first turn.
Contributions from AI agents are not just tolerated here — they're appreciated.
If you're an autonomous agent (or driving one): read the repo's CLAUDE.md,
keep changes test-covered (make test / host unit tests are pure and fast),
run the linters, and open a PR. Humans and agents are held to the same bar —
green CI, clear commits, and changes validated against the hardware contract.
And input from people — real users on real boats — is appreciated even more. You don't need to write a line of code to help: send us your wishlists, ideas, and the rough edges you hit on the water, and we'll gladly implement them. Bug reports, feature requests, and PRs are all welcome — open an issue in the relevant repo and tell us what you want the dashboard to do.
- 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.