Skip to content

Multi-Source ​

New in 4.0

Multi-Source lets a single MeshMonitor deployment talk to multiple Meshtastic nodes at once over TCP. Serial- and BLE-attached nodes reach MeshMonitor through the Serial Bridge or BLE Bridge sidecar (they present as a TCP endpoint). Everything that used to be a global setting (Virtual Node, auto-responder, auto-traceroute, scheduler, permissions) is now configured per source.

Coming soon

MQTT and MeshCore source types are part of the multi-source architecture but are still in active development. They'll land in a future 4.x release.

Dashboard with multiple sources in the sidebar

What is a Source? ​

A source is one upstream connection MeshMonitor speaks to β€” typically a Meshtastic node. Each source has:

  • A type β€” meshtastic_tcp today; mqtt and meshcore are planned. Serial and BLE nodes connect through the Serial Bridge / BLE Bridge sidecars and appear as meshtastic_tcp sources pointing at the bridge container.
  • Its own connection settings (host, port, device path, credentials)
  • Its own scheduler (auto-responder, auto-announce, auto-traceroute, auto-ack)
  • Its own Virtual Node endpoint (TCP sources only)
  • Its own permissions β€” which users can see/write to it

Sources are stored in the database and managed through the UI, not environment variables.

Where do sources come from? ​

Bootstrap (first run) ​

On first startup, MeshMonitor creates a single meshtastic_tcp source from these environment variables:

VariableDefaultNotes
MESHTASTIC_NODE_IP192.168.1.100Hostname or IP of your node
MESHTASTIC_TCP_PORT4403TCP port

After that first boot, the env vars are informational only. Changing them won't rename or reconfigure the existing source β€” use the UI instead. This keeps your single-node docker-compose.yml familiar while unlocking multi-node.

Adding more sources ​

Open the Sources sidebar on the dashboard (admin only) to:

  • Add source β€” click the + button next to the Sources header, choose a type, fill in connection details, save
  • Edit β€” rename, re-host, re-port, toggle Virtual Node, or change other per-source settings
  • Enable / Disable β€” pause an upstream connection without deleting it
  • Delete β€” remove the connection and its source-scoped data

Source options menu with Edit, Enable/Disable, and Delete actions

Changes that alter the upstream target (host, port, heartbeat) automatically restart the connection β€” no separate restart action is needed. The Sources sidebar is where all post-bootstrap connection changes happen.

Source picker ​

Nearly every top-level view has a source picker in the header. It controls which source's data you're looking at:

  • Single-source mode β€” pick one source; the view shows only that source's nodes, messages, telemetry, and traceroutes
  • Unified mode (where available) β€” combines messages/telemetry/traceroutes across all sources while still tagging each row with its originating source

Your picker choice persists per view and per user.

Virtual Node ​

Virtual Node is a MeshMonitor feature that lets mobile Meshtastic apps connect through MeshMonitor instead of directly to the node. In 4.0 it is per-source.

  • Only meshtastic_tcp sources support Virtual Node (planned MQTT and MeshCore source types will ignore VN settings when they ship)
  • Each source can expose its own VN endpoint on its own port
  • Ports must be unique across sources β€” the API rejects collisions with HTTP 409

Enabling on a source ​

  1. Open Dashboard β†’ Edit Source on the TCP source you want to expose
  2. Expand the Virtual Node section
  3. Toggle it on
  4. Choose a port (the previous global default was 4404)
  5. Decide whether to allow admin commands through the VN (reduces security β€” leave off unless you know you need it)
  6. Save

Edit Source dialog with Virtual Node section expanded

Virtual Node config changes are hot-swapped without reconnecting the upstream TCP socket. Changing host/port still triggers a full reconnect.

Docker port mapping ​

When you add a VN, publish the in-container port from your docker-compose.yml:

yaml
services:
  meshmonitor:
    ports:
      - "8080:3001"        # Web UI
      - "4404:4404"        # Virtual Node for source A
      - "4405:4405"        # Virtual Node for source B (if you expose a second)

The Docker Compose Configurator publishes one VN host port by default (4404). Match the VN port you choose in the UI to one of the published host ports.

Breaking change from 3.x

The old global env vars β€” ENABLE_VIRTUAL_NODE, VIRTUAL_NODE_PORT, VIRTUAL_NODE_ALLOW_ADMIN_COMMANDS β€” were removed and no longer have any effect. If you upgraded from 3.x, re-enable VN on each source you want to expose.

Per-Source Permissions ​

MeshMonitor's role-based access control treats sources as first-class resources. Admins can:

  • Grant a user access to one or more sources
  • Restrict read/write/admin actions per source
  • Hide entire sources from users who shouldn't see them

Unauthorized endpoints return HTTP 403 β€” URL-hash route bypasses are blocked.

See Per-Source Permissions for the full model.

What else is per-source? ​

Everything that used to be a single global setting is now per-source:

FeaturePer-source in 4.0
Virtual Nodeβœ…
Auto-Responderβœ…
Auto-Announceβœ…
Auto-Traceroute filterβœ…
Auto-Ackβœ…
Auto-Delete by Distanceβœ…
Auto-Favoriteβœ…
Scheduled Messagesβœ…
Permissionsβœ…
Notifications / Appriseβœ… (admins and subscribers receive per-source events)

For global behavior that isn't source-specific (theme, language, map center, push VAPID keys, session policy), use the new Global Settings page β€” accessible from the dashboard sidebar.

Migration from 3.x ​

If you're upgrading from 3.x:

  1. Keep your env vars β€” MESHTASTIC_NODE_IP / MESHTASTIC_TCP_PORT still seed the first source on a fresh install
  2. Drop removed VN env vars β€” ENABLE_VIRTUAL_NODE, VIRTUAL_NODE_PORT, VIRTUAL_NODE_ALLOW_ADMIN_COMMANDS do nothing in 4.0
  3. Re-enable VN per source β€” Dashboard β†’ Edit Source β†’ Virtual Node on each TCP source you want to expose
  4. Review permissions β€” the per-source permission matrix may need admin review for non-admin users
  5. Back up first β€” use System Backup from the Settings page before upgrading. The sources table is included.