Sestriere
Client BetaNative Haiku OS MeshCore client with encrypted messaging, voice, images, topology and geographic maps, packet analysis, telemetry, repeater administration and an optional MQTT bridge.
Screenshots
Details
- Kind
- Clients
- Maturity
- Beta
- Maintainer
- atomozero
- Language
- cpp
- Licensing
- Source available
- Latest version
- 1.8 · 2026-03-15
Capabilities
Platforms
Interfaces
Connections
Capabilities
Node roles
Install
Releases
from GitHub · updated 2026-06-23v1.8 # Latest 3 months ago · 2026-03-15 22:33 UTC
Sestriere 1.8.0
Native MeshCore LoRa mesh client for Haiku OS.
New features
- Voice messages — push-to-talk via Codec2, compatible with meshcore-sar (Alphaaaaa)
- Image sharing — color WebP over LoRa with chunked transfer and drag-and-drop
- SAR markers — search and rescue pin display in chat and geographic map
- Line-of-Sight analysis — terrain profile between nodes via Open-Meteo elevation API
- Multi-companion support — switch radios without mixing data, DB partitioned per device
- Contact groups and muting — organize sidebar, silence notifications per contact/channel
- Serial Monitor — CLI terminal for repeaters and standalone devices
Improvements
- Telemetry dashboard redesigned with card-based layout
- Mission Control: Ping All, Trace Route quick actions
- Geographic map: zoom/pan/tile state persisted across sessions
- Deskbar replicant: lightweight add-on with Send Advert shortcut
- Inline emoji rendering via Twemoji
- Tile cache: corrupt PNG auto-recovery, 50 MB LRU eviction
- Database: incremental vacuum after pruning, WAL fallback for Haiku compatibility
- 56 automated tests (make test)
Bug fixes
- Fixed thread safety in child window access and database singleton
- Fixed protocol compliance: full 32-byte pubkeys, frequency in kHz, V3 SNR offsets
- Fixed GIF cache miss, image buffer overread, delivery status tracking
- Fixed memory leaks in BMessageRunner and GIF picker threads
- Replaced VLAs and non-reentrant libc calls (localtime_r, strlcpy)
v1.7 # 4 months ago · 2026-03-06 20:49 UTC
Sestriere 1.7 "Marconi"
Native MeshCore LoRa mesh client for Haiku OS
Sestriere is a native Haiku application for communicating over LoRa mesh networks via MeshCore-compatible radios. It provides a Telegram-style interface with real-time messaging, network visualization, telemetry dashboards, and a Wireshark-style packet analyzer — all built with the Be API.
What's new in 1.7
GIF Sharing — Send and receive animated GIFs via GIPHY. The built-in picker shows animated thumbnails in a grid, and only the short GIF ID travels over LoRa (zero overhead). Fully compatible with meshcore-open (Flutter).
Emoji Rendering — Unicode emoji displayed as color PNG sprites with proper alpha blending over chat bubbles.
Image Sharing — Send photos over LoRa using chunked transfer. Images are compressed, transmitted in fragments, auto-fetched on the receiving end, and displayed inline in the chat.
SAR Markers — Search and Rescue markers (meshcore-sar protocol) parsed and displayed in chat and on the geographic map.
OpenStreetMap Tiles — The geographic map now shows real OSM tiles with offline caching, plus world coastline rendering.
Delivery Queue — Messages now use a FIFO queue with automatic retry and clear status (Pending, Sent, Confirmed, Failed).
Ping All — Ping every contact in one click to check who's online.
UI Polish — Compact default layout, flexible panel resizing, contact filter state (Chat/Repeater/Room) persisted across restarts.
Requirements
- Haiku OS R1/beta5 or later (x86_64)
- MeshCore-compatible LoRa radio with USB serial
- pkgman install mosquitto sqlite curl giflib
Feedback and bug reports welcome!
v1.4 # 4 months ago · 2026-02-22 13:41 UTC
Solid as Alpine granite — a stability and code quality release.
No flashy new features this time. Instead, we went deep under the hood to rebuild the foundations for what comes next.
Architecture
- Protocol parsing extracted from MainWindow into a dedicated ProtocolHandler class
- Common utilities consolidated into Utils.h: FormatUptime, FormatTimeAgo, ParseHexPrefix, FormatContactKey
- All magic numbers replaced with named constants across the entire codebase
- Dead code removed: legacy MqttSettingsWindow, StatusBarView, unused message codes
Security
- Hardcoded credentials removed from source
- All database queries migrated to parameterized prepared statements
- User input validated before all protocol operations
- Bounds checks on every incoming protocol frame
Thread Safety
- DatabaseManager singleton protected with mutex
- Child window access guarded by new _LockIfVisible() helper
- MQTT connect/disconnect race condition fixed
- BMessageRunner lifecycle hardened: always NULL after delete, no use-after-free
Protocol Bug Fixes
- CMD_REMOVE_CONTACT and CMD_RESET_PATH now send full 32-byte public key (was 6-byte, causing silent failures)
- CMD_SET_RADIO_PARAMS sends frequency in kHz as V3 spec requires (was Hz)
- Packet Analyzer V3 message text offsets corrected
- localtime() replaced with reentrant localtime_r() throughout
- strtok() replaced with thread-safe strtok_r()
- Blocking snooze() removed from LoginWindow UI thread
UX Polish
- All windows centered on screen (or on parent) instead of hardcoded pixel positions
- Mission Control cards gracefully truncate long text in narrow windows
- MQTT password field with show/hide toggle
- Theme-aware Stats Window using system colors
- Reduced minimum sizes for Telemetry and Packet Analyzer to fit smaller screens
- Unified battery percentage formula across all views
Project signals
- GitHub stars
- 33
- Forks
- 0
- Watchers
- 2
- Open issues
- 13
- Contributors
- 2
- Release downloads
- 35
- Latest downloads
- 12
- Source available
- Yes
- Releases available
- Yes
- Signed releases
- No
- CI builds
- No
- Documentation
- Yes
- The repository does not currently declare an SPDX license.
- Requires Haiku system libraries plus Mosquitto, libcurl, giflib and Codec2.