The best way to get started with the Reticulum Network Stack depends on what you want to do. For full details and examples, have a look at the Getting Started Fast section of the Reticulum Manual.
Please Know! Reticulum is still in beta. This means, that while it already works very well, and is very stable, there could very well still be critical bugs or flaws in the behaviour, privacy or security of the system as a whole. Use Reticulum if you are comfortable with this, and understand the implications.
If you are having trouble, or if something is not working, here are some great places to ask for help:
#reticulum:matrix.org
To install Reticulum and related utilities on your system, the easiest way is via pip:
pip install rns
You can then start any program that uses Reticulum, or start Reticulum as a system service with the rnsd utility.
If pip
is not available on your system, install the python3
and python3-pip
packages for your OS first.
When first started, Reticulum will create a default configuration file, providing basic connectivity to other Reticulum peers that might be locally reachable. If any of those local peers are Transport Instances, these might connect you to wider networks. The default config file contains a few examples, and references for creating a more complex configuration.
For more detailed examples on how to expand communication over many mediums such as packet radio or LoRa, serial ports, or over fast IP links and the Internet using the UDP and TCP interfaces, take a look at the Supported Interfaces section of the Reticulum Manual.
Reticulum includes a range of useful utilities for managing your networks, viewing status and information, and other tasks. You can read more about these programs in the Included Utility Programs section of the Reticulum Manual.
rnsd
for running Reticulum as an always-available servicernstatus
, that displays information about interfacesrnpath
letting you view and modify path tablesrnprobe
for checking connectivity to destinationsrncp
making it easy to copy files to remote systemsrnx
that let's you run commands and programs and retrieve output from remote systemsAll tools, including rnx
and rncp
, work reliably and well even over very low-bandwidth links like LoRa or Packet Radio.
If you want to quickly get an idea of what Reticulum can do, take a look at the following resources.
The installation of the default rns
package requires the dependencies listed below. Almost all systems and distributions have readily available packages for these dependencies, and when the rns
package is installed with pip
, they will be downloaded and installed as well.
On more unusual systems, and in some rare cases, it might not be possible to install or even compile one or more of the above modules. In such situations, you can use the rnspure
package instead, which require no external dependencies for installation. Please note that the contents of the rns
and rnspure
packages are identical. The only difference is that the rnspure
package lists no dependencies required for installation.
No matter how Reticulum is installed and started, it will load external dependencies only if they are needed and available. If for example you want to use Reticulum on a system that cannot support pyserial, it is perfectly possible to do so using the rnspure
package, but Reticulum will not be able to use serial-based interfaces. All other available modules will still be loaded when needed.
Please Note! If you use the rnspure
package to run Reticulum on systems that do not support PyCA/cryptography, it is important that you read and understand the Cryptographic Primitives section of this site.
Reticulum targets a very wide usable performance envelope, but prioritises functionality and performance over low-bandwidth mediums. The goal is to provide a dynamic performance envelope from 250 bits per second, to 1 gigabit per second on normal hardware.
Currently, the usable performance envelope is approximately 500 bits per second to 20 megabits per second, with physical mediums faster than that not being saturated. Performance beyond the current level is intended for future upgrades, but not highly prioritised until the wire format and API has been locked in.