When networks fail, what survives becomes islands. MeshSat connects them.

One message.
Every way out.

A mesh that keeps one valley talking, a volunteer radio net, a satellite modem, a command post's map: each can still work, and none can reach the others. MeshSat is open source software that takes a message off one and delivers it into another by whatever bearer is still alive, spending satellite bytes only when nothing free is left.

Hub open. No fleet running on it yet, never used in a real emergency.

curl -fsSL https://get.meshsat.net | sudo bash

Star on GitHub

Networks fail into islands

A disaster rarely silences every system at once. It cuts the links between them: radio keeps working inside one agency or one cell, the phone network goes, and what one team knows does not reach the team that needs it.

It has happened before

  1. Hurricane Katrina, US Gulf Coast. In many cases responders in different agencies could not talk to each other because of incompatible frequency assignments. A military helicopter had to drop a message in a bottle to warn them of a gas leak. FCC panel report

  2. Floods in the Ahr valley and the Eifel, Germany. 34 emergency radio base stations were affected. In fallback mode radio kept working only inside each station's own cell, and links beyond it were patched case by case, for example with gateway connections. Landtag Rheinland-Pfalz, Drucksache 18/1947

  3. Lahaina wildfire, Maui. The county's public safety radio system appears to have worked throughout, but police could not hear fire channels and fire could not hear police, and unreliable cell service left private water tankers uncoordinated. FSRI report for the Hawaii Attorney General

  4. Blackout in Spain and Portugal. Public phone and mobile networks failed, and Portugal's distribution operator fell back on satellite phones. Spain's grid operator could still make calls but could not reach the distribution control centre in Seville, and restoring supply in Andalusia was paused. ENTSO-E expert panel report

What joining them looks like

  • Two teams on two meshes, no internet

    mesh_0toaprs_0tomesh_0

    Run kit to kit on 12 September 2026 over APRS, then over SMS. It is the second film below.

  • A valley with no signal, an office far away

    mesh_0toiridium_0

    The satellite leg is verified over a real Iridium link, March 2026.

  • A volunteer radio net and a command post

    aprs_0totak_0

    Both interfaces are field tested. This route has not been run end to end yet.

Built for the people who work between those islands: search and rescue teams, civil protection and emergency management, humanitarian organisations, amateur radio emergency groups, expeditions, maritime crews and remote industry. None of them runs it yet; the field programme that starts in November 2026 is its first real test.

Every system plugs into the same router

Each one is an adapter behind the same interface, with its own MTU, cost model and transform pipeline, and a rule can route from any adapter to any other. Eight bearers run on nine interfaces today, because Iridium counts twice, on the 9603N and the 9704. HF radio and DMR are on the roadmap and not built. Status says what we have actually run, not what we hope.

  • mesh_0Meshtastic
  • aprs_0APRS
  • cellular_0SMS
  • iridium_0Iridium
  • zigbee_0ZigBee
  • tcp_0Reticulum
  • HFnot built
  • DMRnot built

routerrules, transform chains, failover order, cost

  • tak_0TAK
  • mqtt_0MQTT
  • webhook_0Webhooks
Bearers above, integrations below, one router between them: a rule can route from any adapter to any other. Dashed is on the roadmap and not built.
CategoryTransportStatus
MeshMeshtastic LoRaField tested
SatelliteIridium SBD 9603NField tested
Iridium IMT 9704Verified over satellite
CellularSMS and data (A7670E)Field tested
WirelessZigBee 3.0 (CC2652P)Little field exposure
IP / NetworkMQTTField tested
WebhooksField tested
APRS (bundled Direwolf, KISS)Field tested
TAK / Cursor-on-TargetField tested
RoutingReticulum TCP (HDLC framed)Interoperates with Python RNS

Multi-bearer bonding over a paid satellite link is not validated yet, and the jamming detector has only ever seen ambient noise. The repository sets out the full list of what has and has not been proven.

Use the cheapest path that still works.

An Iridium line costs tens of euros a month plus credits per message, billed in 340 byte blocks. Give one to every person in a team and the bill scales with headcount. That price shapes every routing decision.

One paid link, shared

A team carries cheap mesh radios. One gateway holds the expensive satellite line. Everyone reaches the outside through it, so cost stops scaling with the number of people.

Free bearers first

Every interface declares a cost. The router prefers the free ones, mesh, packet radio, Bluetooth and WiFi, and only reaches for satellite or SMS when nothing free is up.

Fewer bytes when it does

Anything leaving on a metered bearer is compressed first. SMAZ2 runs in under a millisecond on short text, which matters when you are billed per block rather than per byte.

Sent when the sky is right

