Modern web interface for Meshtastic mesh network management
Features β’ Quick Start β’ API β’ Technologies
| Feature | Description |
|---|---|
| π Connection | Serial (USB), TCP (WiFi), and BLE (Bluetooth) to Meshtastic nodes |
| π¬ Chat | Channels and direct messages with delivery confirmation (β ββ) |
| π Node List | All mesh nodes with telemetry (battery, SNR, position) |
| πΊοΈ Network Map | Interactive map visualization of all nodes |
| π€οΈ Traceroute | Message route visualization between nodes |
| πΎ History | Messages stored in SQLite database |
| β‘ Real-time | WebSocket for instant updates |
| π Multilingual | Russian and English with switcher |
- Python 3.10+
- Node.js 18+
- Meshtastic node (optional for UI testing)
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python main.pyBackend will start at http://localhost:8000
cd frontend
npm install
npm run devFrontend will start at http://localhost:5173
To build a standalone .exe file:
# Run in project root
build.batOutput file: dist/MeshRadar.exe
For complete Docker setup and configuration guide, see DOCKER.md
Quick start:
docker-compose up -dThen open http://localhost:5173 and connect to your Meshtastic device through the UI.
Note: USB connection is optional. By default, Docker runs without USB device mapping. To enable USB, uncomment the
devicessection indocker-compose.yml.
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/connect |
Connect to node |
POST |
/api/disconnect |
Disconnect |
GET |
/api/status |
Connection status |
GET |
/api/ble-scan |
Scan BLE devices |
GET |
/api/nodes |
List of nodes |
GET |
/api/node/{id} |
Node information |
GET |
/api/channels |
List of channels |
POST |
/api/message |
Send message |
POST |
/api/traceroute/{id} |
Traceroute to node |
GET |
/api/messages |
Message history |
// Connection
ws://localhost:8000/ws
// Events (server β client)
{ type: "connection_status", data: { connected: boolean, ... } }
{ type: "message", data: { sender, text, channel, ... } }
{ type: "ack", data: { packet_id, status: "ack"|"nak" } }
{ type: "node_update", data: { id, user, position, ... } }
{ type: "traceroute", data: { route: [...], snr_towards: [...] } }π API Usage Examples
TCP Connection:
curl -X POST http://localhost:8000/api/connect \
-H "Content-Type: application/json" \
-d '{"type": "tcp", "address": "192.168.1.100:4403"}'Serial Connection:
curl -X POST http://localhost:8000/api/connect \
-H "Content-Type: application/json" \
-d '{"type": "serial", "address": "/dev/ttyUSB0"}'BLE Connection (scan first):
# Scan for available BLE devices
curl http://localhost:8000/api/ble-scan
# Connect to BLE device
curl -X POST http://localhost:8000/api/connect \
-H "Content-Type: application/json" \
-d '{"type": "ble", "address": "F4:12:FA:D0:45:AB"}'Note: BLE scanning may not work with all firmware versions. Known working versions: up to v2.7.14. If you experience issues with BLE scanning on firmware v2.7.15 or newer, consider downgrading to v2.7.14.
Send Message:
curl -X POST http://localhost:8000/api/message \
-H "Content-Type: application/json" \
-d '{"text": "Hello mesh!", "channel_index": 0}'
|
|
meshradar/
βββ backend/
β βββ main.py # FastAPI application
β βββ meshtastic_manager.py # Connection management
β βββ websocket_manager.py # WebSocket broadcast
β βββ database.py # SQLite operations
β βββ schemas.py # Pydantic models
β
βββ frontend/
β βββ src/
β β βββ components/ # React components
β β βββ hooks/ # React hooks
β β βββ store/ # Zustand state
β β βββ locales/ # i18n translations
β βββ package.json
β
βββ assets/ # README images
# Backend with hot-reload
cd backend && uvicorn main:app --reload
# Frontend with hot-reload
cd frontend && npm run dev
# Production build
cd frontend && npm run buildGPLv3 + Commons Clause Β© 2024
This project is licensed under GPLv3 with Commons Clause - see the LICENSE file for details.
Note: The Commons Clause means you can use, modify, and distribute this software freely, but you cannot sell it or offer it as a paid service.
If you find MeshRadar useful, please consider supporting its development:
Crypto donations:
- USDT TRC20:
TL2rEf6iNzhC9Mb2grm6S5iq5JrMxYDEZG - USDT TON:
UQDyYPHzm6tb4KbpLIMo-KEWC2PmPHnU2Zj4tndLg9O70-w8
Made with β€οΈ for Meshtastic community


