Introduction
What Is MeshDash?
MeshDash connects to a Meshtastic radio via Serial (USB), TCP (WiFi/LAN), or Bluetooth (BLE), then serves a web application and REST API on your local network. Everything runs on your own hardware. Your data stays local by default. Remote access is opt-in and controlled entirely by you.
The system is built on FastAPI (Python async web framework) with a SQLite database backend. A background APScheduler-based connection manager handles radio lifecycle, reconnection, and all packet processing.
Architecture
[ Meshtastic Radio ]
|
Serial / TCP / BLE
|
[ MeshDash Python Process ]
├── FastAPI ASGI App (uvicorn)
│ ├── REST API endpoints (/api/*)
│ ├── SSE stream (/sse)
│ ├── HTML page routes (/, /map, /settings …)
│ ├── Plugin router (/api/plugins/*)
│ └── Static frontend (/static/*)
│
├── MeshtasticConnectionManager (connection.py)
│ └── Reconnect loop with configurable retry/timeout
│
├── MeshtasticData (in-memory + SQLite)
│ ├── Packet deque (RAM buffer, configurable size)
│ ├── Node dict
│ └── DatabaseManager (WAL-mode SQLite)
│
├── Background Workers
│ ├── Packet processor (asyncio queue per slot)
│ ├── Stats broadcaster (every 10 s)
│ ├── Metrics saver (every 5 min)
│ ├── DB pruner (every 1 hr)
│ ├── Task scheduler (task_scheduler.py)
│ ├── Auto-reply engine (auto_reply.py)
│ ├── Telemetry monitor (monitor.py)
│ ├── C2 bridge worker (remote access)
│ ├── Plugin watchdog
│ └── Connection heartbeat logger
│
└── Plugin Engine
└── Loads /plugins/*/ with isolation & watchdog
Key Features
Serial, TCP, and BLE connection modes with automatic reconnection and per-node multi-slot support.
Battery, SNR, RSSI, channel utilisation, uptime, and environmental metrics tracked and graphed over time.
Send and receive messages to any node or channel, with ACK tracking and delivery status via DB.
Optional. Access your dashboard from anywhere via meshdash.co.uk — tiered access control, no port forwarding required.
Rules-based automated responses: contains, exact, or regex matching with per-sender cooldowns.
Drop a folder into /plugins/ to extend the API and UI. Watchdog, isolation, and hot-toggle supported.
Supported Platforms
| Platform | Status | Notes |
|---|---|---|
| Ubuntu / Debian | Supported | Primary target. Tested on 22.04+ |
| Raspberry Pi OS | Supported | Pi 3B+ or newer recommended |
| Windows (WSL2) | Supported | Ubuntu 22.04 inside WSL2. USB via usbipd |
| Docker | Supported | Official image: rusjpmd/meshdash-runner:latest |
| macOS / Windows native | Planned | Not yet officially supported |
Documentation Map
Use the sidebar to jump to any section. Pages are grouped by category:
Getting Started:
- Installation — automated installer, Docker, manual, and update process
- Configuration Reference — every key in
.mesh-dash_configwith types and defaults - Radio Connection — Serial, TCP, BLE, and WebSerial setup
- Connection Manager — health check timing, strike system, reconnect lifecycle
- Database Schema — every table and column in both SQLite databases
- Packet Source Detection — how RF vs MQTT is determined per packet
- Task Scheduler — cron evaluation, task execution, heartbeat internals
API Reference:
- API Authentication — JWT tokens, login flow, initial setup
- Core API Endpoints — all ~30 endpoints: status, nodes, packets, messages, SSE, console
- Tasks API — scheduled task CRUD
- Auto-Reply API — automated response rules, placeholders, bulk operations
- Telemetry Monitor API — threshold alerting over the mesh
- System & Config API — config R/W, updates, restart, multi-radio slot management
- Plugin API — full plugin lifecycle, manifest spec, install, logs, watchdog
- Web Serial API — server-side endpoints for browser USB bridge
- Remote Access (C2) — community map, access tiers, security protections
Frontend Guide:
- Frontend Architecture — SPA model, view loading, SSE dispatch, global state
- Topbar & Diagnostics — status widget, node inspector, toast, modals
- Web Serial Connection — browser USB direct mode, baud rate, wizard
- Overview View — node grid, KPI strip, sparklines, geocoding
- Messaging Views — Direct Messages and Channels, delivery tracking
- Map View — Leaflet map, styles, paths, neighbor links
- Analysis Tools — MeshShark (BPF, detail pane), Traceroute, Compare, Analytics
- Automation Views — Tasks, Auto-Reply, Monitor, Web Telemetry wizard
- System Views — Settings, Node Config protobuf editor, Plugins UI
- C2 Terminal — bottom CLI bar, version badge, command reference
Development & Support:
- Plugin Development — manifest, init_plugin context, routes, watchdog
- Troubleshooting — common problems and solutions including WebSerial and frontend