When MeshCore landed back in v3.5.0, it was deliberately small: a single experimental tab, env-var-only setup, basic serial messaging, and a single global permission. Since then it's been quietly growing up, and v4.5.0 is the release where that work crosses the finish line.
MeshCore is now a first-class source in MeshMonitor. It sits in the dashboard sidebar next to your Meshtastic nodes, has its own per-source permissions, its own multi-pane page, its own telemetry pipeline, and contributes contacts to the unified dashboard map. You can run multiple MeshCore companions and repeaters alongside multiple Meshtastic nodes and gate each one independently. The 4.5 UI source-add flow is USB-only for MeshCore (Companion or Repeater); TCP-connected companions still work but are wired up via the legacy environment-variable bootstrap path.
What's New Since v3.5.0 β
Source-model overhaul
- Per-source MeshCore managers β each MeshCore device is its own source row, manageable from the Sources sidebar with no container restart (#3005, #3014)
- Permissions, expanded β the legacy global
meshcorepermission is gone; migration 058 expanded every grant into the per-source sourcey set (connection, configuration, nodes, messages) - Composite primary key on
meshcore_nodesβ the same device advertising under two different sources is tracked independently (#3023)
Dashboard + map integration
- Styled source cards matching the Meshtastic visual vocabulary, with a MeshCore logo (#3016)
- Unified dashboard map now enumerates every MeshCore source and renders contacts with valid coordinates alongside Meshtastic nodes (#3015)
The MeshCore page itself
- Multi-pane redesign with Nodes, Channels, Direct Messages, Configuration, and a new Node Info view (#3005)
- Contact-detail panel under each DM thread β hops, RSSI/SNR, last heard, position, full public key, collapsible with persisted state (#3017)
- UI permission gating β write controls dim and explain themselves for read-only users instead of just rejecting submits (#3019)
- Visual alignment with the Meshtastic Info / Channels / Nodes rows (#3021)
Telemetry
- Local-node telemetry β a background poller samples
GetStats core/radio/packets,GetDeviceTime, andDeviceQueryevery 5 minutes (configurable, all on-device, no RF) and writes batchedmc_*rows into the sametelemetrytable the Meshtastic side uses (#3020) - Node Info page that graphs all of that across 1h / 6h / 24h / 3d / 7d ranges with current health, cumulative counters, and identity
- Telemetry-mode configuration β toggle device-side base / loc / env telemetry classes from the Configuration view (#3018)
- Per-node remote telemetry retrieval β opt nodes into scheduled
req_telemetry_syncpulls with a per-node interval, gated through a shared 60-second cross-mesh throttle, with decoded LPP values written back into the telemetry store (#3022)
Configuration quality-of-life
- Radio preset selector populated from the official MeshCore preset list, with a Custom fallback (#3015)
- Persistent radio params β the bridge now propagates device-side errors instead of silently returning success, and the manager refreshes from the device after Save so the next snapshot reflects real state
- Staged edits no longer revert during live push updates (the Phase 3 push events used to overwrite in-flight edits)
- Location configuration + advert-location policy in the Configuration view
- Channel-message senders are now extracted from the
"Name: body"prefix and shown separately from the message body
Still Early β
It would be tempting to ship this announcement as "MeshCore is done." It's not.
MeshCore support in MeshMonitor is still new and basic. The core "see your network, send messages, watch telemetry" loop works, but plenty is missing compared to the Meshtastic side. To be candid about the gaps:
- Repeater / Room Server parity trails Companion β Repeater is selectable as a USB device type, but the local-telemetry poller, remote-telemetry scheduler, and telemetry-mode toggles all need a Companion on the source side
- TCP MeshCore via the UI isn't shipped yet β TCP companions are env-var bootstrap only in 4.5
- No remote-admin equivalent β no admin scanner, no password rotation flow, no OTA flow for MeshCore
- No scheduler integrations β auto-responder, auto-announce, auto-traceroute don't have MeshCore counterparts yet (the per-source primitives are wired up; the user-facing features are next)
- Notifications for MeshCore events are minimal β apprise and push surfaces aren't yet first-class
- Map-specific affordances β direct-link visualization, route-quality overlays, MeshCore-specific marker behavior β aren't there yet
- MQTT source type is still planned, not shipped
The plan is incremental: keep landing one or two MeshCore features per release, keep aligning the UI vocabulary with Meshtastic, and gradually close the parity gap. If something doesn't behave the way you'd expect, open an issue.
Where to Go Next β
The MeshCore feature documentation has been updated to cover everything in this release β adding a source, the multi-pane page, the telemetry model, permissions, radio presets, and the current known gaps.