
MeshMonitor
Tool 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.
Screenshots
Details
- Kind
- Tools
- Maturity
- Stable
- Maintainer
- Yeraze
- Languages
- typescript, javascript
- Licensing
- Open source
- License
- BSD-3-Clause
- Latest version
- 4.11.5 · 2026-06-22
Capabilities
Platforms
Interfaces
Connections
Capabilities
Node roles
Install
Releases
from GitHub · updated 2026-06-23v4.11.5 # Latest 1 day ago · 2026-06-22 21:19 UTC
🚑 Hotfix release — supersedes v4.11.4 (retracted)
v4.11.4 was pulled because migration 033 crashed startup on PostgreSQL and on fresh installs with
column "sourceId" does not exist(#3657). v4.11.5 fixes that and carries everything that was in v4.11.4.If you ran v4.11.4, update to v4.11.5. The boot crash is resolved.
🔴 Hotfix (#3657)
- Migration 033's
channel_databasebackfill is now guarded on the legacysourceIdcolumn existing (it's global-by-design — migration 021 no longer adds it and 063 drops it). Fixes the PostgreSQL / fresh-install boot crash introduced in v4.11.4.
Also included (from the retracted v4.11.4)
Critical
- PostgreSQL boot-loop fix (
tables can have at most 1600 columns) (#3639)
Features
- MeshCore role icons in the map + DM node lists (#3647)
- MeshCore favorites pinned to the top of the DM list (#3620)
- Marker spiderfying for overlapping nodes on Map Analysis + Unified maps (#3612)
- Channel "overshadow" warning for same-key/different-name Channel Database entries (#3644)
- Traceroute
packetIdfor cross-source correlation (#3623)
Fixes
- Node disconnects / TX failures since 4.11.x (#3637)
- Custom-LoRa-config primary channel mislabeled "LongFast" (#3644)
- TCP reconnect shows the real per-source address (#3611)
- Fictitious traceroute segments removed; incoming traceroutes visible (#3622)
- MeshCore hashtag
#channelsecrets over plain HTTP-via-IP + at save time (#3606, #3607) - MeshCore Last Heard preserved across reconnect (#3645)
- MeshCore new nodes populate fully when heard live (#3646)
- Unified-map neighbor lines follow the merged marker (#3642)
- Adaptive node-type filter per source protocol (#3610)
- Saner single-anchor position-estimate uncertainty (#3616)
🚀 MeshMonitor v4.11.5
📦 Installation
Docker (recommended):
docker run -d \ --name meshmonitor \ -p 8080:3001 \ -v meshmonitor-data:/data \ ghcr.io/Yeraze/meshmonitor:4.11.5🧪 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.
- Migration 033's
v4.11.3 # 2 days ago · 2026-06-21 18:25 UTC
MeshMonitor v4.11.3
This release adds a Dead Drop / Mailbox auto-responder — asynchronous "mesh voicemail" where a node can leave a message for another node that need not be online, retrieved later with
inboxcommands — contributed by new contributor @TheWISPRer. It also brings MeshCore node favoriting (pin any MeshCore node to the top of the list, stored server-side), FEM LNA Mode LoRa configuration surfaced on both the Device Configuration and Remote Admin panels for amplified hardware, and the MeshCore CLI bundled into the Docker image alongside the Meshtastic CLI. On the fixes side, a PostgreSQL/MySQL crash in the MeshCore neighbor query is resolved by widening theneighbor_infotimestamp columns toBIGINT(they overflowed signed int32 with millisecond-epoch values), and a proto3 boolean-elision bug that silently re-enableduplinkEnabled/downlinkEnabledafter a container restart is fixed. Position history now captures and displays SNR for directly-heard (0-hop) nodes, the intermittently-blank MeshCore auto-ack{SNR}/{ROUTE}tokens are corrected, mesh-request endpoints return a meaningful503(not a generic500) when the node is disconnected, and the macOS x64 desktop build no longer ships an arm64re2.nodethat crashed on Intel Macs. Upgrades are automatic — three idempotent migrations (094–096) run on boot.Features
- Dead Drop / Mailbox auto-responder — async "mesh voicemail" (#3538, @TheWISPRer) — a fifth auto-responder type. DM
msg <name> <text>to leave a message; retrieve withinbox,inbox play [name],inbox delete <id>,inbox clear. Per-source, configured entirely through the Auto Responder UI, messages marked played only on delivery-success, expired rows purged by the maintenance sweep. - MeshCore node favoriting — pin to top of list (#3595) — favorite any MeshCore node (Companion, Repeater, Room Server, …); stored server-side only (firmware has no native favorite concept), consistent with Meshtastic favorites.
- FEM LNA Mode LoRa configuration (#3600) — surfaces
Config.LoRaConfig.fem_lna_mode(Disabled / Enabled / Not Present, firmware ≥ v2.7.20) on both the Device Configuration and Remote Admin LoRa panels. - MeshCore CLI bundled in the Docker image (#3591) — ships
meshcore-cli/meshclialongside the Meshtastic Python CLI for a complete in-container toolkit.
Bug Fixes
- MeshCore neighbor query crashed on PostgreSQL/MySQL (#3602) —
meshcore_neighbor_info.timestamp/.createdAtwere 32-bitINTEGER/INTbut store millisecond-epoch values that overflow int32; widened toBIGINT(migration 096). downlinkEnabled/uplinkEnabled: falsereverted to true after restart (#3598) — proto3 elides booleanfalse, and a?? truefallback re-inflated user-disabled channel flags on device reconnect; both now default tofalse.- Position history dropped SNR for directly-heard (0-hop) nodes (#3593) — SNR is now captured per-fix and shown in the tooltip; the same 0 dB-drop guard was fixed on the central
snr_localtelemetry path. - MeshCore auto-ack
{SNR}/{ROUTE}tokens intermittently blank (#3592) — buffered SNR/route data is now correlated to the matching packet (freshness +pathLen, consumed once) instead of leaking across messages. - macOS x64 (Intel) desktop crashed on launch (#3604) — the x64 DMG shipped an arm64
re2.node(ERR_DLOPEN_FAILED); the build now rebuildsre2from source as x86_64 and backfills the missing CI arch flags. - Mesh-request endpoints return 503 (not 500) when disconnected (#3597) —
/api/traceroute,/api/position/request,/api/nodeinfo/request,/api/neighborinfo/request,/api/telemetry/requestnow return a meaningful503with the v1-API error shape.
Internationalization
- Translations update from Hosted Weblate (#3579, @weblate)
Issues Resolved
- #3587 — Add MeshCore CLI Python application to Docker image
- #3588 — MeshCore node favoriting (pi
…
- Dead Drop / Mailbox auto-responder — async "mesh voicemail" (#3538, @TheWISPRer) — a fifth auto-responder type. DM
v4.11.2 # 3 days ago · 2026-06-21 00:02 UTC
Hotfix for 4.11.1 startup crash (PostgreSQL / MySQL)
4.11.1 fails to boot on PostgreSQL/MySQL backends that have an existing Auto-Acknowledge configuration. Migration 093 (the Auto-Acknowledge 2×2 matrix backfill) inserted
settingsrows without the table's NOT NULLcreatedAt/updatedAtcolumns, aborting database initialization withnull value in column "createdAt" … violates not-null constraint— a restart loop. On SQLite the violation was silently swallowed, so the matrix settings were never written.Fixed
- Migration 093 now supplies
createdAt/updatedAtin all three backends (SQLite / PostgreSQL / MySQL). A regression test runs the migration against a real settings table.
Recovery
Affected instances recover automatically on upgrade to 4.11.2 — migration 093 was never marked complete (it threw before committing), so it re-runs and now succeeds, correctly migrating your auto-ack settings. No manual database changes are required.
Full changelog: see CHANGELOG.md → [4.11.2].
🚀 MeshMonitor v4.11.2
📦 Installation
Docker (recommended):
docker run -d \ --name meshmonitor \ -p 8080:3001 \ -v meshmonitor-data:/data \ ghcr.io/Yeraze/meshmonitor:4.11.2🧪 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.
- Migration 093 now supplies
Project signals
- GitHub stars
- 537
- Forks
- 67
- Watchers
- 4
- Open issues
- 15
- Contributors
- 31
- Latest downloads
- 25
- 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.