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