MeshCore MQTT Live Map
Tool StableSelf-hosted real-time MeshCore traffic map that decodes MQTT packet feeds and visualizes nodes, routes, peers, activity heat, coverage, line-of-sight and propagation data in an installable web app.
Screenshots
Details
- Kind
- Tools
- Maturity
- Stable
- Maintainer
- yellowcooln
- Languages
- python, javascript
- Licensing
- Open source
- License
- GPL-3.0-only
- Latest version
- 1.9.3 · 2026-06-09
Capabilities
Platforms
Interfaces
Connections
Capabilities
Install
Releases
from GitHub · updated 2026-06-23v1.9.3 # Latest 15 days ago · 2026-06-09 00:32 UTC
This release focuses on security hardening and dependency maintenance.
Security
- Fixed issue #74 by hardening frontend rendering against stored-XSS style payloads from untrusted MeshCore/MQTT fields.
- Node names, peer names, route labels, search results, permanent labels, node popups, Peers rows, Route Details, History popups, and Coverage popups now escape displayed HTML before rendering.
- Map behavior is unchanged: public keys, coordinates, QR payloads, copy actions, route handling, peer selection, and filters continue using the original data.
Maintenance
- Updated backend dependencies:
fastapi==0.136.3uvicorn[standard]==0.49.0httpx==0.28.1
- Added
httpx2==2.3.0for dev tests so FastAPI/StarletteTestClientruns without the deprecated-httpxwarning.
Testing
98 passed, 2 skipped
What's Changed
- Harden frontend rendering and update to release version 1.9.3 by @yellowcooln in https://github.com/yellowcooln/meshcore-mqtt-live-map/pull/75
Full Changelog: https://github.com/yellowcooln/meshcore-mqtt-live-map/compare/v1.9.2...v.1.9.3
v1.9.2 # 27 days ago · 2026-05-28 02:14 UTC
v1.9.2 - Route History Fixes, LOS Coordinates, and Peers Panel Cleanup
Highlights
This release fixes Route History disable behavior, improves LOS point entry, and cleans up the Peers panel with feedback from the community.
Added
Added direct latitude/longitude entry to the LOS panel Related: #71
Added per-pin LOS height input for above-ground-level values Related: #71
Added
PEERS_DEFAULT_OPEN=falseso admins can choose whether the Peers tool starts active on page load Related: #72Added a MQTT-only filter beside the MQTT online legend item
Shows only MQTT-online nodes
Hides:
- Non-MQTT markers
- Trails
- Routes
- Hop markers
- Route details
- Peer lines
Does not save to browser storage
Is not included in share links
Changed
Improved LOS point editing so pins can be:
- Added
- Selected
- Dragged
- Updated directly from the coordinate editor Related: #71
Kept LOS and Propagation as separate tools so obstruction checks and RF coverage planning remain independent workflows Related: #71
Reworked the Peers panel layout based on ideas and testing from Stormlove / @beachmiles Related: #72
Moved Clear peers into the Peers panel header beside Minimize Related: #72
Updated the Peers panel title to use the selected node name, with the 24h window displayed underneath Related: #72
Updated Incoming/Outgoing headings to display:
- Rx/Tx packet totals
- Unique peer counts
- Blue/purple line hints
Updated peer row stats to display:
- Count
- Percent
- Distance
Tuned Peers panel scrolling so long peer lists scroll inside capped Incoming/Outgoing sections instead of forcing the full panel height on mobile Related: #72
Fixed
Fixed Docker Compose deployments not passing Route History environment variables into the container Related: #68
Fixed
ROUTE_HISTORY_ENABLED=falseso it now fully disables:- History button
- History panel
/snapshothistory payloads- WebSocket history payloads
- Route-history file growth from live traffic
Fixed Peers counts going empty when Route History was disabled and older history buckets expired Related: #68
Peers now use dedicated rolling peer-history buckets, so peer counts continue updating from live routes even when Route History is disabled Related: #68
Credits
Thanks to Stormlove / @beachmiles for the Peers panel cleanup ideas, testing, and follow-up feedback in #72.
What's Changed
- fix route history env passthrough by @yellowcooln in https://github.com/yellowcooln/meshcore-mqtt-live-map/pull/70
- Enhance peers panel and fix related issues in v1.9.2 by @yellowcooln in https://github.com/yellowcooln/meshcore-mqtt-live-map/pull/73
Full Changelog: https://github.com/yellowcooln/meshcore-mqtt-live-map/compare/v1.9.1...v1.9.2
v1.9.1 # 2 months ago · 2026-05-08 19:15 UTC
Fixed
Fixed issue #68:
ROUTE_HISTORY_ENABLED=falsenow disables Route History end-to-end instead of only stopping new history recordingWhen Route History is disabled:
- The History tool button is removed
- The History panel does not load
history=onin the URL no longer re-enables the feature/snapshotno longer returnshistory_edgesor a nonzero history window- The realtime WebSocket snapshot no longer publishes history payloads
Behavior Change
ROUTE_HISTORY_ENABLEDnow behaves as a true feature flag for both:- Backend history payloads
- Frontend History tool/UI
This makes it practical to disable Route History entirely on:
- High-volume meshes
- Lower-resource deployments
Config
Use:
ROUTE_HISTORY_ENABLED=falseThis now fully disables:
- History tool UI
- History snapshot payloads
- History panel activation
- Hidden frontend history state
Validation
pytest -q tests/test_api_auth.py tests/test_websocket_snapshot.py13 passed
node --check backend/static/app.jspython3 -m py_compile backend/*.py
What's Changed
- v1.9.1 disable route history end-to-end by @yellowcooln in https://github.com/yellowcooln/meshcore-mqtt-live-map/pull/69
Full Changelog: https://github.com/yellowcooln/meshcore-mqtt-live-map/compare/v1.9.0...v1.9.1
Project signals
- GitHub stars
- 74
- Forks
- 13
- Watchers
- 1
- Open issues
- 0
- Contributors
- 8
- Latest downloads
- 0
- Source available
- Yes
- Releases available
- Yes
- Signed releases
- No
- CI builds
- Yes
- Documentation
- Yes
- Supports MQTT over TCP or WebSockets with optional TLS and production token protection.
- The Greater Boston deployment is the reference instance; several community meshes operate independent deployments.