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.
Local RF stays local. The trunk only carries what crosses regions, over the internet, when it exists.
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.
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.
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.
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.
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.
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.
Two ways onto the network.
Already have a Meshtastic radio with WiFi? You can join in about a minute without reflashing anything.
Join with your current device
No reflash. Just point your existing Meshtastic node at the broker.
- 1Open Meshtastic app, then Settings > Channels.
- 2Add a channel named MeshTrunk, set a PSK, and enable Uplink and Downlink.
- 3Under MQTT, enable it and set server
meshtrunk.comport1883. - 4Set device role to
ROUTERorROUTER_CLIENT.
Flash a fresh gateway
Browser-based flashing with MeshTrunk settings baked in. A Heltec V3 or any supported ESP32 board works.
- 1Grab a supported LoRa board. A Heltec V3 is a popular pick, around $25.
- 2Open the web flasher and pick your device.
- 3Choose your region by airport code, then enter WiFi.
- 4Flash, plug in, and leave it running. It bridges your mesh to the world.
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.

