Open source protocol and bridge, Meshtastic adapter in alpha

Local mesh,
global reach.

MeshTrunk links regional mesh radio networks into one worldwide message bus. A Meshtastic node in Jacksonville can reach a mesh in London. No ham license. No internet on the radio. Opt-in only.

MIT-licensed protocol bridges. Works with stock firmware. Self-hostable.

JAX mesh Meshtastic / LoRa
Gateway ESP32 + WiFi
Broker Route / dedup
Gateway ESP32 + WiFi
London mesh any protocol

Local RF stays local. The trunk only carries what crosses regions, over the internet, when it exists.

5 protocols, 1 bus
Meshtastic, Reticulum, MeshCore, APRS and JS8Call share one message system.
No license needed
Meshtastic runs on unlicensed LoRa. Ham bands stay optional.
Stock firmware
Gateways run unmodified firmware. All routing lives server-side.
Opt-in only
Nobody hears MeshTrunk traffic unless they add the channel.
The problem

Every mesh is an island.

A Meshtastic network covers a metro area at best. Its hop limit reaches roughly 50 to 100 km, and pushing further just floods the airwaves, because every node rebroadcasts every message. There has never been a standard way to connect one city's mesh to another's.

MeshTrunk borrows the answer from the telephone system: local calls stay local, long distance rides a trunk line. Your neighborhood mesh keeps working exactly as it does today. When a message is meant for somewhere else, a gateway carries it across the internet and drops it into the mesh on the far side.

How it works

Four steps from radio to the world.

A message never leaves your local mesh unless it needs to. When it does, here is the whole path.

Radio to gateway

Your node sends over LoRa. A nearby gateway hears the packet after one to five local hops.

Gateway to broker

The gateway is a stock ESP32 device. Its built-in MQTT client forwards the packet to the MeshTrunk broker over WiFi.

Broker routes

The broker dedups, rate limits, then routes: broadcast to everyone, or direct to a region with @JAX.

Into the far mesh

Remote gateways inject the message into their local mesh. Someone on a little radio in another city sees it. Replies flow back the same way.

Supported protocols

One broker. Five adapters.

Each protocol gets a bridge module that translates between its native wire format and MeshTrunk's internal envelope. Different radios, one conversation.

Meshtastic
LoRa mesh over MQTT. The primary adapter.
Alpha
Reticulum
Encryption-first mesh, bridged via LXMF.
Upcoming
MeshCore
Room-server mesh over a KISS modem.
Upcoming
APRS
The global packet network, via APRS-IS.
Upcoming
JS8Call
HF keyboard chat, worldwide off the ionosphere.
Upcoming

Adapters ship with the broker. The Meshtastic bridge is in alpha testing today; the rest activate as they harden. Ham-band protocols like APRS and JS8Call still need a license from you, the operator.

Design goals

Built to be joined, not owned.

Protocol-agnostic

Meshtastic, Reticulum, MeshCore, APRS and JS8Call share one message bus. The core routes; the adapters translate.

Stock firmware compatible

Gateway devices run unmodified protocol firmware. Point the MQTT setting at the broker and you are done. Every bit of routing intelligence lives server-side.

Opt-in only

No one hears MeshTrunk traffic unless they choose to. Add the channel, join the network. Your local mesh stays yours.

Internet-bridged, not internet-dependent

Your mesh keeps operating with no connectivity at all. The broker only bridges regions when a trunk is available. More gateways per region means more resilience, not more echo.

Addressing

Phone codes and airport codes. Nothing to invent.

Global addressing was solved decades ago by the telephone network and the aviation industry. MeshTrunk reuses both. Type a region however is natural to you and the broker normalizes it.

@904 Phone area code. Resolves to region 1-904, Jacksonville.
@JAX IATA airport code. Globally unique, so @LHR is always London, @PDX always Portland.
@EL95gf Maidenhead grid square. Routes to the nearest region.
@30.33,-81.66 Raw coordinates. Also routes to the nearest region.
MT-1-904-01 A gateway ID: country code, area code, number. Hierarchical and unique.
meshtrunk # general
[LON] Anyone else dealing with rain fade today?
[BER] Always. Welcome to Germany.
[JAX] Sunny here
[TOK] 3am, goodnight meshers
 
# direct a message to one region
[JAX] @LHR know a good antenna shop?
→ delivered only to London
Get started

Two ways onto the network.

Already have a Meshtastic radio with WiFi? You can join in about a minute without reflashing anything.

Path A

Join with your current device

No reflash. Just point your existing Meshtastic node at the broker.

  1. 1Open Meshtastic app, then Settings > Channels.
  2. 2Add a channel named MeshTrunk, set a PSK, and enable Uplink and Downlink.
  3. 3Under MQTT, enable it and set server meshtrunk.com port 1883.
  4. 4Set device role to ROUTER or ROUTER_CLIENT.
Full instructions
The ecosystem

A CommsForAll project.

MeshTrunk grows out of a community that has been building local mesh for real, in a real city.

Put your city on the trunk.

Flash a gateway, or read the open protocol and run your own broker. Either way, your mesh reaches further tonight.