Skip to content

[FEAT] Connector Framework to evolve MeshMonitor into a multi-protocol mesh nexus #1988

@jeremiahsb

Description

@jeremiahsb

Why

I'm in an area that doesn't have a robust MeshCore community (yet) and the Meshtastic community is hit or miss. Thus I run multiple nodes (for the various protocols) and was going to work on expanding the support for MeshMonitor's support for MeshCore to run in a separate Docker container, but I had an idea. The app is great (especially the pass through capability), but it would fantastic if it was a nexus of the different protocols, all under a single UI. So, I thought I'd put this idea out there and see what folks thought of it.

MeshMonitor currently has strong Meshtastic support and partial MeshCore support, but they’re implemented as separate silos. That makes cross-protocol features hard and doesn’t scale well as more protocols are added.

Proposal (high-level)

Introduce a Connector Framework that wraps existing protocol managers and normalizes outputs (nodes/messages/channels/events) into a common model.

Core pieces:

  • ConnectorAdapter interface per protocol (Meshtastic, MeshCore, future Reticulum/BitChat)
  • ConnectorRegistry to manage lifecycle, routing, and unified queries/events
  • connectors table plus connector_id on existing data tables (backward-compatible migration)
  • Connector-aware API (/api/v2/connectors, unified nodes/messages endpoints)
  • Connector management UI (add/edit/enable/disable/reorder, status, dynamic config schema)

Rollout plan

  1. Phase 1 (Foundation)
    Connector interface/registry, DB migration, Meshtastic adapter, MeshCore adapter, connector CRUD/status API, basic UI

  2. Phase 2 (Unified frontend)
    Unified map/messages/nodes/dashboard with connector filters, color/icon tagging, unread counts

  3. Phase 3 (Reticulum)
    Python bridge + adapter + deployment support

  4. Phase 4 (BitChat)
    Nostr-based adapter first, optional BLE direct later

  5. Phase 5 (Relay engine)
    Rule-based inter-protocol forwarding with loop prevention/rate limits

Guardrails

  • No big-bang rewrite of meshtasticManager as a prerequisite; start with thin adapters around existing code
  • Preserve backward compatibility by auto-creating a default Meshtastic connector from existing env config
  • Keep protocol-specific capabilities optional (graceful UI degradation where features don’t exist)

Feedback requested

  1. Should connector-aware APIs be /api/v2 or incremental /api/v1 extension?
  2. Is multi-instance Meshtastic a hard requirement in Phase 1, or can it be phased?
  3. Preferred DB direction: unified tables with connector_id + protocol_data JSON vs protocol-specific tables?
  4. Protocol priority after Phase 1: Reticulum first, BitChat later?

If this direction is acceptable, I’ll split implementation into incremental PRs by phase to keep review manageable.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions