All software
MeshMonitor

MeshMonitor

Monitoring / Management Stable

Self-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

Multi-source network dashboard
Unified channel messaging
Telemetry dashboards and charts
Interactive network map

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-20
  1. v4.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)

  2. 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 noIndexEnabled privacy toggle so a publicly-exposed dashboard can serve X-Robots-Tag: noindex, nofollow headers plus a disallow-all /robots.txt (belt-and-suspenders for Cloudflare-tunnel setups that strip custom headers). On the 2.8 front, it decodes MESH_BEACON_APP with 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: noIndexEnabled toggle serving X-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@ba16bfc with 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_APP portnum, 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.

  3. 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 default source 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 default source 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.

Show all 20 releases →

Project signals

popularity 2026-07-20 verification 2026-07-20
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.

Tags