/ docs / source / software.rst
software.rst
  1  .. _software-main:
  2  
  3  ************************
  4  Programs Using Reticulum
  5  ************************
  6  
  7  This chapter provides a non-exhaustive list of notable programs, systems and application-layer
  8  protocols that have been built using Reticulum.
  9  
 10  These programs will let you get a feel for how Reticulum works. Most of them have been designed
 11  to run well even over slow networks based on LoRa or packet radio, but all can also be used over fast
 12  links, such as local WiFi, wired Ethernet, the Internet, or any combination.
 13  
 14  As such, it is easy to get started experimenting, without having to set up any radio
 15  transceivers or infrastructure just to try it out. Launching the programs on separate
 16  devices connected to the same WiFi network is enough to get started, and physical
 17  radio interfaces can then be added later.
 18  
 19  Programs & Utilities
 20  ====================
 21  
 22  Many different applications using Reticulum already exist, serving a wide variety of purposes
 23  from day-to-day communication and information sharing to systems administration and tackling
 24  advanced networking and communications challenges.
 25  
 26  Development of Reticulum-based applications and systems is ongoing, so consider this list
 27  a non-exhaustive starting point of *some* of the options available. With a bit of searching,
 28  primarily over Reticulum itself, you will find many more interesting things.
 29  
 30  Remote Shell
 31  ^^^^^^^^^^^^
 32  
 33  The `rnsh <https://github.com/acehoss/rnsh>`_ program lets you establish fully interactive
 34  remote shell sessions over Reticulum. It also allows you to pipe any program to or from a
 35  remote system, and is similar to how ``ssh`` works. The ``rnsh`` program is very efficient, and
 36  can facilitate fully interactive shell sessions, even over extremely low-bandwidth links,
 37  such as LoRa or packet radio.
 38  
 39  In addition to the default, fully interactive terminal mode,
 40  for extremely limited links, ``rnsh`` offers line-interactive mode, allowing you to interact
 41  with remote systems, even when link throughput is counted in a few hundreds of bits per second.
 42  
 43  .. raw:: latex
 44  
 45      \newpage
 46  
 47  Nomad Network
 48  ^^^^^^^^^^^^^
 49  
 50  The terminal-based program `Nomad Network <https://github.com/markqvist/nomadnet>`_
 51  provides a complete encrypted communications suite built with Reticulum. It features
 52  encrypted messaging (both direct and delayed-delivery for offline users), file sharing,
 53  and has a built-in text-browser and page server with support for dynamically rendered pages,
 54  user authentication and more.
 55  
 56  .. image:: screenshots/nomadnet_3.png
 57      :target: https://github.com/markqvist/nomadnet
 58  
 59  `Nomad Network <https://github.com/markqvist/nomadnet>`_ is a user-facing client
 60  for the messaging and information-sharing protocol LXMF.
 61  
 62  RNS Page Node
 63  ^^^^^^^^^^^^^
 64  
 65  `RNS Page Node <https://git.quad4.io/RNS-Things/rns-page-node>`_ is a simple way to serve pages and files to any other Nomad Network compatible client. Drop-in replacement for NomadNet nodes that primarily serve pages and files.
 66  
 67  
 68  Retipedia
 69  ^^^^^^^^^
 70  
 71  You can host the entirity of Wikipedia (or any ``.zim``) file to other Nomad Network clients using `Retipedia <https://github.com/RFnexus/Retipedia>`_.
 72  
 73  
 74  .. raw:: latex
 75  
 76      \newpage
 77  
 78  Sideband
 79  ^^^^^^^^
 80  
 81  If you would rather use an LXMF client with a graphical user interface, you can take
 82  a look at `Sideband <https://unsigned.io/sideband>`_, which is available for Android,
 83  Linux, macOS and Windows. Sideband is an advanced LXMF and LXST client, and a multi-purpose Reticulum
 84  utility, with features and functionality targeted at advanced users.
 85  
 86  .. only:: html
 87  
 88    .. image:: screenshots/sideband_devices.webp
 89        :align: center
 90        :target: https://unsigned.io/sideband
 91  
 92  .. only:: latex
 93  
 94    .. image:: screenshots/sideband_devices.png
 95        :align: center
 96        :target: https://unsigned.io/sideband
 97  
 98  Sideband allows you to communicate with other people or LXMF-compatible
 99  systems over Reticulum networks using LoRa, Packet Radio, WiFi, I2P, Encrypted QR
