<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.scotmesh.net/index.php?action=history&amp;feed=atom&amp;title=How_Reticulum_works</id>
	<title>How Reticulum works - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.scotmesh.net/index.php?action=history&amp;feed=atom&amp;title=How_Reticulum_works"/>
	<link rel="alternate" type="text/html" href="https://wiki.scotmesh.net/index.php?title=How_Reticulum_works&amp;action=history"/>
	<updated>2026-09-18T23:56:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.scotmesh.net/index.php?title=How_Reticulum_works&amp;diff=75&amp;oldid=prev</id>
		<title>ScotMesh: Added after the move to MediaWiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.scotmesh.net/index.php?title=How_Reticulum_works&amp;diff=75&amp;oldid=prev"/>
		<updated>2026-09-11T14:49:57Z</updated>

		<summary type="html">&lt;p&gt;Added after the move to MediaWiki&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[What Reticulum is]] explains what Reticulum is for. This page explains how it does it: the handful of ideas that everything else in this wiki builds on. None of it is needed to [[Connecting to ScotMesh|get connected]], but it makes the rest of the network much less mysterious.&lt;br /&gt;
&lt;br /&gt;
== Identities and addresses ==&lt;br /&gt;
&lt;br /&gt;
Everything in Reticulum starts with an &amp;#039;&amp;#039;&amp;#039;identity&amp;#039;&amp;#039;&amp;#039;: a pair of cryptographic keys, one for encrypting and one for signing. Nobody issues identities. Your software makes one, and it is yours for as long as you keep the file.&lt;br /&gt;
&lt;br /&gt;
From an identity you create &amp;#039;&amp;#039;&amp;#039;destinations&amp;#039;&amp;#039;&amp;#039;, one for each thing you want to be reachable for: your messages, a Nomad Network node, a chat hub. Each destination has an &amp;#039;&amp;#039;&amp;#039;address&amp;#039;&amp;#039;&amp;#039; of 16 bytes, written as 32 hexadecimal characters, for example the ScotMesh Nomad Network node:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;10a839df2c50635bcb0c8a299b9ca0f8&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The address is worked out from the identity&amp;#039;s public key and the name of the application, so it cannot be claimed by anyone else and does not depend on where you are connected. Move your laptop from home broadband to a LoRa radio on a hill and your address stays the same.&lt;br /&gt;
&lt;br /&gt;
== Announces and paths ==&lt;br /&gt;
&lt;br /&gt;
[[File:reticulum-paths.svg|center|frameless|upright=3.6|A destination announces itself; each transport node passes the announce on and remembers where it came from; packets then follow the remembered hops]]&lt;br /&gt;
&lt;br /&gt;
There is no directory of who is where. Instead a destination &amp;#039;&amp;#039;&amp;#039;announces&amp;#039;&amp;#039;&amp;#039; itself now and then: a small signed packet carrying its address, its public key and, optionally, a little application data such as a node&amp;#039;s name.&lt;br /&gt;
&lt;br /&gt;
[[Glossary#Transport node|Transport nodes]] pass announces on to their other interfaces, and each one remembers two things: which neighbour it heard the announce from, and how many hops away the destination is. That is a &amp;#039;&amp;#039;&amp;#039;path&amp;#039;&amp;#039;&amp;#039;. When a packet for that address arrives later, each transport node simply sends it on towards the neighbour it remembered. No node ever needs a map of the whole network.&lt;br /&gt;
&lt;br /&gt;
If your software has not heard an announce yet, it does not have to wait for the next one: it can send a &amp;#039;&amp;#039;&amp;#039;path request&amp;#039;&amp;#039;&amp;#039;, and a node that knows the way answers on the destination&amp;#039;s behalf.&lt;br /&gt;
&lt;br /&gt;
Announces are rate-limited and carry a hop count, so a busy network does not drown in them. The flip side is that a node which announces rarely is hard to find; the [[Nomad Network]] and [[Running your own transport node]] pages say what interval to use.&lt;br /&gt;
&lt;br /&gt;
== Transport nodes and clients ==&lt;br /&gt;
&lt;br /&gt;
Any Reticulum program can send and receive. Only a &amp;#039;&amp;#039;&amp;#039;transport node&amp;#039;&amp;#039;&amp;#039; forwards traffic for other people, and it does so because its owner set &amp;lt;code&amp;gt;enable_transport = Yes&amp;lt;/code&amp;gt;. Clients (a phone running Sideband, a laptop running MeshChatX) usually are not transport nodes; the machines they connect to are.&lt;br /&gt;
&lt;br /&gt;
A transport node only ever handles encrypted packets. It can see that a packet is going to an address, never what it says or who sent it: Reticulum packets carry &amp;#039;&amp;#039;&amp;#039;no sender address&amp;#039;&amp;#039;&amp;#039; at all. That is why [[Who we peer with|peering]] costs a node&amp;#039;s operator nothing in privacy.&lt;br /&gt;
&lt;br /&gt;
The [[The ScotMesh node|ScotMesh backbone]] is a transport node on the internet. A solar relay running the [[ScotMesh firmware]] is a transport node on LoRa. Connect the two and the radio and internet sides become one network.&lt;br /&gt;
&lt;br /&gt;
== Links: private conversations ==&lt;br /&gt;
&lt;br /&gt;
For anything more than a single packet, two parties set up a &amp;#039;&amp;#039;&amp;#039;link&amp;#039;&amp;#039;&amp;#039;: an encrypted, verified connection agreed with fresh keys each time, so recording today&amp;#039;s traffic does not help anyone read it after a key is later stolen (forward secrecy). Setting one up takes three small packets, which is why links work even over slow radio.&lt;br /&gt;
&lt;br /&gt;
Browsing a Nomad Network page, transferring a file with &amp;lt;code&amp;gt;rncp&amp;lt;/code&amp;gt; or opening an admin page on a ScotMesh firmware node all happen over a link.&lt;br /&gt;
&lt;br /&gt;
== Interfaces: what carries the traffic ==&lt;br /&gt;
&lt;br /&gt;
Reticulum does not care what carries its packets. Each way in or out is an &amp;#039;&amp;#039;&amp;#039;interface&amp;#039;&amp;#039;&amp;#039; in the configuration, and a node can have as many as it likes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interface !! Carries traffic over !! Typical use&lt;br /&gt;
|-&lt;br /&gt;
| TCP client or server || The internet or a local network || Connecting to the [[Connecting to ScotMesh|ScotMesh backbone]]&lt;br /&gt;
|-&lt;br /&gt;
| I2P || The I2P anonymising network || [[Access over I2P|Reaching the backbone from behind CGNAT]]&lt;br /&gt;
|-&lt;br /&gt;
| RNode || LoRa radio, through an [[RNode]] || Links with no internet at all, over kilometres&lt;br /&gt;
|-&lt;br /&gt;
| UDP / Auto || The local network || Machines in the same house finding each other with no setup&lt;br /&gt;
|-&lt;br /&gt;
| Serial, KISS, AX.25 || Cables, packet radio modems || Point-to-point and amateur radio links&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Interfaces also have a &amp;#039;&amp;#039;&amp;#039;mode&amp;#039;&amp;#039;&amp;#039; that decides how announces and path requests are treated on them: &amp;#039;&amp;#039;full&amp;#039;&amp;#039; (the default), &amp;#039;&amp;#039;gateway&amp;#039;&amp;#039; (answers path requests for the clients behind it), &amp;#039;&amp;#039;access point&amp;#039;&amp;#039; (for a node that serves passing devices), &amp;#039;&amp;#039;roaming&amp;#039;&amp;#039; (for a node that moves) and &amp;#039;&amp;#039;boundary&amp;#039;&amp;#039; (the edge between two networks).&lt;br /&gt;
&lt;br /&gt;
== Built for slow links ==&lt;br /&gt;
&lt;br /&gt;
Reticulum is designed to keep working when the link is terrible. It needs only half-duplex, it works down to around &amp;#039;&amp;#039;&amp;#039;5 bits per second&amp;#039;&amp;#039;&amp;#039;, and a packet is never larger than &amp;#039;&amp;#039;&amp;#039;500 bytes&amp;#039;&amp;#039;&amp;#039;. Over LoRa that decides how applications are built: the ScotMesh firmware keeps every page under a single radio packet so it loads first time, and messages are sent whole rather than streamed.&lt;br /&gt;
&lt;br /&gt;
== Messages: LXMF ==&lt;br /&gt;
&lt;br /&gt;
Most people&amp;#039;s first use of Reticulum is messaging. Messages use &amp;#039;&amp;#039;&amp;#039;LXMF&amp;#039;&amp;#039;&amp;#039;, a message format that sits on top of Reticulum and is spoken by Sideband, MeshChatX and Nomad Network alike, so they can all message each other.&lt;br /&gt;
&lt;br /&gt;
When the other person is online, a message goes to them directly. When they are not, it goes to a &amp;#039;&amp;#039;&amp;#039;propagation node&amp;#039;&amp;#039;&amp;#039;, which holds it until they reappear. Propagation nodes share their stored messages with each other, so it does not matter which one the recipient happens to use. The messages are encrypted for the recipient; the node that holds them cannot read them. ScotMesh runs one; see [[Propagation node]].&lt;br /&gt;
&lt;br /&gt;
== Where to go from here ==&lt;br /&gt;
&lt;br /&gt;
* [[Connecting to ScotMesh]]: get on the network.&lt;br /&gt;
* [[Choosing a client]]: Sideband, MeshChatX, Nomad Network.&lt;br /&gt;
* [[Glossary]]: every term above, in a sentence or two.&lt;br /&gt;
* The [https://reticulum.network/manual/ Reticulum manual]: the authoritative reference, written by Reticulum&amp;#039;s author.&lt;br /&gt;
&lt;br /&gt;
[[Category:Getting Started]]&lt;/div&gt;</summary>
		<author><name>ScotMesh</name></author>
	</entry>
</feed>