Physics-accurate Adriatic sailing boat simulator (Beneteau Oceanis 45) with pluggable output sinks.
pip install yey-boats-simulator
# SignalK (default), with automatic failover to SignalK@localhost then stdout
yey-boats-sim --signalk-host signalk-server --signalk-port 3000
# Local JSON to stdout, no server needed
yey-boats-sim --sink stdout --no-failover
# Docker
docker run --rm -e SIGNALK_HOST=signalk-server -v sim-data:/data \
ghcr.io/<org>/yey-boats-simulator:latest
| Env | CLI | Default | Meaning |
|---|---|---|---|
SIGNALK_HOST |
--signalk-host |
localhost |
SignalK server host |
SIGNALK_PORT |
--signalk-port |
3000 |
SignalK server port |
SIGNALK_USERNAME |
--signalk-username |
admin |
SignalK auth |
SIGNALK_PASSWORD |
--signalk-password |
admin |
SignalK auth |
AISSTREAM_API_KEY |
— | (empty) | Real AIS feed; synthetic traffic if unset |
SINK |
--sink |
signalk |
signalk / stdout / nmea0183* / nmea2000* |
SINK_FAILOVER |
--no-failover |
on | Failover chain signalk->localhost->stdout |
DATA_DIR |
--data-dir |
./run-data |
Writable dir for the depth cache |
* NMEA sinks are registered but not yet implemented (Phase C).
The engine builds a neutral telemetry frame each tick and hands it to the active sink. The default failover chain demotes SignalK -> SignalK@localhost -> stdout.
© 2026 Yey Boats Project. All rights reserved except as expressly licensed (see
NOTICE).
Source-available under the PolyForm Noncommercial License 1.0.0 (see
LICENSE). You may use, modify, and share it for any noncommercial
purpose — hobby, personal, research, education, and evaluation — at no cost.
Commercial use requires a separate commercial license. If you want to use
this in a product or service, or otherwise for commercial advantage, see
COMMERCIAL.md to obtain one. This is source-available, not an
OSI "open source" license.
Contributions are accepted under the Developer Certificate of Origin
(a Signed-off-by line), which lets the project offer the commercial license.