Pre-draft · nothing to install yet
Tern
An open LoRa mesh protocol that treats airtime as a shared, metered resource.
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.
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.
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.
Infrastructure and leaves
Fixed relays carry the routing. Handhelds and sensors are leaves that can sleep on a schedule and still receive their messages.
Private by default
What goes over the air is meant to reveal as little as possible about who is talking to whom.
Gateways are peers
Bridges to the internet or to other meshes sit at the application layer, not inside the routing.
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.