
MeshMonitor
Monitoring / Management StableSelf-hosted multi-protocol dashboard for monitoring and administering MeshCore, Meshtastic and MQTT networks, with unified maps, messaging, telemetry, automation, alerts and per-source access control.
- Maintainer
- Yeraze ↗
- Kind
- Monitoring & Management
- Maturity
- Stable
- Languages
- TypeScript JavaScript
- Licensing
- Open source
- Latest version
- 4.13.1 · 2026-07-20
- License
- BSD-3-Clause
- Platforms
- Docker Kubernetes Linux macOS NixOS Proxmox Windows Web
Screenshots
Capabilities
Interfaces
- ✓ Web
- ✓ GUI
- ✓ API
- ✓ Headless
Connections
- ✓ BLE
- ✓ Serial
- ✓ USB
- ✓ TCP
- ✓ MQTT
- ✓ HTTP
- ✓ WebSocket
Capabilities
- ✓ Messaging
- ✓ Contacts
- ✓ Channels
- ✓ Node configuration
- ✓ Remote administration
- ✓ Monitoring
- ✓ Telemetry
- ✓ Packet analysis
- ✓ Mapping
- ✓ Firmware update
- ✓ Automation
- ✓ Notifications
- ✓ Bridging
Node role
- ✓ Companion
- ✓ Repeater
Install
Releases
from GitHub · updated 2026-07-20v4.13.1 # Latest 5 hours ago · 2026-07-20 16:45 UTC
MeshMonitor v4.13.1
Building on 4.13's unified map core, this release adds a suite of Link Quality tools for the RF-minded, an early preview of several Meshtastic 2.8 features, and a broad round of map, MQTT, and messaging fixes.
Highlights: a Terrain Link Profile tool (elevation cross-section, Fresnel zone, and link-budget verdict) on Map Analysis; a per-node signal-trend / link-attenuation badge; Noise Floor on the Node Detail card; and position accuracy + location source surfaced in node popups. The Map Analysis toolbar is now icon-based with Show RF / UDP / MQTT transport toggles, and obscured markers offset intelligently by cell occupancy. On the 2.8 front (an early preview — 2.8 is not officially released yet, so this is built against the firmware development branch and is subject to change), MeshMonitor now decodes the XEdDSA signing shield, MeshBeacon packets, and the MEDIUM_TURBO preset. Also notable: telemetry requests now auto-recover from an upstream firmware NeighborInfo-hijack, a new noindex/robots.txt privacy toggle, and a gateway-aware MQTT Packet Monitor.
See the release blog post for the narrative walkthrough.
Link Quality & Terrain Link Profile
- Terrain Link Profile tool: elevation cross-section + Fresnel zone + link-budget verdict, auto-frequency by region, DEM-void handling, map-mirrored graph cursor (#4143, #4147, #4151, #4170, #4156)
- Derived signal-trend / link-attenuation badge per node (#4204)
- Noise Floor on the Node Detail quick-stats card (#4201)
- Position accuracy + location source in node popups, map & chat (#4188)
- Latitude/longitude/elevation shown as text in Node Info / Node Details (#4134)
Map Analysis
- Icon-based toolbar with labels in tooltips (#4171)
- Show RF / UDP / MQTT transport toggles (#4135)
- Occupancy-scaled, distance-capped obscured-node precision offset (#4164, #4168, #4181)
- "Discard invalid positions" setting, honored on ingest and render (#4158, #4182)
- Per-theme (light/dark) tileset preferences (#4118)
- Keep router short-name visible in Official pin style (#4184)
- Honor Default Map Center on Unified/Dashboard maps (#4128)
- Fixes: spiderfy opens the correct node (#4203), SNR overlay pins to merged marker (#4169), no route/heatmap render for marker-less or deleted nodes (#4167, #4175)
Meshtastic 2.8 — Early Preview
⚠️ Meshtastic 2.8 is not officially released. This support is built against the firmware development branch and is subject to change as 2.8 evolves.
- Pin 2.8-preview protobufs (
develop@ba16bfc) with a 2.7 TrafficManagement compat shim (#4205) - XEdDSA packet-signing shield in the Packet Monitor (#4209)
- MeshBeacon (
MESH_BEACON_APP) decode + firmware-verified preset channel names (#4207) - MEDIUM_TURBO modem preset + 2.8 opt-in FAQ (#4200)
MQTT
- Gateway-aware MQTT Packet Monitor — per-gateway reception capture + UI (#4127, #4138)
- Geo-ignore epic: fail-open geo filter, per-source ignore list, retroactive purge/sweep, observability (#4123, #4131, #4132, #4136)
- Route directed MQTT messages to the DM view, not their channel (#4161)
- Guard MQTT POSITION ingestion against Null Island fixes (#4150)
Messages, Nodes & Automation
- Auto-retry telemetry requests hijacked by the firmware NeighborInfo behavior (#4214)
- Stop unsynced-clock nodes rendering chat at ~1970 (#4208)
- MeshCore own-node messages show name, not public key (#4197)
- Short name shown alongside long name on message senders (#4196)
- "Message anyway" override for unmessageable nodes (#4187), and clearer hidden-composer messaging (#4140)
- Remote-admin (non-local) reboot target for the device-reboot automation (#4186)
- Compose draft scoped per-conversation (#4185)
- Reliably un-hide nodes from the map across sources (#4141)
- Traceroute no longer sends on a DISABLED channel slot (#4180)
- Reject precision-obscured Null Island fixes on ingest (#4149)
…
v4.13.1-rc4 # Pre-release 1 day ago · 2026-07-19 13:15 UTC
MeshMonitor v4.13.1-rc4
⚠️ Pre-release (release candidate). This build is for testing ahead of the v4.13.1 stable release. Not recommended for production deployments.
This fourth release candidate continues the Meshtastic 2.8 readiness work and lands a mix of node-detail and map improvements on top of rc3. It adds a
noIndexEnabledprivacy toggle so a publicly-exposed dashboard can serveX-Robots-Tag: noindex, nofollowheaders plus a disallow-all/robots.txt(belt-and-suspenders for Cloudflare-tunnel setups that strip custom headers). On the 2.8 front, it decodesMESH_BEACON_APPwith firmware-verified preset channel names, pins the 2.8-preview protobufs with a 2.7 TrafficManagement compat shim, adds an XEdDSA signature shield in the Packet Monitor, and ships the MEDIUM_TURBO preset with 2.8 opt-in docs. Node detail gains a derived signal-trend / link-attenuation badge and a Noise Floor quick-stat. Two bug fixes round it out: chat from unsynced-clock nodes no longer renders at ~1970, and cluster spiderfy no longer opens the popup for a nearby unrelated node.Features
- Privacy:
noIndexEnabledtoggle servingX-Robots-Tag: noindex, nofollow+ disallow-all/robots.txt(#4212, closes #4202) - 2.8 / Packet Monitor: XEdDSA signature shield for firmware 2.8 packets (#4209)
- 2.8 / MeshBeacon: decode
MESH_BEACON_APP+ firmware-verified preset channel names (#4207) - 2.8 / Protobufs: pin 2.8-preview
develop@ba16bfcwith 2.7 TrafficManagement compat shim (#4205) - Nodes: derived signal-trend / link-attenuation badge per node (#4204, closes #4110)
- Nodes: show Noise Floor on the Node Detail quick-stats card (#4201, closes #4109)
- 2.8: MEDIUM_TURBO preset,
MESH_BEACON_APPportnum, traffic-management & 2.8 opt-in docs (#4200)
Bug Fixes
- Messages: stop unsynced-RTC nodes rendering chat at ~1970 (rxTime now clamped to receipt time) (#4208, closes #4206)
- Map: spiderfy no longer selects a nearby unrelated node instead of fanning the cluster (#4203, closes #4199)
Issues Resolved
- #4202 — [FEAT] Robots.txt / X-Robots-Tag toggle to discourage crawlers/bots
- #4206 — [BUG] Chat from unsynced-clock nodes renders at ~1970
- #4199 — [BUG] Spiderfy click opens popup for wrong nearby node
- #4109 — [FEAT] Show Noise Floor on Node Detail quick-stats card
- #4110 — [FEAT] Derived signal-trend / link-attenuation indicator per node
- #4074 — Modem preset tables missing MEDIUM_TURBO (enum 16)
- #3999 — [2.8 tracking] Position & telemetry broadcast now opt-in by default
- #3547 — Docs: Traffic Management module documentation
Full changelog: https://github.com/Yeraze/meshmonitor/compare/v4.13.1-rc3...v4.13.1-rc4
🚀 MeshMonitor v4.13.1-rc4
📦 Installation
Docker (recommended):
docker run -d \ --name meshmonitor \ -p 8080:3001 \ -v meshmonitor-data:/data \ ghcr.io/Yeraze/meshmonitor:4.13.1-rc4🧪 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.
- Privacy:
v4.13.1-rc3 # Pre-release 2 days ago · 2026-07-18 19:43 UTC
MeshMonitor v4.13.1-rc3
⚠️ Pre-release (release candidate). Rolls up 13 PRs merged since rc2 — position-quality & Map Analysis refinements plus a cluster of messaging correctness fixes. Please test and report issues before the stable 4.13.1.
Highlights
This RC sharpens position quality and node identity. Node popups now show position accuracy and GPS location source; the "Discard invalid positions" toggle is honored on the render side (not just ingest); and the obscured-node precision offset is occupancy-scaled and distance-capped. On the messaging side it fixes several real correctness bugs: compose drafts no longer leak across conversations (a message meant for one node could be sent to another), MeshCore own-node messages show the node's name instead of a raw public key, and message senders now display their short name alongside the long name. Rounding it out: automations can now target a remote node for admin reboot, unmessageable nodes get a "Message anyway" override, traceroute no longer fails with NO_CHANNEL on a disabled channel slot, and the v1
defaultsource alias scopes correctly.Features
- #4188 — Position accuracy + location source in node popups (chat & map), migration 124
- #4187 — "Message anyway" override for unmessageable-node DM banner
- #4186 — Automation: remote-admin reboot target for the device-reboot action
- #4196 — Show short name alongside long name on message senders (Unified Messages)
- #4182 — Honor the "Discard invalid positions" toggle on the render side
- #4181 — Occupancy-log-scaled, distance-capped precision offset for obscured nodes
Bug Fixes
- #4197 — MeshCore: own node's messages show the name, not a public key
- #4191 — v1
defaultsource alias deep-scopes by the resolved id (mergeParams re-derivation) - #4185 — Scope the compose draft per-conversation (prevents wrong-recipient sends)
- #4184 — Keep router short-name visible in the Official pin style
- #4180 — Traceroute no longer sends on a DISABLED channel slot (NO_CHANNEL)
- #4175 — Drop heatmap/coverage density for deleted nodes
Docs
- #4179 — Meshview Link Responder added to the User Scripts Gallery
Full changelog: https://github.com/Yeraze/meshmonitor/compare/v4.13.1-rc2...v4.13.1-rc3
🚀 MeshMonitor v4.13.1-rc3
📦 Installation
Docker (recommended):
docker run -d \ --name meshmonitor \ -p 8080:3001 \ -v meshmonitor-data:/data \ ghcr.io/Yeraze/meshmonitor:4.13.1-rc3🧪 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.
Project signals
- GitHub stars
- 579
- Forks
- 71
- Watchers
- 4
- Open issues
- 34
- Contributors
- 36
- Release downloads
- 5,080
- Latest downloads
- 14
- Source available
- Yes
- Releases available
- Yes
- Signed releases
- No
- CI builds
- Yes
- Documentation
- Yes
- MeshCore devices connect over USB or TCP; BLE support uses a bridge sidecar.
- Native Windows and macOS desktop installers are published with GitHub releases.
- Docker images are published for amd64, arm64 and armv7.