Pass prediction from SGP4 orbital elements holds traffic for visibility windows instead of burning battery retrying against a satellite that is below the horizon.

MeshSat is free software under the GPLv3. Development is supported by SIDN fonds, and a six month field programme starts in November 2026.

What it runs on

A Raspberry Pi in a waterproof case with radios on USB and GPIO. Devices are identified at startup by USB ID and protocol probe, so plugging one in is the whole configuration step.

PartRole
Raspberry Pi 5 (8 GB)Host. ARM64, or any x86_64 Linux with Docker and USB serial.
Heltec LoRa V4 or XIAO ESP32-S3Meshtastic mesh radio at 868 or 915 MHz.
RockBLOCK 9603 or 9704Iridium satellite. SBD at 340 bytes, or IMT at 100 KB.
LILYGO T-Call A7670E4G and 2G cellular, for SMS and data.
CC2652P dongleZigBee coordinator.
UPS and batteryBecause the interesting cases are the ones where mains power has gone too.
Spectrum per band, links and every bearer's health, served by the device itself
Pass prediction, so the queue waits for a satellite that is actually up
Six hours of the 868 MHz LoRa band. The jamming detector has only ever seen ambient noise.
A ZigBee temperature and humidity sensor and its last 24 hours
Open at full size

The dashboard is embedded in the binary and served from the device. No cloud dependency, no account.

The hardware has its own repository, meshsat-fieldkit: the two kits built so far with their build guide, and the V2 carrier boards for a Peli 1520 case, designed and prepared for fabrication but not built yet.

What it is not

Starlink is connectivity, Meshtastic a local mesh, Reticulum a network that runs over any bearer, TAK a shared map of the situation. MeshSat replaces none of them. It carries messages between them.

Not a Starlink replacement

MeshSat moves text, positions and telemetry. If you need video calls or the web, use Starlink. This is for the cases a dish cannot serve: battery powered, pocket sized, no mains.

Not voice or video

Satellite and mesh links are high latency and low throughput. This is store and forward messaging. Think SMS, not a phone call.

Not a LoRaWAN network server

The mesh side speaks Meshtastic, which is its own protocol over LoRa. For LoRaWAN, run ChirpStack and bridge it in over MQTT.

Not an emergency service

A research prototype, not a replacement for 112, 911 or any national emergency number. Nothing here is certified and nothing here has been used in a real emergency.

See it working

The introduction first, then two field kits on the bench passing a message from one mesh to the other, over APRS radio and then over SMS. Nothing loads from YouTube until you press play.

MeshSat-intro.mp42:02
The bench prototypes, a local send in the web dashboard, and the 3D design of the field kits being built. Watch on YouTube
MeshSat-field-kits.mp43:04
Recorded in Leiden on 12 September 2026: a message crosses from one kit's mesh to the other's over APRS on 144.800 MHz, then again over SMS. Watch on YouTube

Try it

One command on a Linux machine with a radio plugged into it. A single device is enough to start, and anything missing is logged as a warning rather than an error.

get.meshsat.netbash
curl -fsSL https://get.meshsat.net | sudo bash
[OK]    Running as root
[OK]    Architecture: aarch64
[OK]    MeshSat Bridge started

  Dashboard:  http://192.168.4.20:6050
  USB devices will be auto-detected.

Bug reports from people running hardware we have not tried are the most useful thing you can send. The supported-device list is short because it only names what we have physically run.

MeshSat Android

A phone as a standalone gateway, with no Pi and no cables. It talks to a Meshtastic radio over Bluetooth LE, an Iridium modem over Bluetooth SPP, and uses the phone's own SMS, all at the same time. Same encryption and message formats as the Bridge.

Run the Hub on your own servers, or try it on ours

The Hub runs many bridges from one place: accounts with roles, API keys, SOS escalation chains and an audit log that shows any change. The code is the same either way. What changes is who runs it and how many devices you can register.

meshsat-hubApache 2.0

On your own servers

The same code that runs hub.meshsat.net, on hardware you control.

Devices and bridges
as many as you set
Cost
free
Account with us
none
Runs as
one server, a cluster or Kubernetes
hub.meshsat.netOpen

On our servers

The Hub is open. Create an account and we review it before it goes live.

Plans on hub.meshsat.net
Plandevices and bridgesCost
Free4included
Crew249 euro a month
Fleet10029 euro a month
More100+talk to us

A device you have registered keeps working on any plan. A smaller plan only stops you adding more, and an SOS is never affected.

Your airtime stays yours. Connect your own Cloudloop, Twilio and Rock7 accounts; we never resell satellite or SMS minutes.