๐ Version 1.10.0: TCP Streaming Architecture
This is a major architectural upgrade that replaces HTTP polling with native TCP streaming for significantly improved performance and reliability.
โก Major Changes
TCP Streaming Protocol
MeshMonitor now connects directly to Meshtastic devices using their native TCP streaming protocol (port 4403), replacing the previous HTTP polling implementation.
Benefits:
- ๐ฏ ~90% bandwidth reduction - No HTTP overhead
- โก Instant message delivery - Event-driven, not polling-based
- ๐ Lower latency - TCP push model vs 2-second poll interval
- ๐ More reliable - Automatic reconnection with exponential backoff
- ๐ป Lower CPU usage - Event-driven vs continuous polling
Implementation Details
- Event-driven architecture using Node.js EventEmitter
- 4-byte frame protocol:
[0x94][0xc3][LENGTH_MSB][LENGTH_LSB][PROTOBUF_PAYLOAD] - Automatic reconnection: 1s โ 2s โ 4s โ 8s โ 16s โ 30s (max 10 attempts)
- Robust frame parsing with corruption recovery
- All 147 tests passing
Integration Options
The TCP implementation enables multiple connection scenarios:
1. Direct TCP (WiFi/Ethernet nodes) โ
MeshMonitor โ TCP:4403 โ Meshtastic Node
2. meshtasticd Proxy (BLE/Serial nodes) โ
MeshMonitor โ TCP:4403 โ meshtasticd โ BLE/Serial โ Meshtastic Device
3. HomeAssistant Integration โ
MeshMonitor โ TCP:4403 โ HomeAssistant โ Meshtastic
4. Custom Proxies โ
Any proxy implementing the Meshtastic TCP protocol is compatible.
๐ Documentation Updates
Comprehensive documentation overhaul for the TCP refactor:
- โ New "Getting Started" section with copy-paste deployment commands
- โ meshtasticd integration instructions for BLE/Serial devices
- โ TCP protocol technical details and frame format documentation
- โ Updated architecture diagrams and explanations
- โ Integration scenarios documented
- โ Historical context preserved in MESHTASTICD_ANALYSIS.md
๐ง Configuration Changes
Updated Environment Variables
# Old (HTTP - removed)
MESHTASTIC_USE_TLS=false
# New (TCP)
MESHTASTIC_TCP_PORT=4403 # Default port for Meshtastic TCPBackward Compatible
Existing MESHTASTIC_NODE_IP configuration works unchanged. Simply update your environment to use the new TCP port variable.
๐ฆ Docker Deployment
Pre-built images available on GitHub Container Registry:
docker pull ghcr.io/yeraze/meshmonitor:1.10.0
# Or use latest
docker pull ghcr.io/yeraze/meshmonitor:latestQuick start:
export MESHTASTIC_NODE_IP=192.168.1.100
export MESHTASTIC_TCP_PORT=4403
docker compose up -d๐ meshtasticd Integration
Connect to BLE or Serial devices via meshtasticd:
# For BLE devices
meshtasticd --ble-device "Meshtastic_1234"
# For Serial devices
meshtasticd --serial-port /dev/ttyUSB0
# Point MeshMonitor to meshtasticd
export MESHTASTIC_NODE_IP=localhost
docker compose up -d๐งช Testing
- โ All 147 automated tests passing
- โ Production validated with 140+ node mesh network
- โ 24+ hours stable operation
- โ No regressions in existing features
๐ Pull Requests
๐ Acknowledgments
This refactor was analyzed, implemented, and documented with Claude Code.
Full Changelog: v1.9.3...v1.10.0
๐ MeshMonitor v1.10.0
๐ฆ Installation
Docker (recommended):
docker run -d \
--name meshmonitor \
-p 8080:3001 \
-v meshmonitor-data:/data \
ghcr.io/Yeraze/meshmonitor:v1.10.0๐งช Testing
โ
All tests passed
โ
TypeScript checks passed
โ
Docker images built for linux/amd64, linux/arm64, linux/arm/v7
๐ Changes
See commit history for detailed changes.