MeshCore MQTT Live Map
Monitoring / Management 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.
- Maintainer
- yellowcooln ↗
- Kind
- Monitoring & Management
- Maturity
- Stable
- Languages
- Python JavaScript
- Licensing
- Open source
- Latest version
- 1.9.4 · 2026-07-08
- License
- GPL-3.0-only
- Platforms
- Docker Web
Screenshots
Capabilities
Interfaces
- ✓ Web
- ✓ API
- ✓ Headless
Connections
- ✓ MQTT
- ✓ WebSocket
- ✓ HTTP
Capabilities
- ✓ Monitoring
- ✓ Telemetry
- ✓ Packet analysis
- ✓ Mapping
Install
Releases
from GitHub · updated 2026-07-08v1.9.4 # Latest 12 days ago · 2026-07-08 19:37 UTC
This release improves route analysis for upgraded meshes, expands CoreScope integration, and fixes several deployment and UI issues that could prevent new features from appearing after updates.
Highlights
Route & History Improvements
Route and Route History path-byte filters now support multi-select checkboxes, allowing combinations such as 2-byte + 3-byte paths instead of a single selection.
Route Details now displays the correct 2-byte and 3-byte hop prefixes for multibyte paths.
Route History now records path-byte metadata for newly ingested routes, enabling byte-specific filtering while All continues to include older history entries.
Added configurable default route/history filters with:
ROUTE_BYTE_FILTER_DEFAULTHISTORY_BYTE_FILTER_DEFAULT
Share links now preserve route-byte selections using parameters such as:
route_bytes=2b,3b
CoreScope Integration
- Route Details can now link directly to CoreScope node pages using
CORESCOPE_URL. - Packet links automatically fall back to CoreScope packet pages when a packet analyzer is not configured.
Map & UI Improvements
Added an optional blocked-name filter to hide nodes containing:
- ⛔
- 🛑
- 🚫
Hidden nodes are excluded from snapshots, trails, routes, and history-related map views.
Added search and filtering to the Peers panel, allowing peers to be filtered by:
- Name
- Public key prefix
- Role
Visible peer links stay synchronized with the filtered results.
Fixes
- Fixed duplicate-node cleanup so stale records no longer render over newer active nodes.
- Hardened HTML/template handling to prevent stale placeholders from breaking History or CoreScope links after updates.
- Fixed Discord/OpenGraph previews for
/map?lat=...&lon=...links so they generate preview images just like root map shares.
Docker & Deployment
Docker publishing now runs on dev pushes in addition to releases.
Development builds now publish:
devlatest- Short-SHA tags
This makes keeping development deployments up to date significantly easier.
Operator Notes
New Environment Variables
CORESCOPE_URLBLOCKED_NAME_SYMBOL_FILTER_ENABLEDROUTE_BYTE_FILTER_DEFAULTHISTORY_BYTE_FILTER_DEFAULT
If you use bind-mounted overrides, make sure those files are updated as well. Stale mounted files (such as
app.py) can override the updated application code and prevent new features and fixes from appearing after upgrading. **What's Changed
- v1.9.4: route tools, satellite map, privacy policy, and dev publishing by @yellowcooln in https://github.com/yellowcooln/meshcore-mqtt-live-map/pull/76
Full Changelog: https://github.com/yellowcooln/meshcore-mqtt-live-map/compare/v1.9.3...v1.9.4
v1.9.3 # 1 month 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 # 2 months 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
Project signals
- GitHub stars
- 78
- Forks
- 14
- Watchers
- 1
- Open issues
- 0
- Contributors
- 8
- Release downloads
- 0
- 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.