Tern
An open LoRa mesh protocol that treats airtime as a shared, metered resource.
Get startedOpen the appWhy Tern

Get started
A board
One of 16 LoRa boards from Heltec, LilyGo, RAKwireless and Seeed, the 863-928 MHz kind, with its antenna. The Heltec WiFi LoRa 32 V3 is the one checked on hardware so far; the rest are built for and waiting to be tried.
Flash it
Put Tern on it from Chrome or Edge on a computer, over USB, with nothing to install, or copy a file onto an nRF52840 board. It replaces Meshtastic or MeshCore if either is on the board.
An app
Android, iPhone, iPad or Mac (a TestFlight beta), or the app in your browser, in Chrome or Edge. Each talks to the node over Bluetooth; the browser can use USB too.
Add someone
Scan their node's QR code, or open its link, and add them as a contact. Compare the twelve-digit code with them to check it is their node. Then write.
Where you are matters: the firmware has images for the AU915, CL915, EU868, KZ863, MY919, NZ915, RU868, TH920, and US915 regions only. The docs go through each step, and what comes after.
What it is built around
These are design goals. Each one is being tested in simulation and on real radios before it becomes part of the specification.
Airtime is budgeted
Every node has an airtime budget, and the network accounts for what it spends. A busy channel degrades fairly instead of collapsing.
In the firmware since 0.5, not yet measured between boards.
Addresses are public keys
A node is named by its key, so who you are talking to is something you can check, not something you are told.
In the firmware.
Each link picks its own speed
Close neighbours talk fast and distant ones talk slow, inside a loosely synchronised schedule, so one slow link does not slow the whole mesh.
Not built yet: today every link in a region uses the same speed.
Infrastructure and leaves
Fixed relays carry the routing. Handhelds and sensors are leaves that can sleep on a schedule and still receive their messages.
Relays and leaves are in the firmware; leaves that sleep are not built yet.
Private by default
What goes over the air is meant to reveal as little as possible about who is talking to whom.
In the firmware; its cryptography has not been reviewed yet.
Gateways are peers
Bridges to the internet or to other meshes sit at the application layer, not inside the routing.
Not built yet.
How it is being built
Specification first. Routing is decided by simulation before any of it is written down, and the simulator is calibrated against bench measurements of real radios. An implementation is Tern-compatible if it passes the published conformance tests; nobody's permission is needed.
ternmesh/spec
The specification and conformance test vectors. This is the protocol.
ternmesh/sim
A simulator, calibrated on real SX1262 radios, that decides the routing design.
ternmesh/firmware
The reference implementation, one of any number that can exist.
Open for good
- The specification is CC-BY-4.0, the test vectors CC0, the code Apache-2.0.
- Contributions are signed off under the DCO. There is no CLA.
- The specification will never need a fee, membership or certification to implement.
- The name, this domain and the GitHub organisation are held for the project, not for a company.
The commitments are in full in GOVERNANCE.md.