100  Paper Messages, or anything else Reticulum supports.
101  
102  It also interoperates with all other LXMF clients, and provides advanced features such as voice messaging,
103  real-time voice calls, file attachments, private telemetry sharing, and a full
104  plugin system for expandability.
105  
106  .. raw:: latex
107  
108      \newpage
109  
110  MeshChatX
111  ^^^^^^^^
112  
113  A `Reticulum MeshChat fork from the future <https://git.quad4.io/RNS-Things/MeshChatX>`_, with the goal of providing everything you need for Reticulum, LXMF, and LXST in one beautiful and feature-rich application. This project is separate from the original Reticulum MeshChat project, and is not affiliated with the original project.
114  
115  .. only:: html
116  
117    .. image:: screenshots/meshchatx.webp
118        :align: center
119        :target: https://git.quad4.io/RNS-Things/MeshChatX
120  
121  .. only:: latex
122  
123    .. image:: screenshots/meshchatx.png
124        :align: center
125        :target: https://git.quad4.io/RNS-Things/MeshChatX
126  
127  
128  Features include full LXST support, custom voicemail, phonebook, contact sharing, and ringtone support, multi-identity handling, modern UI/UX, offline documentation, expanded tools, page archiving, integrated maps and improved application security.
129  
130  .. raw:: latex
131  
132      \newpage
133  
134  MeshChat
135  ^^^^^^^^
136  
137  The `Reticulum MeshChat <https://github.com/liamcottle/reticulum-meshchat>`_ application
138  is a user-friendly LXMF client for Linux, macOS and Windows, that also includes a Nomad Network
139  page browser and other interesting functionality.
140  
141  .. only:: html
142  
143    .. image:: screenshots/meshchat_1.webp
144        :align: center
145        :target: https://github.com/liamcottle/reticulum-meshchat
146  
147  .. only:: latex
148  
149    .. image:: screenshots/meshchat_1.png
150        :align: center
151        :target: https://github.com/liamcottle/reticulum-meshchat
152  
153  Reticulum MeshChat is of course also compatible with Sideband and Nomad Network, or
154  any other LXMF client.
155  
156  Columba
157  ^^^^^^^
158  
159  `Columba <https://github.com/torlando-tech/columba/>`_ is a simple and familiar LXMF
160  messaging app Android, built with a native Android interface and Material Design 3.
161  
162  .. only:: html
163  
164    .. image:: screenshots/columba.webp
165        :align: center
166        :width: 25%
167        :target: https://github.com/torlando-tech/columba/
168  
169  .. only:: latex
170  
171    .. image:: screenshots/columba.png
172        :align: center
173        :width: 25%
174        :target: https://github.com/torlando-tech/columba/
175  
176  While still in early and very active development, it is of course also compatible
177  with all other LXMF clients, and allows you to message seamlessly with anyone else
178  using LXMF.
179  
180  .. raw:: latex
181  
182      \newpage
183  
184  Reticulum Relay Chat
185  ^^^^^^^^^^^^^^^^^^^^
186  
187  `Reticulum Relay Chat <https://rrc.kc1awv.net/>`_ is a live chat system built on top of the Reticulum Network Stack. It exists to let people talk to each other in real time over Reticulum without dragging in message databases, synchronization engines, or architectural commitments they did not ask for.
188  
189  The `rrcd <https://github.com/kc1awv/rrcd>`_ program provides a functional, reference RRC hub-server daemon implementation. RRC user clients include `rrc-gui <https://github.com/kc1awv/rrc-gui>`_ and `rrc-web <https://github.com/kc1awv/rrc-web>`_.
190  
191  RRC is closer in spirit to IRC than to modern “everything platforms.” You connect, you join a room, you talk, and then you leave. If you were present, you saw the conversation. If you were not, the conversation did not wait for you. This is not an accident. This is the entire design.
192  
193  RetiBBS
194  ^^^^^^^
195  
196  `RetiBBS <https://github.com/kc1awv/RetiBBS>`_ is a bulletin board system implementation for Reticulum networks.
197  
198  .. only:: html
199  
200    .. image:: screenshots/retibbs.webp
201        :align: center
202        :target: https://github.com/kc1awv/RetiBBS
203  
204  .. only:: latex
205  
206    .. image:: screenshots/retibbs.png
207        :align: center
208        :target: https://github.com/kc1awv/RetiBBS
209  
210  RetiBBS allows users to communicate through message boards in a secure manner.
211  
212  .. raw:: latex
213  
214      \newpage
215  
216  RBrowser
217  ^^^^^^^^
218  
219  The `rBrowser <https://github.com/fr33n0w/rBrowser>`_ program is a cross-platoform, standalone, web-based browser for exploring NomadNetwork Nodes over Reticulum Network. It automatically discovers NomadNet nodes through network announces and provides a user-friendly interface for browsing distributed content with Micron markup support.
220  
221  .. only:: html
222  
223    .. image:: screenshots/rbrowser.webp
224        :align: center
225        :target: https://github.com/fr33n0w/rBrowser
226  
227  .. only:: latex
228  
229    .. image:: screenshots/rbrowser.png
230        :align: center
231        :target: https://github.com/fr33n0w/rBrowser
232  
233  Includes useful features like automatic listening for announce, adding nodes to favorites, browsing and rendering any kind of NomadNet links, downloading files from remote nodes, a unique local NomadNet Search Engine and more.
234  
235  
236  .. raw:: latex
237  
238      \newpage
239  
240  Reticulum Network Telephone
241  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
242  
243  The ``rnphone`` program, included as part of the `LXST <https://github.com/markqvist/LXST>`_ package is a command-line Reticulum telephone utility and daemon, that allows building physical, hardware telephones for LXST and Reticulum, as well as simply performing calls via the command line.
244  
245  .. only:: html
246  
247    .. image:: screenshots/rnphone.webp
248        :align: center
249        :target: https://github.com/markqvist/LXST
250  
251  .. only:: latex
252  
253    .. image:: screenshots/rnphone.jpg
254        :align: center
255        :target: https://github.com/markqvist/LXST
256  
257  It supports interfacing directly with hardware peripherals such as GPIO keypads and LCD displays, providing a modular system for building secure hardware telephones.
258  
259  .. raw:: latex
260  
261      \newpage
262  
263  LXST Phone
264  ^^^^^^^^^^
265  
266  The `LXST Phone <https://github.com/kc1awv/lxst_phone>`_ program is a cross-platform desktop application for performing LXST voice calls over Reticulum.
267  
268  .. only:: html
269  
270    .. image:: screenshots/lxst_phone.webp
271        :align: center
272        :target: https://github.com/kc1awv/lxst_phone
273  
274  .. only:: latex
275  
276    .. image:: screenshots/lxst_phone.png
277        :align: center
278        :target: https://github.com/kc1awv/lxst_phone
279  
280  It supports various advanced features such as SAS verification, peer blocking, rate limiting, encrypted call history storage and contact management.
281  
282  
283  .. raw:: latex
284  
285      \newpage
286  
287  LXMFy
288  ^^^^^
289  
290  `LXMFy <https://lxmfy.quad4.io/>`_ is a comprehensive and advanced bot creation framework for LXMF, that allows building any kind of automation or bot system running over LXMF and Reticulum. `Bot implementations exist <https://github.com/lxmfy/awesome-lxmfy-bots>`_ for Home Assistant control, LLM integrations, and various other purposes.
291  
292  
293  LXMF Interactive Client
294  ^^^^^^^^^^^^^^^^^^^^^^^
295  
296  `LXMF Interactive Client <https://github.com/fr33n0w/lxmf-cli>`_ is a feature-rich, terminal-based LXMF messaging client with many advanced features and an extensible plugin architecture.
297  
298  RNS FileSync
299  ^^^^^^^^^^^^
300  
301  The `RNS FileSync <https://git.quad4.io/RNS-Things/RNS-Filesync>`_ program enables automatic file synchronization between devices without requiring central servers, internet connectivity, or cloud services. It works over any network medium supported by Reticulum, including radio, LoRa, WiFi, or the internet, making it ideal for off-grid, privacy-focused, and resilient file sharing.
302  
303  
304  Micron Parser JS
305  ^^^^^^^^^^^^^^^^
306  
307  `Micron Parser JS <https://github.com/RFnexus/micron-parser-js>`_ is the JavaScript-based parser for the Micron markup language, that most web-based Nomad Network browsers use. If you want to make utilities or tools that display Micron pages, this library is essential.
308  
309  
310  RNMon
311  ^^^^^
312  
313  `RNMon <https://github.com/lbatalha/rnmon>`_ is a monitoring daemon designed to monitor the status of multiple RNS applications and push the metrics to an InfluxDB instance over the influx line protocol.
314  
315  
316  .. raw:: latex
317  
318      \newpage
319  
320  Protocols
321  =========
322  
323  A number of standard protocols have emerged through real-world usage and testing in the Reticulum community. While you may sometimes want to use completely custom protocols and implementations when writing Reticulum-based software, using these protocols provides application developers with an easy way to implement advanced functionality quickly and effortlessly. Using them also ensures compatibility and interoperability between many different client applications, creating an open communications ecosystem where users are free to choose the applications that suit their needs, while remaining connected to everyone else.
324  
325  LXMF
326  ^^^^
327  
328  `LXMF <https://github.com/markqvist/lxmf>`_ is a simple and flexible messaging format and delivery protocol that allows a wide variety of applications, while using as little bandwidth as possible. It offers zero-conf message routing, end-to-end encryption and Forward Secrecy, and can be transported over any kind of medium that Reticulum supports.
329  
330  LXMF is efficient enough that it can deliver messages over extremely low-bandwidth systems such as packet radio or LoRa. Encrypted LXMF messages can also be encoded as QR-codes or text-based URIs, allowing completely analog paper message transport.
331  
332  Using Propagation Nodes, LXMF also offer a way to store and forward messages to users or endpoints that are not directly reachable at the time of message emission.
333  
334  LXST
335  ^^^^
336  
337  `LXST <https://github.com/markqvist/lxst>`_ is a simple and flexible real-time streaming format and delivery protocol that allows a wide variety of applications, while using as little bandwidth as possible. It is built on top of Reticulum and offers zero-conf stream routing, end-to-end encryption and Forward Secrecy, and can be transported over any kind of medium that Reticulum supports. It currently powers real-time voice and telephony applications over Reticulum.
338  
339  RRC
340  ^^^
341  
342  The `Reticulum Relay Chat <https://rrc.kc1awv.net/>`_ protocol, is a live chat system built on top of the Reticulum Network Stack. It exists to provide near real-time group communication without dragging in message history databases, federation machinery, or architectural guilt.
343  
344  RRC is intentionally simple. It does not pretend to be email, a mailbox, or a distributed archive. It behaves more like a conversation in a room. If you were there, you heard it. If you were not, you did not. That is not a bug, that is the point.
345  
346  Interface Modules & Connectivity Resources
347  ==========================================
348  
349  This section provides a list of various community-provided interface modules, guides and resources for creating Reticulum networks over special or challenging mediums.
350  
351  * Custom interface module for running `RNS over HTTP <https://git.quad4.io/RNS-Things/RNS-over-HTTP>`_
352  * Guide for running `Reticulum over ICMP <https://github.com/matvik22000/rns-over-icmp>`_ using ``PipeInterface``
353  * Guide for running `Reticulum over DNS <https://github.com/markqvist/Reticulum/discussions/1002>`_ with Iodine
354  * Guide for running `Reticulum over HF radio <https://github.com/RFnexus/reticulum-over-hf>`_
355  * `Modem73 <https://github.com/RFnexus/modem73>`_ is a KISS TNC OFDM modem frontend that can be used with Reticulum