diff --git a/docs/manual/.buildinfo b/docs/manual/.buildinfo index 73fac0d..ca1af37 100644 --- a/docs/manual/.buildinfo +++ b/docs/manual/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: ca50760ac810704080bd9b8fd39823dc +config: bf2e68cefd79a49afe077549bac593bf tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/manual/_sources/gettingstartedfast.rst.txt b/docs/manual/_sources/gettingstartedfast.rst.txt index 9082e99..8f65586 100644 --- a/docs/manual/_sources/gettingstartedfast.rst.txt +++ b/docs/manual/_sources/gettingstartedfast.rst.txt @@ -23,14 +23,35 @@ You can install Nomad Network via pip: .. code:: - # Install + # Install ... pip3 install nomadnet - # And run + # ... and run nomadnet +Creating a Network With Reticulum +============================================= + +To create a network, you will need to specify one or more *interfaces* for +Reticulum to use. This is done in the Reticulum configuration file, which by +default is located at ``~/.reticulum/config``. + +When Reticulum is started for the first time, it will create a default +configuration file, with one active interface. This default interface uses +your existing ethernet network (if there is one), and only allows you to +communicate with other Reticulum peers within your local broadcast domain. + +To communicate further, you will have to add one or more interfaces. The default +configuration includes a number of examples, ranging from using TCP over the +internet, to LoRa and Packet Radio interfaces. + +Possibly, the examples in the config file are enough to gen you started. If +you want more information, you can read the :ref:`Interfaces` +chapter of this manual. + + Develop a Program with Reticulum =========================================== If you want to develop programs that use Reticulum, the easiest way to get @@ -56,7 +77,7 @@ don't use pip, but try this recipe: .. code:: # Install dependencies - pip3 install cryptography pyserial + pip3 install cryptography pyserial netifaces # Clone repository git clone https://github.com/markqvist/Reticulum.git diff --git a/docs/manual/_sources/index.rst.txt b/docs/manual/_sources/index.rst.txt index bafc699..418fc0c 100644 --- a/docs/manual/_sources/index.rst.txt +++ b/docs/manual/_sources/index.rst.txt @@ -10,6 +10,7 @@ the development of Reticulum itself. whatis gettingstartedfast + networks understanding reference examples diff --git a/docs/manual/_sources/whatis.rst.txt b/docs/manual/_sources/whatis.rst.txt index 9b9e128..9c8b219 100644 --- a/docs/manual/_sources/whatis.rst.txt +++ b/docs/manual/_sources/whatis.rst.txt @@ -6,9 +6,9 @@ Reticulum is a cryptography-based networking stack for wide-area networks built Reticulum allows you to build very wide-area networks with off-the-shelf tools, and offers end-to-end encryption, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable packet acknowledgements and more. -Reticulum is a complete networking stack, and does not use IP or higher layers, although it is easy to utilise IP (with TCP or UDP) as the underlying carrier for Reticulum. It is therefore trivial to tunnel Reticulum over the Internet or private IP networks. Reticulum is built directly on cryptographic principles, allowing resilience and stable functionality in open and trustless networks. +Reticulum is a complete networking stack, and does not need IP or higher layers, although it is easy to utilise IP (with TCP or UDP) as the underlying carrier for Reticulum. It is therefore trivial to tunnel Reticulum over the Internet or private IP networks. Reticulum is built directly on cryptographic principles, allowing resilience and stable functionality in open and trustless networks. -No kernel modules or drivers are required. Reticulum runs completely in userland, and can run on practically any system that runs Python 3. +No kernel modules or drivers are required. Reticulum runs completely in userland, and can run on practically any system that runs Python 3. Reticulum runs well even on small single-board computers like the Pi Zero. Current Status diff --git a/docs/manual/_static/documentation_options.js b/docs/manual/_static/documentation_options.js index dd0fc0e..ee435f4 100644 --- a/docs/manual/_static/documentation_options.js +++ b/docs/manual/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.2.5 beta', + VERSION: '0.2.6 beta', LANGUAGE: 'None', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/manual/examples.html b/docs/manual/examples.html index 15101a2..cfd0cd9 100644 --- a/docs/manual/examples.html +++ b/docs/manual/examples.html @@ -5,7 +5,7 @@ - Examples — Reticulum Network Stack 0.2.5 beta documentation + Examples — Reticulum Network Stack 0.2.6 beta documentation @@ -27,7 +27,7 @@
  • previous |
  • - + @@ -2319,7 +2319,7 @@ interface to efficiently pass files of any size over a Reticulum previous | - + diff --git a/docs/manual/genindex.html b/docs/manual/genindex.html index def0064..feed7c3 100644 --- a/docs/manual/genindex.html +++ b/docs/manual/genindex.html @@ -5,7 +5,7 @@ - Index — Reticulum Network Stack 0.2.5 beta documentation + Index — Reticulum Network Stack 0.2.6 beta documentation @@ -23,7 +23,7 @@
  • index
  • - + @@ -255,10 +255,14 @@

    N

    @@ -412,7 +416,7 @@
  • index
  • - + diff --git a/docs/manual/gettingstartedfast.html b/docs/manual/gettingstartedfast.html index 8e4b6a9..13694d5 100644 --- a/docs/manual/gettingstartedfast.html +++ b/docs/manual/gettingstartedfast.html @@ -5,7 +5,7 @@ - Getting Started Fast — Reticulum Network Stack 0.2.5 beta documentation + Getting Started Fast — Reticulum Network Stack 0.2.6 beta documentation @@ -16,7 +16,7 @@ - + @@ -56,14 +56,30 @@ provides a basic encrypted communications suite built completely on Reticulum.LXMF, another project built with Reticulum.

    You can install Nomad Network via pip:

    -
    # Install
    +
    # Install ...
     pip3 install nomadnet
     
    -# And run
    +# ... and run
     nomadnet
     
    +
    +

    Creating a Network With Reticulum

    +

    To create a network, you will need to specify one or more interfaces for +Reticulum to use. This is done in the Reticulum configuration file, which by +default is located at ~/.reticulum/config.

    +

    When Reticulum is started for the first time, it will create a default +configuration file, with one active interface. This default interface uses +your existing ethernet network (if there is one), and only allows you to +communicate with other Reticulum peers within your local broadcast domain.

    +

    To communicate further, you will have to add one or more interfaces. The default +configuration includes a number of examples, ranging from using TCP over the +internet, to LoRa and Packet Radio interfaces.

    +

    Possibly, the examples in the config file are enough to gen you started. If +you want more information, you can read the Interfaces +chapter of this manual.

    +

    Develop a Program with Reticulum

    If you want to develop programs that use Reticulum, the easiest way to get @@ -82,7 +98,7 @@ likely be to look at some

    # Install dependencies
    -pip3 install cryptography pyserial
    +pip3 install cryptography pyserial netifaces
     
     # Clone repository
     git clone https://github.com/markqvist/Reticulum.git
    @@ -129,6 +145,7 @@ don’t use pip, but try this recipe:

    @@ -54,10 +54,22 @@ the development of Reticulum itself.

  • Getting Started Fast
  • +
  • Building Networks +
  • Understanding Reticulum
  • diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv index 94c9a43..467c352 100644 Binary files a/docs/manual/objects.inv and b/docs/manual/objects.inv differ diff --git a/docs/manual/reference.html b/docs/manual/reference.html index b2e1fd7..979eb62 100644 --- a/docs/manual/reference.html +++ b/docs/manual/reference.html @@ -5,7 +5,7 @@ - API Reference — Reticulum Network Stack 0.2.5 beta documentation + API Reference — Reticulum Network Stack 0.2.6 beta documentation @@ -31,7 +31,7 @@
  • previous |
  • - +
    @@ -51,7 +51,7 @@

    Reticulum

    -class RNS.Reticulum(configdir=None)
    +class RNS.Reticulum(configdir=None, loglevel=None)

    This class is used to initialise access to Reticulum within a program. You must create exactly one instance of this class before carrying out any other RNS operations, such as creating destinations @@ -1128,6 +1128,32 @@ Transport system of Reticulum.

    +
    +
    +static next_hop(destination_hash)
    +
    +
    Parameters
    +

    destination_hash – A destination hash as bytes.

    +
    +
    Returns
    +

    The destination hash as bytes for the next hop to the specified destination, or None if the next hop is unknown.

    +
    +
    +
    + +
    +
    +static next_hop_interface(destination_hash)
    +
    +
    Parameters
    +

    destination_hash – A destination hash as bytes.

    +
    +
    Returns
    +

    The interface for the next hop to the specified destination, or None if the interface is unknown.

    +
    +
    +
    +
    static request_path(destination_hash)
    @@ -1212,7 +1238,7 @@ will announce it.

  • previous |
  • - + diff --git a/docs/manual/search.html b/docs/manual/search.html index 2efe7fa..7c830e5 100644 --- a/docs/manual/search.html +++ b/docs/manual/search.html @@ -5,7 +5,7 @@ - Search — Reticulum Network Stack 0.2.5 beta documentation + Search — Reticulum Network Stack 0.2.6 beta documentation @@ -29,7 +29,7 @@
  • index
  • - + @@ -85,7 +85,7 @@
  • index
  • - + diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index 09e32d0..c82ad78 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["examples","gettingstartedfast","index","reference","understanding","whatis"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["examples.rst","gettingstartedfast.rst","index.rst","reference.rst","understanding.rst","whatis.rst"],objects:{"RNS.Destination":{announce:[3,1,1,""],app_and_aspects_from_name:[3,1,1,""],clear_default_app_data:[3,1,1,""],create_keys:[3,1,1,""],decrypt:[3,1,1,""],deregister_request_handler:[3,1,1,""],encrypt:[3,1,1,""],full_name:[3,1,1,""],get_private_key:[3,1,1,""],hash:[3,1,1,""],hash_from_name_and_identity:[3,1,1,""],load_private_key:[3,1,1,""],register_request_handler:[3,1,1,""],set_default_app_data:[3,1,1,""],set_link_established_callback:[3,1,1,""],set_packet_callback:[3,1,1,""],set_proof_requested_callback:[3,1,1,""],set_proof_strategy:[3,1,1,""],sign:[3,1,1,""]},"RNS.Identity":{CURVE:[3,2,1,""],KEYSIZE:[3,2,1,""],TRUNCATED_HASHLENGTH:[3,2,1,""],decrypt:[3,1,1,""],encrypt:[3,1,1,""],from_bytes:[3,1,1,""],from_file:[3,1,1,""],full_hash:[3,1,1,""],get_private_key:[3,1,1,""],get_public_key:[3,1,1,""],get_random_hash:[3,1,1,""],load_private_key:[3,1,1,""],load_public_key:[3,1,1,""],recall:[3,1,1,""],recall_app_data:[3,1,1,""],sign:[3,1,1,""],to_file:[3,1,1,""],truncated_hash:[3,1,1,""],validate:[3,1,1,""]},"RNS.Link":{CURVE:[3,2,1,""],ESTABLISHMENT_TIMEOUT_PER_HOP:[3,2,1,""],KEEPALIVE:[3,2,1,""],get_remote_identity:[3,1,1,""],identify:[3,1,1,""],inactive_for:[3,1,1,""],no_inbound_for:[3,1,1,""],no_outbound_for:[3,1,1,""],request:[3,1,1,""],set_packet_callback:[3,1,1,""],set_remote_identified_callback:[3,1,1,""],set_resource_callback:[3,1,1,""],set_resource_concluded_callback:[3,1,1,""],set_resource_started_callback:[3,1,1,""],set_resource_strategy:[3,1,1,""],teardown:[3,1,1,""]},"RNS.Packet":{ENCRYPTED_MDU:[3,2,1,""],PLAIN_MDU:[3,2,1,""],resend:[3,1,1,""],send:[3,1,1,""]},"RNS.PacketReceipt":{get_rtt:[3,1,1,""],get_status:[3,1,1,""],set_delivery_callback:[3,1,1,""],set_timeout:[3,1,1,""],set_timeout_callback:[3,1,1,""]},"RNS.RequestReceipt":{get_progress:[3,1,1,""],get_request_id:[3,1,1,""],get_response:[3,1,1,""],get_response_time:[3,1,1,""],get_status:[3,1,1,""]},"RNS.Resource":{advertise:[3,1,1,""],cancel:[3,1,1,""],get_progress:[3,1,1,""]},"RNS.Reticulum":{MTU:[3,2,1,""],should_use_implicit_proof:[3,1,1,""],transport_enabled:[3,1,1,""]},"RNS.Transport":{PATHFINDER_M:[3,2,1,""],deregister_announce_handler:[3,1,1,""],has_path:[3,1,1,""],hops_to:[3,1,1,""],register_announce_handler:[3,1,1,""],request_path:[3,1,1,""]},RNS:{Destination:[3,0,1,""],Identity:[3,0,1,""],Link:[3,0,1,""],Packet:[3,0,1,""],PacketReceipt:[3,0,1,""],RequestReceipt:[3,0,1,""],Resource:[3,0,1,""],Reticulum:[3,0,1,""],Transport:[3,0,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","attribute","Python attribute"]},objtypes:{"0":"py:class","1":"py:method","2":"py:attribute"},terms:{"0":[0,3,4,5],"00":4,"000":[4,5],"00000000":4,"00000100":4,"00000111":4,"01":4,"01010000":4,"05":0,"1":[0,3,4,5],"10":[0,4],"100":[0,4],"1000":[0,4],"1024":0,"11":4,"1200":4,"128":[3,4,5],"14":4,"141":[],"15":4,"151":4,"18":4,"180":4,"182":[],"2":[0,4],"20":[0,4],"205":[],"211":[],"237":[4,5],"240":[],"25":[0,5],"256":[3,4],"270":4,"2f":0,"3":[0,4,5],"323":[],"33":4,"34":4,"360":3,"3600":0,"383":3,"3e12fc71692f8ec47bc5":1,"4":4,"409":[],"430":4,"45":0,"477":[3,4],"5":[0,3,4],"500":[3,4,5],"512":3,"60":0,"62":[4,5],"7":4,"77":4,"8":0,"80":[3,4],"80e29bf7cccaf31431b3":4,"83":4,"86":[],"868":4,"900":4,"95":4,"abstract":4,"break":[3,4,5],"byte":[0,3,4,5],"case":[1,4],"class":[0,2,5],"default":[0,3,4],"do":[0,1,3,4,5],"float":[0,3],"function":[0,2,3,5],"import":[0,1,4],"int":0,"long":[0,4],"new":[0,3,4],"public":[0,2,3],"return":[0,3],"short":4,"static":3,"throw":[],"true":[0,3],"try":[0,2],"while":[0,3,4,5],A:[0,3,4,5],And:[0,1],As:[3,4,5],At:4,Be:3,But:4,By:[0,3,4],For:[3,4],IN:[0,3],If:[0,1,3,4,5],In:[0,1,3,4,5],It:[0,3,4,5],No:[4,5],On:0,One:3,Or:4,That:4,The:[0,1,2,3,5],There:[4,5],These:4,To:[0,4,5],Will:3,With:4,_:4,__:4,______:4,_______:4,________:4,________________:4,__init__:0,__main__:0,__name__:0,_exit:0,ab:0,abl:[0,3,4],about:[0,3,4],abov:[1,4],absolut:[],accept:[3,4],accept_al:[0,3],accept_app:3,accept_non:3,access:[3,4],accord:4,accordingli:0,acheiv:4,achiev:[3,4],acknowledg:5,act:[3,4],action:0,activ:[0,3,4],actor:4,actual:[0,1,4],ad:[0,3,4,5],add:0,add_argu:0,addit:[4,5],addr1:4,addr2:4,address:[0,3,4,5],adher:3,adress:[0,3,5],advantag:3,advertis:[0,3],advis:4,ae:[4,5],after:[0,4],again:[1,4],against:4,agent:4,agnost:4,agnostic:4,aim:[2,4],air:5,aliv:[3,4],all:[0,2,3,4,5],allow:[0,3,4,5],allow_al:[0,3],allow_list:3,allow_non:3,allowed_list:3,almost:4,along:4,alreadi:[0,4],also:[0,3,4,5],alter:4,altern:0,although:5,alwai:[3,4],amateur:5,amount:[3,4,5],an:[0,1,3,4,5],ani:[0,1,3,4,5],announc:[2,3],announce_handl:0,announced_ident:[0,3],announceloop:0,announcesampl:0,anonym:[3,4],anoth:[1,3,4],answer:4,anyon:[0,3,4],anyth:4,anywher:0,apart:4,api:[1,2,4,5],app:[0,3,4],app_and_aspects_from_nam:3,app_data:[0,3],app_nam:[0,3],app_timeout:0,append:[0,4],appli:4,applic:[0,3,4],approv:4,approxim:4,ar:[0,3,4,5],arbitrari:[3,4],arbritrari:5,area:5,arg:0,argon:0,argpars:0,argument:[0,3],argumentpars:0,around:4,arriv:[0,4],ask:[0,3],aspect:[0,3,4],aspect_filt:[0,3],assign:4,associ:[1,3,4],assum:4,asymmetr:5,attached_interfac:[],attempt:3,attribut:3,audit:5,authent:[3,4,5],author:4,auto:[3,4],auto_compress:3,autoconfigur:5,autom:4,automat:[0,3,4,5],autonom:4,autoomat:0,avail:[0,4,5],averag:4,avoid:4,awai:[0,4],awar:4,ax:5,b:0,back:[0,4,5],band:4,bandwidth:[4,5],bare:0,barrier:4,base:[2,3,4,5],basi:[3,4,5],basic:[0,1,2],baud:4,becaus:4,becki:0,becom:0,been:[0,3,4,5],befor:[0,3,4],begin:[0,3],begun:3,behind:4,being:[3,4],belief:4,below:1,best:[1,4,5],beta:5,between:[0,3,4],bgp:4,bi:4,bidirect:4,binari:[0,2],bit:[3,4,5],blob:[0,4],both:[3,4,5],bp:4,briefli:4,broadcast:[2,3,4],broadcast_destin:0,broadcastloop:0,bug:5,build:[0,4,5],built:[1,4,5],bundl:0,c:[0,4],cad:4,calcul:[3,4],call:[0,3,4,5],callabl:3,callback:[0,3],can:[0,1,2,3,4],cancel:3,cannot:0,capac:4,carambola:0,care:[3,4,5],carri:[3,4],carrier:5,caveat:2,cb:4,cbc:5,cd:1,censor:4,censorship:4,central:4,certain:[0,4],challeng:4,chang:[0,1,3,4,5],channel:[0,4,5],channelarg:0,chapter:[1,4],charact:0,characterist:4,cheap:4,check:[0,3],checksum:[3,5],choos:0,chose:4,chunk:0,ciphertext:3,ciphertext_token:3,cl:0,clear:[0,3,4],clear_default_app_data:3,clear_screen:0,client:[0,1,3],client_connect:0,client_disconnect:0,client_ident:0,client_loop:0,client_packet_receiv:0,client_request:0,clone:1,close:[0,3],closed_callback:3,closer:4,cluster:4,code:[0,4],com:[0,1],combin:4,come:4,command:[0,1],common:4,commun:[0,1,3,4,5],compat:[3,4],complet:[0,1,3,4,5],compon:4,compos:4,compress:[0,3,4],comput:[1,4],concaten:3,concept:4,conclud:[0,3],concurr:4,condit:4,config:[0,1],configarg:0,configdir:3,configpath:0,configur:[0,3,4,5],confirm:[4,5],connect:[0,3,4,5],consequ:4,consid:[4,5],consist:4,constant:[3,4],construct:4,contact:4,contain:[0,3,4],content:[],context:4,control:[0,3,4],conveni:0,convent:0,coordin:[3,4,5],core:[4,5],correct:[0,4],correctli:0,correspond:4,cost:[4,5],could:[0,3,4,5],count:4,counter:0,cover:5,cpu:0,creat:[0,1,3,4],create_kei:3,create_receipt:[0,3],creation:4,creator:4,critic:4,cryptograph:5,cryptographi:[1,4,5],ctrl:0,cull:3,current:[0,2,3,4],current_download:0,current_filenam:0,curv:[3,4,5],curve25519:[3,4,5],custom:[3,4],d:4,daemon:3,dai:4,data:[0,3,4,5],date:0,debian:4,debug:[],decai:4,decid:[3,4],decod:0,decrypt:[3,4],dedic:4,def:0,default_timeout:[],defin:[0,4],definit:4,delai:4,deliv:[0,3],deliveri:[0,3,5],demand:3,demonstr:0,depend:1,deploi:4,deregist:3,deregister_announce_handl:3,deregister_request_handl:3,deriv:[4,5],describ:[3,4],descript:0,design:[4,5],desir:[0,4],destin:[0,1,2],destination_1:0,destination_2:0,destination_clos:0,destination_hash:[0,3],destination_hexhash:0,detail:[0,2,3],detect:0,determin:[3,4],develop:[2,4,5],devic:[2,3,4],dh:3,did:0,differ:[0,1,3,4,5],diffi:[4,5],digit:[4,5],dir:0,direct:[0,3,4],directli:[3,4,5],directori:0,disable_encrypt:[],disappear:[],discard:4,disconnect:0,discoveri:4,discuss:4,disk:[0,3],displai:[0,4],distanc:4,distinct:4,distribut:[0,3,4],divmod:0,document:4,doe:[0,2,3,4],don:[0,1],done:[0,4],dot:4,down:0,downgrad:[],download:0,download_began:0,download_conclud:0,download_finish:0,download_start:0,download_tim:0,driver:5,drop:4,duplex:[4,5],e:0,each:[0,4],earlier:4,eas:4,easi:[4,5],easiest:[1,4],easili:[4,5],ecdh:[4,5],echo:[1,2],echo_destin:0,echo_request:0,ed25519:[4,5],effici:[0,4,5],ei:0,either:4,elif:0,ellipt:[3,4,5],els:[0,4],emploi:4,emptor:2,enabl:3,enable_transport:4,encapsul:5,encod:0,encrypt:[0,1,3,4,5],encrypted_mdu:3,encryptionless:[],end:[0,3,4,5],endpoint:[0,3,4],engin:4,ensur:4,enter:0,entir:4,entiti:4,entri:[0,4],enumer:0,environ:4,environment:4,environmentlogg:4,ephemer:[3,4,5],equal:4,equip:4,equl:[],error:0,essenti:4,establish:[0,3,5],established_callback:3,establishment_timeout_per_hop:3,ethernet:[4,5],even:[4,5],everi:[0,3,4],everyon:4,everyth:[0,4],exact:4,exactli:[3,4],exampl:[1,2,3,4,5],example_util:0,exampleannouncehandl:0,exce:0,except:[0,4],exchang:[3,4,5],execut:[0,3],exhaust:4,exist:[0,4,5],exit:[0,1,3],exit_handl:0,expand:4,expect:[0,3,4],experi:[1,4],experiment:5,explain:3,explan:4,explicit:3,explicitli:[],explor:[0,4,5],expos:3,extend:[0,4],extern:[3,5],extrem:5,fa7ddfab5213f916dea:4,face:1,fact:[4,5],fail:[0,3],failed_callback:[0,3],fals:[0,3],far:4,fast:2,featur:[4,5],feed:3,feedback:0,fernet:5,few:[4,5],field:4,file:[0,1,3,4,5],file_resourc:0,file_s:0,filelist:0,filelist_data:0,filelist_receiv:0,filelist_timeout_job:0,filenam:0,filetransf:[1,2,3],filter:[0,4],find:4,firmwar:4,first:[0,3,4],fit:0,five:0,fix:4,flag:[3,4],flush:0,folder:1,follow:[0,4,5],forcibl:3,foremost:5,form:[3,4],format:[0,2,5],forth:0,forward:[3,4,5],found:[0,1,4],free:5,frequenc:4,friendli:5,from:[0,1,3,4,5],from_byt:3,from_fil:3,fromhex:0,fruit:0,full:[0,3,4],full_hash:3,full_nam:3,fulli:[4,5],funcion:3,fundament:4,further:[1,2],futur:4,g:0,ga:0,gatekeep:4,gener:[0,3,4,5],generalis:5,get:[0,2,3,5],get_private_kei:3,get_progress:[0,3],get_public_kei:3,get_random_hash:[0,3],get_remote_ident:[0,3],get_request_id:3,get_respons:3,get_response_tim:3,get_rtt:[0,3],get_statu:3,gi:0,gigabyt:5,git:1,github:[0,1],give:4,given:4,global:[0,5],go:[0,1,4],goal:2,good:4,got:0,got_respons:0,govern:4,grape:0,great:4,greater:4,group:[3,4],guarante:4,guid:[1,3,4],h:[1,4],ha:[0,3,4,5],had:4,half:[4,5],hand:0,handheld:4,handl:[0,3,4,5],handler:[0,3],happen:[0,3],hardwar:[3,4,5],has_path:[0,3],hasattr:0,hash:[0,1,3,4],hash_from_name_and_ident:3,hashmap:0,have:[0,1,3,4],hazard:3,header:4,header_1:4,header_2:4,header_typ:[],hear:4,heard:[3,4],helium:0,hellman:[4,5],help:[0,4,5],here:[0,4],hexadecim:[0,4],high:[4,5],higher:[4,5],highli:4,hint:0,hit:0,hmac:5,hoc:5,hold:[3,4],hop:[3,4,5],hops_to:3,host:[0,4,5],hour:0,how:[0,4,5],howev:4,http:[0,1],human:[0,3],i:0,id:[3,4],idea:4,ident:[0,2],identif:[2,5],identifi:[0,3,4],identify:4,identifyexampl:0,ie:[],ignor:[3,4],immedi:1,impact:4,implement:[0,3,4,5],implicit:[3,4],inactive_for:3,inbound:3,includ:[0,3,4],incom:[0,3],incompat:[3,4],indefinit:4,independ:3,independt:5,index:[0,2],indirectli:4,individu:4,inevit:4,infer:4,info:[3,4],inform:[0,1,2,3,4],infrastructur:4,ingo:3,initi:[0,3,4],initialis:[0,3],input:0,insert:4,instal:1,instanc:[0,3],instanti:3,instead:[0,4],integr:4,intend:4,intention:4,inter:3,interact:[0,3,4],interest:4,interfac:[0,2,3,4],intern:[3,4],internet:[4,5],interv:3,intiat:0,introduc:4,introduct:2,intuit:5,invalid:[0,3],investig:4,ip:[4,5],is_request:[],is_respons:[],isdir:0,isfil:0,ism:4,its:[3,4],itself:[2,4],iv:5,job:0,join:[0,4],just:[0,4,5],k:0,kbp:4,keep:[0,3,4,5],keepal:[3,4],kei:[0,2,3,5],kept:[3,4],kernel:5,keyboardinterrupt:0,keyerror:3,keypair:4,keysiz:3,ki:0,kill:3,kilomet:4,kind:4,know:[0,3,4],knowledg:4,known:[0,3,4],krypton:0,lack:4,laid:4,larg:[0,4],larger:4,last:[0,3],last_unit:0,latenc:[4,5],later:0,latest:[0,1],latest_client_link:0,launch:1,lavg:4,layer:[4,5],lead:4,learn:[0,4],least:[4,5],leav:4,ledger:4,left:[3,4],len:0,length:[0,3],less:[4,5],let:[0,4],level:4,librari:1,licens:4,light:4,like:[1,3,4],limit:4,line:[0,1,4,5],link:[2,5],link_clos:0,link_establish:0,linkexampl:0,linux:4,list:[0,3,4],list_deliv:0,list_fil:0,list_packet:0,list_receipt:0,list_timeout:0,listdir:0,listen:[0,4],littl:4,lki:4,lkr:4,ll:[0,1,5],ln:1,load:[0,3],load_private_kei:3,load_public_kei:3,local:[0,3,4,5],locat:4,log:0,log_error:0,log_info:0,loglevel:0,longer:[0,4],look:[0,1,4],loop:0,lora:[4,5],lorawan:4,lot:4,low:[4,5],lxmf:1,m:[0,4],mac:4,machin:4,made:[3,4],mai:4,main:0,maintain:4,make:[1,4],malici:4,manag:3,mani:[0,4,5],manipul:4,manual:[0,1,3],mark:4,markqvist:[0,1],master:[0,3],match:0,maximum:[3,4],mcu:4,mdu:0,mean:4,measur:4,mechan:2,medium:[4,5],memori:4,mention:4,menu:0,menu_mod:0,mesh:5,messag:[0,1,3,4],messeng:4,metavar:0,method:[0,3,4],methodolog:4,mhz:4,mi:0,microcontrol:4,microwav:4,might:4,millisecond:0,mind:5,minim:[2,4],minimalsampl:0,minimum:[0,4],minut:[0,4],mode:[0,1,4,5],modem:[3,4,5],modul:[0,4,5],moment:[4,5],monitor:4,moon:0,more:[3,4,5],most:[1,4,5],motiv:2,move:1,mtu:[3,4,5],much:4,multi:[4,5],multilater:4,multipl:[0,4],multipoint:4,must:[0,3,4],my:4,n:0,name:[0,3],namespac:0,nano:1,narg:0,necessari:[1,3,4],necessarili:4,need:[0,2,4,5],neglig:4,neither:4,neon:0,network:[0,1,3,4,5],never:3,newer:4,newest:4,newli:4,next:[1,4],nicknam:4,no_inbound_for:3,no_outbound_for:3,nobl:0,noble_ga:0,noble_gas:0,node:[2,5],nomad:1,nomadnet:1,non:[3,4],none:[0,3,4],normal:0,notat:4,note:[0,4],noth:5,notic:4,notif:[0,3],now:[0,1,4],nt:0,num:0,number:[0,3,4],object:3,obtain:4,occur:5,off:[4,5],offer:[2,3,4],often:4,oganesson:0,old:4,onc:[0,3,4,5],one:[0,3,4,5],onli:[0,3,4,5],onlin:4,open:[0,3,4,5],openmodem:5,oper:[3,4,5],opt:4,optic:5,option:[0,1,3],orient:4,origin:[0,4],original_hash:[],os:[0,4,5],ospf:4,other:[3,4],otherwis:[3,4],our:[0,4],out:[0,3,4,5],outbound:3,outgo:[0,3,4],outlin:[1,4],outward:4,over:[0,3,4,5],overal:4,overcom:4,overhead:4,overrid:0,overview:4,own:[0,1,3,4],owner:[],p:[0,4],pack:0,packb:0,packet:[0,2,5],packet_callback:0,packet_deliv:0,packet_receipt:[0,3],packet_timed_out:0,packet_typ:[],packetreceipt:[0,3],pad:5,page:[2,4],pair:4,palm:0,paramet:3,pars:0,parse_arg:0,parser:0,part:[0,4],particip:[2,4],pass:[0,3,4],path:[0,1,3,4],path_respons:3,pathfind:[],pathfinder_m:3,pattern:4,payload:[3,4],peach:0,peer:[0,3,4],peer_pub_byt:[],peer_sig_pub_byt:[],peopl:4,per:[3,4,5],percent:0,perfect:4,perform:[0,4],period:4,persecut:4,person:4,pet:0,philosophi:4,physic:4,pi:[0,4,5],piec:4,ping:1,pip3:1,pip:1,pkcs7:5,place:4,plain:[0,3,4],plain_mdu:3,plaintext:[0,3],platform:4,pleas:[0,5],plenti:4,plu:4,pmr:4,point:4,pomelo:0,port:[4,5],possess:4,possibl:[3,4,5],potenti:[0,4],practic:[4,5],pre:[3,4],predict:4,prefer:4,prepar:0,prerequisit:3,presenc:3,preserv:3,press:0,pretend:4,pretti:4,prettyhexrep:0,previou:0,previous:[3,4],primari:4,principl:[4,5],print:0,print_filelist:0,print_help:0,print_menu:0,prioriti:4,prioritis:2,privaci:5,privat:[3,4,5],probabl:[0,4,5],procedur:4,process:[1,3,4],product:[],program:[0,2,3,4],program_setup:0,programm:4,programmat:4,progress:[0,3,5],progress_callback:3,project:1,prompt:0,proof:[0,3,4],proof_requested_callback:3,proof_strategi:3,propag:4,properti:3,protocol:[1,2,5],prove:[0,4],prove_al:[0,3],prove_app:3,prove_non:3,proven:[3,4],provid:[0,1,2,3,4,5],prv_byte:3,pub_byt:3,public_inform:0,purchas:[4,5],purg:3,purpos:[3,4],purposefulli:4,put:0,py:[0,1],pyseri:1,python3:1,python:[4,5],q:0,queri:0,queue:4,quinc:0,quit:0,r:[0,4],radio:[3,4,5],radiu:4,radon:0,rais:[0,3],rand:4,randint:0,random:[0,3,4],random_text_gener:0,randomli:[0,4],rang:[0,4,5],raspberri:[4,5],rate:0,rb:0,re:[0,3,4],reach:2,reachabl:[0,3,4],read:[0,1,4],readabl:[0,3,4],readi:[0,1,3],readili:5,real:5,realli:3,reason:4,reassembl:4,recal:[0,3],recall_app_data:3,recap:4,receipt:[0,2,4],receiv:[0,3,4],received_announc:[0,3],recip:1,recipi:4,recommend:[0,4],reconstruct:4,record:4,recreat:4,refer:[0,1,2],regard:4,regist:[0,3],register_announce_handl:[0,3],register_request_handl:[0,3],rel:[4,5],releas:[1,4],relev:[0,3],reli:4,reliabl:[4,5],rem:0,remain:4,rememb:4,remot:[0,3,5],remote_ident:[0,3],remote_identifi:0,remote_identity_hash:[],remote_p:0,remotesensor:4,repeat:1,replac:[1,4],repli:0,replic:4,reply_data:0,reply_text:0,repositori:1,repres:4,represent:[0,4],request:[2,4],request_destin:0,request_fail:0,request_id:[0,3],request_packet:0,request_path:[0,3],request_receipt:[0,3],request_receiv:0,requested_at:[0,3],requestexampl:0,requestreceipt:3,requir:[0,4,5],research:5,resend:3,reserv:4,resili:5,resourc:[0,2],resource_callback:3,resource_sending_conclud:0,resource_strategi:3,respond:[0,3],respons:[2,3],response_callback:[0,3],response_gener:[0,3],response_tim:[],rest:5,result:[0,4],reticulum:0,retransmiss:4,retransmit:4,retri:4,reveal:[3,4],review:5,right:[],rn:[0,1,3],rnode:[4,5],robot:4,rotat:4,round:[0,3],rout:[3,4,5],rprogress:0,rsa:[],rtt:[0,3,4],rttstring:0,rule:4,run:[0,1,3,4,5],runtim:4,rw:4,s:[0,1,4,5],said:4,same:[1,3,4],satisfi:4,save:[3,4],save_error:0,saved_filenam:0,scenario:[1,4],screen:0,search:2,second:[0,3,4,5],secreci:[3,4,5],section:4,secur:[4,5],see:[0,3,4],seen:4,segment_index:[],select:0,self:[0,5],send:[0,3,4],sender:[0,4],sendig:0,sensibl:1,sensor:4,sent:[0,3,4],sentiment:4,separ:4,sequenc:[0,3,4,5],serial:[4,5],serv:[0,4],serve_path:0,server:[0,1],server_callback:0,server_destin:0,server_fil:0,server_ident:0,server_link:0,server_loop:0,server_packet_receiv:0,session:4,set:[0,3,4,5],set_default_app_data:3,set_delivery_callback:[0,3],set_link_closed_callback:0,set_link_established_callback:[0,3],set_packet_callback:[0,3],set_proof_requested_callback:3,set_proof_strategi:[0,3],set_remote_identified_callback:[0,3],set_resource_callback:3,set_resource_concluded_callback:[0,3],set_resource_started_callback:[0,3],set_resource_strategi:[0,3],set_timeout:[0,3],set_timeout_callback:[0,3],setdaemon:0,setup:[0,2],sever:3,sha256:5,sha:[3,4],shall:4,share:[1,3,4],shelf:[4,5],shop:0,shortest:4,should:[0,3,4,5],should_allow_unencrypt:[],should_quit:0,should_use_implicit_proof:3,shown:0,side:5,sign:[3,4],signatur:[3,4,5],significantli:[],similar:5,simpl:[0,4,5],simplest:4,simpli:[0,1,4],simplic:4,sinc:[0,3,4],singl:[0,3,4],singular:4,situat:4,size:[0,3,4],size_str:0,sleep:0,slice:0,slow:[0,4],small:[0,4],so:[0,1,3,4,5],softwar:[4,5],some:[0,1,4],someth:4,somethign:0,soon:3,sort:4,sourc:[0,1,4,5],space:[0,5],span:4,special:4,specif:[0,2,3,5],specifi:[0,3],spectrum:4,split:0,sponsor:5,stabl:[4,5],stack:[0,1,4,5],stage:4,stai:0,standard:4,start:[0,2,3,4],startup:0,state:0,station:4,statist:0,statu:[0,2,3,4],stdout:0,step:1,still:[0,4],stock:0,stop:5,store:[0,4],store_tru:0,str:0,strategi:3,stream:4,strength:5,strictli:4,string:[0,3],structur:4,subject:4,subsequ:4,successful:3,successfulli:0,sucessfulli:4,suffic:4,suffici:4,suffix:0,suit:[1,4],suitabl:[0,4],suppli:[3,4],support:[0,2,4],sy:0,symlink:1,symmetr:[3,4],system:[0,2,3,5],t:[0,1,4],tabl:4,take:[0,1,4,5],taken:[0,4],tangerin:0,target:0,tcp:[4,5],tdata:0,teardown:[0,3],teardown_reason:0,teffect:0,tell:0,temperatur:4,ten:4,term:4,termin:3,terminolog:4,test:4,text:[0,4],tfile:0,than:[0,4],thei:[0,3,4],them:[0,4],thereaft:4,therefor:[4,5],thi:[0,1,2,3,4],though:4,thourough:5,thread:0,three:4,through:[3,4,5],throughout:4,throughput:[4,5],thu:[3,4],ti:[0,4],time:[0,1,3,4],timeout:[0,3],timeout_callback:[],timeoutarg:0,timestr:0,tnc:[3,5],to_fil:3,todai:4,todo:[],togeth:4,token:[3,4],too:[0,4],tool:5,top:4,topic:4,topolog:4,total:[4,5],total_s:0,touch:5,toward:[0,4],traffic:[0,3,4],tramsit:[],transceiv:[4,5],transfer:[0,3,4,5],transfer_s:0,transmiss:4,transmit:[0,4],transpar:4,transport:[0,2,5],transport_en:3,transport_id:[],transport_typ:[],travers:4,treat:4,tri:0,trip:[0,3],trivial:5,truli:4,truncat:[3,4],truncated_hash:3,truncated_hashlength:3,trust:4,trustless:[4,5],ttime:0,ttransfer:0,tunnel:[4,5],tupl:3,two:[0,4],type:[0,2,3],typeerror:3,udp:[4,5],umsgpack:0,uncencrypt:0,underli:5,understand:[1,2],unencrypt:[0,3,4],unequivoc:4,unforg:5,unidentifi:0,uninterest:0,uniqu:[4,5],unit:0,unknown:[0,3,4],unless:[1,3,4],unlicens:4,unpack:0,unpackb:0,unsupport:3,until:[0,3,4],unwant:4,up:[0,4,5],updat:[0,3],upon:[0,4],upset:0,urandom:5,us:[0,2,3,4],usabl:4,usag:[],usb:[4,5],useabl:4,user:[0,1,4],user_input:0,userland:5,utf:0,util:[0,1,4],utilis:[4,5],valid:[0,3,4],valu:[3,4],valueerror:[0,3],variabl:0,varieti:[4,5],variou:[0,4],ve:1,vendor:0,veri:[3,4,5],verif:[3,4],verifi:[0,3,4],versa:5,version:[],vhf:4,via:[1,4],vice:5,view:4,visibl:0,wa:[0,3,4,5],wai:[0,1,4],wait:[0,4],want:[0,1,4,5],warrant:5,wb:0,we:[0,4],well:[3,4,5],went:0,what:[0,1,2,3,4],whatev:[3,4],when:[0,1,3,4],whenev:3,where:[2,3,4],whereupon:4,whether:[0,3,4],which:[0,1,3,4],who:4,wide:[4,5],wifi:[4,5],wildcard:0,window:4,wire:[4,5],wish:4,within:[0,3,4],won:0,work:[4,5],world:5,would:4,write:[0,3],written:4,wrong:0,x25519:[3,4,5],x:4,xenon:0,y:0,ye:4,year:4,yet:[0,4],yi:0,you:[0,1,2,3,4,5],your:[0,1,4,5],yourself:[4,5],z:0,zero:3,zi:0},titles:["Examples","Getting Started Fast","Reticulum Network Stack Manual","API Reference","Understanding Reticulum","What is Reticulum?"],titleterms:{"1":[],"2":[],"class":3,"function":4,"public":4,"try":1,The:4,announc:[0,4],api:3,base:1,basic:4,binari:4,broadcast:0,can:5,caveat:5,current:5,deliveri:[],destin:[3,4],detail:4,develop:1,devic:5,doe:5,echo:0,emptor:5,establish:4,exampl:0,fast:1,filetransf:0,format:4,further:4,get:[1,4],goal:4,ident:[3,4],identif:0,indic:2,interfac:5,introduct:4,kei:4,link:[0,3,4],manual:2,mechan:4,minim:0,motiv:4,name:4,network:2,node:4,offer:5,packet:[3,4],particip:1,pathfind:[],prioritis:4,program:1,protocol:4,proven:[],reach:4,receipt:3,refer:[3,4],request:[0,3],resourc:[3,4],respons:0,reticulum:[1,2,3,4,5],setup:4,specif:4,stack:2,start:1,statu:5,step:[],support:5,system:4,tabl:2,transport:[3,4],type:[4,5],understand:4,us:[1,5],what:5,where:5}}) \ No newline at end of file +Search.setIndex({docnames:["examples","gettingstartedfast","index","networks","reference","understanding","whatis"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["examples.rst","gettingstartedfast.rst","index.rst","networks.rst","reference.rst","understanding.rst","whatis.rst"],objects:{"RNS.Destination":{announce:[4,1,1,""],app_and_aspects_from_name:[4,1,1,""],clear_default_app_data:[4,1,1,""],create_keys:[4,1,1,""],decrypt:[4,1,1,""],deregister_request_handler:[4,1,1,""],encrypt:[4,1,1,""],full_name:[4,1,1,""],get_private_key:[4,1,1,""],hash:[4,1,1,""],hash_from_name_and_identity:[4,1,1,""],load_private_key:[4,1,1,""],register_request_handler:[4,1,1,""],set_default_app_data:[4,1,1,""],set_link_established_callback:[4,1,1,""],set_packet_callback:[4,1,1,""],set_proof_requested_callback:[4,1,1,""],set_proof_strategy:[4,1,1,""],sign:[4,1,1,""]},"RNS.Identity":{CURVE:[4,2,1,""],KEYSIZE:[4,2,1,""],TRUNCATED_HASHLENGTH:[4,2,1,""],decrypt:[4,1,1,""],encrypt:[4,1,1,""],from_bytes:[4,1,1,""],from_file:[4,1,1,""],full_hash:[4,1,1,""],get_private_key:[4,1,1,""],get_public_key:[4,1,1,""],get_random_hash:[4,1,1,""],load_private_key:[4,1,1,""],load_public_key:[4,1,1,""],recall:[4,1,1,""],recall_app_data:[4,1,1,""],sign:[4,1,1,""],to_file:[4,1,1,""],truncated_hash:[4,1,1,""],validate:[4,1,1,""]},"RNS.Link":{CURVE:[4,2,1,""],ESTABLISHMENT_TIMEOUT_PER_HOP:[4,2,1,""],KEEPALIVE:[4,2,1,""],get_remote_identity:[4,1,1,""],identify:[4,1,1,""],inactive_for:[4,1,1,""],no_inbound_for:[4,1,1,""],no_outbound_for:[4,1,1,""],request:[4,1,1,""],set_packet_callback:[4,1,1,""],set_remote_identified_callback:[4,1,1,""],set_resource_callback:[4,1,1,""],set_resource_concluded_callback:[4,1,1,""],set_resource_started_callback:[4,1,1,""],set_resource_strategy:[4,1,1,""],teardown:[4,1,1,""]},"RNS.Packet":{ENCRYPTED_MDU:[4,2,1,""],PLAIN_MDU:[4,2,1,""],resend:[4,1,1,""],send:[4,1,1,""]},"RNS.PacketReceipt":{get_rtt:[4,1,1,""],get_status:[4,1,1,""],set_delivery_callback:[4,1,1,""],set_timeout:[4,1,1,""],set_timeout_callback:[4,1,1,""]},"RNS.RequestReceipt":{get_progress:[4,1,1,""],get_request_id:[4,1,1,""],get_response:[4,1,1,""],get_response_time:[4,1,1,""],get_status:[4,1,1,""]},"RNS.Resource":{advertise:[4,1,1,""],cancel:[4,1,1,""],get_progress:[4,1,1,""]},"RNS.Reticulum":{MTU:[4,2,1,""],should_use_implicit_proof:[4,1,1,""],transport_enabled:[4,1,1,""]},"RNS.Transport":{PATHFINDER_M:[4,2,1,""],deregister_announce_handler:[4,1,1,""],has_path:[4,1,1,""],hops_to:[4,1,1,""],next_hop:[4,1,1,""],next_hop_interface:[4,1,1,""],register_announce_handler:[4,1,1,""],request_path:[4,1,1,""]},RNS:{Destination:[4,0,1,""],Identity:[4,0,1,""],Link:[4,0,1,""],Packet:[4,0,1,""],PacketReceipt:[4,0,1,""],RequestReceipt:[4,0,1,""],Resource:[4,0,1,""],Reticulum:[4,0,1,""],Transport:[4,0,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","attribute","Python attribute"]},objtypes:{"0":"py:class","1":"py:method","2":"py:attribute"},terms:{"0":[0,4,5,6],"00":5,"000":[5,6],"00000000":5,"00000100":5,"00000111":5,"01":5,"01010000":5,"05":0,"1":[0,4,5,6],"10":[0,5],"100":[0,5],"1000":[0,5],"1024":0,"11":5,"1200":5,"128":[4,5,6],"14":5,"141":[],"15":5,"151":5,"18":5,"180":5,"182":[],"2":[0,5],"20":[0,5],"205":[],"211":[],"237":[5,6],"240":[],"25":[0,6],"256":[4,5],"270":5,"2f":0,"3":[0,5,6],"323":[],"33":5,"34":5,"360":4,"3600":0,"383":4,"3e12fc71692f8ec47bc5":1,"4":5,"409":[],"430":5,"45":0,"477":[4,5],"5":[0,4,5],"500":[4,5,6],"512":4,"60":0,"62":[5,6],"7":5,"77":5,"8":0,"80":[4,5],"80e29bf7cccaf31431b3":5,"83":5,"86":[],"868":5,"900":5,"95":5,"abstract":5,"break":[4,5,6],"byte":[0,4,5,6],"case":[1,3,5],"class":[0,2,6],"default":[0,1,3,4,5],"do":[0,1,4,5,6],"float":[0,4],"function":[0,2,3,4,6],"import":[0,1,3,5],"int":0,"long":[0,5],"new":[0,3,4,5],"public":[0,2,4],"return":[0,4],"short":5,"static":4,"throw":[],"true":[0,4],"try":[0,2],"while":[0,3,4,5,6],A:[0,3,4,5,6],And:0,As:[3,4,5,6],At:[3,5],Be:4,But:5,By:[0,4,5],For:[3,4,5],IN:[0,4],If:[0,1,3,4,5,6],In:[0,1,3,4,5,6],It:[0,4,5,6],No:[5,6],On:0,One:4,Or:5,That:5,The:[0,1,2,3,4,6],There:[3,5,6],These:5,To:[0,1,3,5,6],Will:4,With:[2,3,5],_:5,__:5,______:5,_______:5,________:5,________________:5,__init__:0,__main__:0,__name__:0,_exit:0,ab:0,abl:[0,3,4,5],about:[0,3,4,5],abov:[1,5],absolut:[],accept:[4,5],accept_al:[0,4],accept_app:4,accept_non:4,access:[4,5],accord:5,accordingli:0,acheiv:5,achiev:[4,5],acknowledg:6,across:3,act:[4,5],action:0,activ:[0,1,4,5],actor:5,actual:[0,1,5],ad:[0,3,4,5,6],adapt:3,add:[0,1,3],add_argu:0,addit:[5,6],addr1:5,addr2:5,address:[0,3,4,5,6],adher:4,adress:[0,3,4,6],advantag:4,advertis:[0,4],advis:5,ae:[5,6],after:[0,3,5],again:[1,5],against:5,agent:5,agnost:[3,5],agnostic:5,aim:[2,5],air:6,aliv:[4,5],all:[0,2,3,4,5,6],allow:[0,1,3,4,5,6],allow_al:[0,4],allow_list:4,allow_non:4,allowed_list:4,almost:5,along:[3,5],alreadi:[0,3,5],also:[0,3,4,5,6],alter:5,altern:0,although:6,alwai:[4,5],amateur:6,amount:[3,4,5,6],an:[0,1,3,4,5,6],ani:[0,1,3,4,5,6],announc:[2,4],announce_handl:0,announced_ident:[0,4],announceloop:0,announcesampl:0,anonym:[3,4,5],anoth:[1,4,5],answer:5,anyon:[0,3,4,5],anyth:5,anywher:0,apart:5,api:[1,2,5,6],app:[0,4,5],app_and_aspects_from_nam:4,app_data:[0,4],app_nam:[0,4],app_timeout:0,append:[0,5],appli:5,applic:[0,4,5],approv:5,approxim:5,ar:[0,1,3,4,5,6],arbitrari:[4,5],arbritrari:6,area:[3,6],arg:0,argon:0,argpars:0,argument:[0,4],argumentpars:0,around:5,arriv:[0,5],ask:[0,4],aspect:[0,4,5],aspect_filt:[0,4],assign:5,associ:[1,4,5],assum:5,asymmetr:6,attached_interfac:[],attempt:4,attribut:4,audit:6,authent:[4,5,6],author:5,auto:[4,5],auto_compress:4,autoconfigur:6,autom:5,automat:[0,3,4,5,6],autonom:[3,5],autoomat:0,avail:[0,3,5,6],averag:5,avoid:5,awai:[0,3,5],awar:5,ax:6,b:[0,3],back:[0,5,6],backhaul:3,band:5,bandwidth:[3,5,6],bare:0,barrier:5,base:[2,3,4,5,6],basi:[4,5,6],basic:[0,1,2],baud:5,becaus:[3,5],becki:0,becom:[0,3],been:[0,3,4,5,6],befor:[0,4,5],begin:[0,4],begun:4,behind:5,being:[4,5],belief:5,below:1,best:[1,5,6],beta:6,between:[0,3,4,5],bgp:5,bi:5,bidirect:5,billion:3,binari:[0,2],bit:[4,5,6],blob:[0,5],board:6,both:[3,4,5,6],bp:5,bridg:2,briefli:5,broadcast:[1,2,4,5],broadcast_destin:0,broadcastloop:0,bug:6,build:[0,2,5,6],built:[1,5,6],bundl:0,c:[0,3,5],cabl:3,cad:5,calcul:[4,5],call:[0,3,4,5,6],callabl:4,callback:[0,4],can:[0,1,2,3,4,5],cancel:4,candid:3,cannot:0,capac:5,carambola:0,care:[4,5,6],carri:[4,5],carrier:[3,6],caveat:2,cb:5,cbc:6,cd:1,censor:5,censorship:5,central:[3,5],certain:[0,3,5],challeng:5,chang:[0,1,4,5,6],channel:[0,3,5,6],channelarg:0,chapter:[1,3,5],charact:0,characterist:5,cheap:5,check:[0,4],checksum:[4,6],choos:[0,3],chose:5,chosen:3,chunk:0,ciphertext:4,ciphertext_token:4,cl:0,clear:[0,4,5],clear_default_app_data:4,clear_screen:0,client:[0,1,4],client_connect:0,client_disconnect:0,client_ident:0,client_loop:0,client_packet_receiv:0,client_request:0,clone:1,close:[0,4],closed_callback:4,closer:5,cluster:5,code:[0,5],com:[0,1],combin:[3,5],come:5,command:[0,1],common:[3,5],commun:[0,1,3,4,5,6],compat:[4,5],complet:[0,1,3,4,5,6],compon:5,compos:5,compress:[0,4,5],comput:[1,5,6],concaten:4,concept:[2,5],conclud:[0,4],concurr:5,condit:5,config:[0,1,3],configarg:0,configdir:4,configpath:0,configur:[0,1,3,4,5,6],confirm:[5,6],connect:[0,3,4,5,6],consequ:5,consid:[5,6],consist:5,constant:[4,5],construct:5,contact:5,contain:[0,3,4,5],content:3,context:5,control:[0,3,4,5],conveni:0,convent:0,converg:2,coordin:[3,4,5,6],core:[3,5,6],correct:[0,5],correctli:0,correspond:5,cost:[5,6],could:[0,3,4,5,6],count:5,counter:0,cover:6,coverag:3,cpu:0,creat:[0,2,3,4,5],create_kei:4,create_receipt:[0,4],creation:5,creator:5,critic:5,cryptograph:[3,6],cryptographi:[1,5,6],ctrl:0,cull:4,current:[0,2,4,5],current_download:0,current_filenam:0,curv:[3,4,5,6],curve25519:[3,4,5,6],custom:[4,5],d:[3,5],daemon:4,dai:[3,5],data:[0,3,4,5,6],date:0,debian:5,debug:[],decai:5,decid:[3,4,5],decod:0,decrypt:[4,5],dedic:5,def:0,default_timeout:[],defin:[0,3,5],definit:5,degrad:3,delai:5,deliv:[0,4],deliveri:[0,4,6],demand:4,demonstr:0,depend:[1,3],deploi:5,deregist:4,deregister_announce_handl:4,deregister_request_handl:4,deriv:[5,6],describ:[4,5],descript:0,design:[3,5,6],desir:[0,5],destin:[0,1,2,3],destination_1:0,destination_2:0,destination_clos:0,destination_hash:[0,4],destination_hexhash:0,detail:[0,2,4],detect:0,determin:[4,5],develop:[2,5,6],devic:[2,3,4,5],dh:4,did:0,differ:[0,1,3,4,5,6],diffi:[3,5,6],digit:[5,6],dir:0,direct:[0,3,4,5],directli:[4,5,6],directori:0,disable_encrypt:[],disappear:[],discard:5,disconnect:0,discoveri:5,discrimin:3,discuss:5,disk:[0,4],displai:[0,5],distanc:5,distinct:[3,5],distribut:[0,3,4,5],divmod:0,document:5,doe:[0,2,3,4,5],domain:1,don:[0,1,3],done:[0,1,3,5],dori:3,dot:5,down:0,downgrad:[],download:0,download_began:0,download_conclud:0,download_finish:0,download_start:0,download_tim:0,driver:6,drop:5,due:3,duplex:[5,6],e:[0,3],each:[0,3,5],earlier:5,eas:5,easi:[5,6],easier:3,easiest:[1,5],easili:[5,6],ecdh:[5,6],echo:[1,2],echo_destin:0,echo_request:0,ed25519:[5,6],effici:[0,5,6],ei:0,either:[3,5],elif:0,ellipt:[3,4,5,6],els:[0,3,5],emploi:5,emptor:2,enabl:[3,4],enable_transport:5,encapsul:6,encod:0,encrypt:[0,1,3,4,5,6],encrypted_mdu:4,encryptionless:[],end:[0,3,4,5,6],endless:3,endpoint:[0,3,4,5],engin:5,enough:1,ensur:5,enter:0,entir:[3,5],entiti:5,entri:[0,5],enumer:0,environ:5,environment:5,environmentlogg:5,ephemer:[3,4,5,6],equal:[3,5],equip:[3,5],equl:[],error:0,essenti:5,establish:[0,4,6],established_callback:4,establishment_timeout_per_hop:4,ethernet:[1,3,5,6],even:[3,5,6],everi:[0,3,4,5],everyon:[3,5],everyth:[0,3,5],evolv:3,exact:5,exactli:[4,5],exampl:[1,2,4,5,6],example_util:0,exampleannouncehandl:0,exce:0,except:[0,5],exchang:[3,4,5,6],execut:[0,4],exhaust:5,exist:[0,1,5,6],exit:[0,1,4],exit_handl:0,expand:5,expect:[0,4,5],experi:[1,5],experiment:6,explain:4,explan:5,explicit:4,explicitli:[],explor:[0,5,6],expos:4,extend:[0,5],extern:[4,6],extra:3,extrem:6,fa7ddfab5213f916dea:5,face:1,fact:[5,6],fail:[0,4],failed_callback:[0,4],fals:[0,4],far:[3,5],fast:2,featur:[5,6],feed:4,feedback:0,fernet:6,few:[3,5,6],field:5,file:[0,1,3,4,5,6],file_resourc:0,file_s:0,filelist:0,filelist_data:0,filelist_receiv:0,filelist_timeout_job:0,filenam:0,filetransf:[1,2,4],filter:[0,3,5],find:[3,5],firmwar:5,first:[0,1,4,5],fit:0,five:0,fix:5,flag:[4,5],flow:3,flush:0,folder:1,follow:[0,5,6],forcibl:4,foremost:6,form:[3,4,5],format:[0,2,6],forth:0,forward:[4,5,6],found:[0,1,3,5],four:3,free:6,frequenc:5,friendli:6,from:[0,1,3,4,5,6],from_byt:4,from_fil:4,fromhex:0,fruit:0,full:[0,4,5],full_hash:4,full_nam:4,fulli:[5,6],funcion:4,fundament:5,further:[1,2],futur:[3,5],g:0,ga:0,gatekeep:5,gatewai:3,gen:1,gener:[0,3,4,5,6],generalis:6,geograph:3,get:[0,2,4,6],get_private_kei:4,get_progress:[0,4],get_public_kei:4,get_random_hash:[0,4],get_remote_ident:[0,4],get_request_id:4,get_respons:4,get_response_tim:4,get_rtt:[0,4],get_statu:4,gi:0,gigabyt:6,gipsum:[],git:1,github:[0,1],give:5,given:[3,5],global:[0,3,6],go:[0,1,5],goal:2,good:[3,5],got:0,got_respons:0,govern:5,grape:0,great:5,greater:5,group:[4,5],grow:3,growth:2,guarante:5,guid:[1,4,5],h:[1,5],ha:[0,3,4,5,6],had:5,half:[5,6],hand:0,handheld:5,handl:[0,3,4,5,6],handler:[0,4],happen:[0,4],hardlin:3,hardwar:[3,4,5,6],has_path:[0,4],hasattr:0,hash:[0,1,4,5],hash_from_name_and_ident:4,hashmap:0,have:[0,1,3,4,5],hazard:4,header:5,header_1:5,header_2:5,header_typ:[],hear:5,heard:[4,5],helium:0,hellman:[3,5,6],help:[0,3,5,6],her:3,here:[0,5],hexadecim:[0,5],high:[5,6],higher:[5,6],highli:5,hill:3,hint:0,hit:0,hmac:6,hoc:6,hold:[4,5],home:3,hop:[3,4,5,6],hops_to:4,host:[0,5,6],hour:0,how:[0,3,5,6],howev:[3,5],http:[0,1],human:[0,4],i:0,id:[4,5],idea:5,ident:[0,2],identif:[2,6],identifi:[0,4,5],identify:5,identifyexampl:0,ie:[],ignor:[4,5],illustr:3,immedi:1,impact:5,implement:[0,3,4,5,6],implicit:[4,5],inactive_for:4,inbound:4,includ:[0,1,4,5],incom:[0,4],incompat:[4,5],indefinit:5,independ:4,independt:6,index:[0,2],indirectli:5,individu:5,inevit:5,infer:5,info:[4,5],inform:[0,1,2,3,4,5],infrastructur:[3,5],ingo:4,initi:[0,3,4,5],initialis:[0,4],input:0,insert:5,inspect:3,instal:[1,3],instanc:[0,4],instanti:4,instead:[0,5],integr:[3,5],intend:[3,5],intention:5,inter:4,interact:[0,4,5],interconnect:2,interest:5,interfac:[0,1,2,4,5],intern:[4,5],internet:[1,2,5,6],interv:4,intiat:0,introduc:5,introduct:2,intuit:6,invalid:[0,4],investig:[3,5],involv:3,ip:[5,6],is_request:[],is_respons:[],isdir:0,isfil:0,island:3,ism:5,its:[4,5],itself:[2,5],iv:6,job:0,join:[0,5],just:[0,3,5,6],k:0,kbp:5,keep:[0,3,4,5,6],keepal:[4,5],kei:[0,2,3,4,6],kept:[3,4,5],kernel:6,keyboardinterrupt:0,keyerror:4,keypair:5,keysiz:4,keystor:3,ki:0,kill:4,kilomet:5,kind:[3,5],know:[0,3,4,5],knowledg:[3,5],known:[0,4,5],krypton:0,lack:5,laid:5,larg:[0,3,5],larger:5,last:[0,4],last_unit:0,latenc:[5,6],later:0,latest:[0,1],latest_client_link:0,launch:1,lavg:5,layer:[3,5,6],lead:5,learn:[0,5],least:[5,6],leav:[3,5],ledger:5,left:[4,5],len:0,length:[0,4],less:[3,5,6],let:[0,3,5],level:5,librari:1,licens:5,light:5,like:[1,4,5,6],limit:5,line:[0,1,3,5,6],link:[2,3,6],link_clos:0,link_establish:0,linkexampl:0,linux:5,list:[0,4,5],list_deliv:0,list_fil:0,list_packet:0,list_receipt:0,list_timeout:0,listdir:0,listen:[0,5],littl:5,lki:5,lkr:5,ll:[0,1,6],ln:1,load:[0,4],load_private_kei:4,load_public_kei:4,local:[0,1,3,4,5,6],locat:[1,3,5],log:0,log_error:0,log_info:0,loglevel:[0,4],longer:[0,3,5],look:[0,1,5],loop:0,lora:[1,2,5,6],lorawan:5,lot:5,low:[3,5,6],lxmf:1,m:[0,5],mac:5,machin:5,made:[4,5],mai:5,main:0,mainli:3,maintain:5,make:[1,5],malici:5,manag:4,mani:[0,3,5,6],manipul:5,manual:[0,1,4],mark:5,markqvist:[0,1],master:[0,4],match:[0,3],maximum:[4,5],mcu:5,mdu:0,mean:5,measur:5,mechan:2,medium:[3,5,6],member:3,memori:5,mention:5,menu:0,menu_mod:0,mesh:[3,6],messag:[0,1,4,5],messeng:5,metavar:0,method:[0,4,5],methodolog:5,mhz:5,mi:0,microcontrol:5,microwav:5,might:[3,5],millisecond:0,mind:[3,6],minim:[2,5],minimalsampl:0,minimum:[0,3,5],minut:[0,5],mix:3,mode:[0,1,5,6],modem:[3,4,5,6],modul:[0,5,6],moment:[5,6],monitor:5,moon:0,mor:[],more:[1,3,4,5,6],most:[1,3,5,6],motiv:2,move:1,mqtt:3,mtu:[4,5,6],much:5,multi:[5,6],multilater:5,multipl:[0,3,5],multipoint:5,must:[0,3,4,5],my:5,n:0,name:[0,3,4],namespac:0,nano:1,narg:0,necesarri:3,necessari:[1,4,5],necessarili:5,need:[0,1,2,3,5,6],neglig:5,neither:5,neon:0,netifac:1,network:[0,4,5,6],never:4,newer:5,newest:5,newli:[3,5],next:[1,3,4,5],next_hop:4,next_hop_interfac:4,nicknam:5,no_inbound_for:4,no_outbound_for:4,nobl:0,noble_ga:0,noble_gas:0,node:[2,3,6],nomad:1,nomadnet:1,non:[4,5],none:[0,4,5],normal:0,notat:5,note:[0,5],noth:6,notic:5,notif:[0,4],now:[0,1,3,5],nt:0,num:0,number:[0,1,3,4,5],object:4,obtain:5,occur:6,off:[5,6],offer:[2,4,5],often:[3,5],oganesson:0,old:5,onc:[0,3,4,5,6],one:[0,1,3,4,5,6],onli:[0,1,3,4,5,6],onlin:5,open:[0,4,5,6],openmodem:6,oper:[3,4,5,6],opt:5,optic:6,optim:3,option:[0,1,3,4],orem:[],organis:3,orient:5,origin:[0,3,5],original_hash:[],os:[0,5,6],ospf:5,other:[1,3,4,5],otherwis:[4,5],our:[0,5],out:[0,3,4,5,6],outbound:4,outgo:[0,4,5],outli:3,outlier:3,outlin:[1,5],outward:5,over:[0,1,2,4,5,6],overal:5,overcom:5,overhead:5,overrid:0,overview:[2,5],own:[0,1,3,4,5],owner:[],p:[0,5],pack:0,packb:0,packet:[0,1,2,3,6],packet_callback:0,packet_deliv:0,packet_receipt:[0,4],packet_timed_out:0,packet_typ:[],packetreceipt:[0,4],pad:6,page:[2,5],pair:5,palm:0,paramet:[3,4],pars:0,parse_arg:0,parser:0,part:[0,3,5],particip:[2,5],pass:[0,3,4,5],path:[0,1,4,5],path_respons:4,pathfind:[],pathfinder_m:4,pattern:5,payload:[4,5],peach:0,peer:[0,1,4,5],peer_pub_byt:[],peer_sig_pub_byt:[],peopl:5,per:[4,5,6],percent:0,perfect:5,perform:[0,3,5],period:5,persecut:5,person:5,pet:0,philosophi:5,physic:5,pi:[0,3,5,6],piec:5,ping:1,pip3:1,pip:1,pkcs7:6,place:[3,5],plain:[0,4,5],plain_mdu:4,plaintext:[0,4],plan:3,platform:5,pleas:[0,6],plenti:5,plu:5,pmr:5,point:[3,5],pomelo:0,poorli:3,port:[3,5,6],possess:5,possibl:[1,3,4,5,6],potenti:[0,5],practic:[5,6],pre:[4,5],predict:5,prefer:5,prepar:[0,3],prerequisit:4,presenc:4,preserv:4,press:0,pretend:5,pretti:5,prettyhexrep:0,previou:0,previous:[3,4,5],primari:5,principl:[5,6],print:0,print_filelist:0,print_help:0,print_menu:0,prioriti:5,prioritis:[2,3],privaci:6,privat:[4,5,6],probabl:[0,3,5,6],procedur:5,process:[1,4,5],product:[],program:[0,2,4,5],program_setup:0,programm:5,programmat:5,progress:[0,4,6],progress_callback:4,project:1,prompt:0,proof:[0,4,5],proof_requested_callback:4,proof_strategi:4,propag:5,properti:4,protocol:[1,2,6],prove:[0,5],prove_al:[0,4],prove_app:4,prove_non:4,proven:[4,5],provid:[0,1,2,3,4,5,6],prv_byte:4,pub_byt:4,public_inform:0,purchas:[3,5,6],purg:4,purpos:[4,5],purposefulli:5,put:0,py:[0,1],pyseri:1,python3:1,python:[5,6],q:0,queri:0,queue:5,quinc:0,quit:0,r:[0,5],radio:[1,3,4,5,6],radiu:5,radon:0,rais:[0,4],rand:5,randint:0,random:[0,4,5],random_text_gener:0,randomli:[0,5],rang:[0,1,3,5,6],raspberri:[3,5,6],rate:0,rb:0,re:[0,4,5],reach:[2,3],reachabl:[0,3,4,5],read:[0,1,5],readabl:[0,4,5],readi:[0,1,3,4],readili:6,real:[3,6],realli:4,reason:5,reassembl:5,recal:[0,4],recall_app_data:4,recap:5,receipt:[0,2,5],receiv:[0,4,5],received_announc:[0,4],recip:1,recipi:5,recommend:[0,5],reconstruct:5,record:5,recreat:5,refer:[0,1,2],regard:5,regist:[0,4],register_announce_handl:[0,4],register_request_handl:[0,4],rel:[5,6],releas:[1,5],relev:[0,4],reli:5,reliabl:[3,5,6],rem:0,remain:5,rememb:5,remot:[0,4,6],remote_ident:[0,4],remote_identifi:0,remote_identity_hash:[],remote_p:0,remotesensor:5,repeat:1,replac:[1,5],repli:0,replic:5,reply_data:0,reply_text:0,repositori:1,repres:5,represent:[0,5],request:[2,5],request_destin:0,request_fail:0,request_id:[0,4],request_packet:0,request_path:[0,4],request_receipt:[0,4],request_receiv:0,requested_at:[0,4],requestexampl:0,requestreceipt:4,requir:[0,3,5,6],research:6,resend:4,reserv:5,resili:6,resourc:[0,2],resource_callback:4,resource_sending_conclud:0,resource_strategi:4,respond:[0,4],respons:[2,4],response_callback:[0,4],response_gener:[0,4],response_tim:[],rest:[3,6],result:[0,5],reticulum:[0,3],retransmiss:5,retransmit:5,retri:5,reveal:[4,5],review:6,right:3,rn:[0,1,4],rnode:[5,6],robot:5,rotat:5,round:[0,4],rout:[3,4,5,6],rprogress:0,rsa:[],rtt:[0,4,5],rttstring:0,rule:5,run:[0,1,3,4,5,6],runtim:5,rw:5,s:[0,1,3,5,6],said:5,same:[1,4,5],satisfi:5,save:[4,5],save_error:0,saved_filenam:0,scenario:[1,2,5],screen:0,search:2,second:[0,4,5,6],secreci:[4,5,6],section:[3,5],secur:[5,6],see:[0,4,5],seen:5,segment:3,segment_index:[],select:0,self:[0,3,6],send:[0,4,5],sender:[0,3,5],sendig:0,sensibl:1,sensor:5,sent:[0,4,5],sentiment:5,separ:[3,5],sequenc:[0,4,5,6],serial:[5,6],serv:[0,3,5],serve_path:0,server:[0,1],server_callback:0,server_destin:0,server_fil:0,server_ident:0,server_link:0,server_loop:0,server_packet_receiv:0,servic:3,session:5,set:[0,3,4,5,6],set_default_app_data:4,set_delivery_callback:[0,4],set_link_closed_callback:0,set_link_established_callback:[0,4],set_packet_callback:[0,4],set_proof_requested_callback:4,set_proof_strategi:[0,4],set_remote_identified_callback:[0,4],set_resource_callback:4,set_resource_concluded_callback:[0,4],set_resource_started_callback:[0,4],set_resource_strategi:[0,4],set_timeout:[0,4],set_timeout_callback:[0,4],setdaemon:0,setup:[0,2],sever:[3,4],sha256:6,sha:[4,5],shall:5,share:[1,3,4,5],she:3,shelf:[5,6],shop:0,shortest:5,should:[0,3,4,5,6],should_allow_unencrypt:[],should_quit:0,should_use_implicit_proof:4,shown:0,side:6,sight:3,sign:[4,5],signatur:[4,5,6],significantli:[],similar:[3,6],simpl:[0,5,6],simplest:5,simpli:[0,1,3,5],simplic:5,sinc:[0,3,4,5],singl:[0,4,5,6],singular:5,site:2,situat:[3,5],size:[0,4,5],size_str:0,sleep:0,slice:0,slow:[0,5],small:[0,3,5,6],so:[0,1,3,4,5,6],softwar:[5,6],some:[0,1,3,5],someth:5,somethign:0,soon:4,sort:5,sourc:[0,1,3,5,6],space:[0,3,6],span:5,special:5,specif:[0,2,4,6],specifi:[0,1,3,4],spectrum:5,split:0,sponsor:6,stabl:[5,6],stack:[0,1,3,5,6],stage:5,stai:0,standard:5,start:[0,2,4,5],startup:0,state:0,station:5,stationari:3,statist:0,statu:[0,2,4,5],stdout:0,step:1,still:[0,3,5],stock:0,stop:6,store:[0,5],store_tru:0,str:0,strategi:4,stream:5,strength:6,strictli:5,string:[0,4],structur:5,subject:5,subnet:3,subsequ:5,successful:4,successfulli:0,sucessfulli:5,suffic:5,suffici:5,suffix:0,suit:[1,5],suitabl:[0,3,5],suppli:[3,4,5],support:[0,2,5],sy:0,symlink:1,symmetr:[4,5],system:[0,2,4,6],t:[0,1,3,5],tabl:[3,5],take:[0,1,5,6],taken:[0,5],tangerin:0,target:0,tcp:[1,3,5,6],tdata:0,teardown:[0,4],teardown_reason:0,teffect:0,tell:0,temperatur:5,ten:5,term:[3,5],termin:4,terminolog:[3,5],test:5,text:[0,3,5],tfile:0,than:[0,3,5],thei:[0,3,4,5],them:[0,3,5],thereaft:5,therefor:[5,6],thi:[0,1,2,3,4,5],those:3,though:5,thourough:6,thread:0,three:[3,5],throttl:3,through:[3,4,5,6],throughout:5,throughput:[5,6],thu:[3,4,5],ti:[0,5],time:[0,1,3,4,5],timeout:[0,4],timeout_callback:[],timeoutarg:0,timestr:0,tnc:[4,6],to_fil:4,todai:5,todo:[],togeth:5,token:[4,5],too:[0,3,5],tool:6,top:[3,5],topic:5,topographi:3,topolog:[3,5],total:[5,6],total_s:0,touch:6,toward:[0,5],tradit:3,traffic:[0,3,4,5],tramsit:[],transceiv:[5,6],transfer:[0,4,5,6],transfer_s:0,transmiss:5,transmit:[0,5],transpar:5,transport:[0,2,3,6],transport_en:4,transport_id:[],transport_typ:[],travers:5,treat:5,tri:0,trip:[0,4],trivial:6,truli:5,truncat:[4,5],truncated_hash:4,truncated_hashlength:4,trust:5,trustless:[5,6],ttime:0,ttransfer:0,tunnel:[5,6],tupl:4,two:[0,3,5],type:[0,2,3,4],typeerror:4,udp:[3,5,6],umsgpack:0,uncencrypt:0,underli:[3,6],understand:[1,2],unencrypt:[0,4,5],unequivoc:5,unforg:6,unidentifi:0,unifi:3,uninterest:0,uniqu:[5,6],unit:0,unknown:[0,4,5],unless:[1,4,5],unlicens:5,unpack:0,unpackb:0,unsupport:4,until:[0,4,5],unwant:5,up:[0,3,5,6],updat:[0,4],upon:[0,5],upset:0,urandom:6,us:[0,2,3,4,5],usabl:5,usag:[],usb:[3,5,6],useabl:5,user:[0,1,3,5],user_input:0,userland:6,utf:0,util:[0,1,5],utilis:[3,5,6],valid:[0,4,5],valu:[4,5],valueerror:[0,4],variabl:0,varieti:[5,6],variou:[0,5],ve:1,vendor:0,veri:[3,4,5,6],verif:[4,5],verifi:[0,4,5],versa:[3,6],version:[],vhf:[3,5],via:[1,5],vice:[3,6],view:5,virtual:3,visibl:0,wa:[0,3,4,5,6],wai:[0,1,3,5],wait:[0,5],want:[0,1,3,5,6],warrant:6,wb:0,we:[0,5],well:[3,4,5,6],went:0,were:3,what:[0,1,2,4,5],whatev:[4,5],when:[0,1,3,4,5],whenev:4,where:[2,3,4,5],whereupon:5,whether:[0,4,5],which:[0,1,3,4,5],who:5,wide:[5,6],wifi:[3,5,6],wildcard:0,willing:3,window:5,wire:[5,6],wireless:3,wish:5,within:[0,1,3,4,5],without:3,won:0,work:[5,6],world:[3,6],worri:3,would:[3,5],write:[0,4],written:5,wrong:0,x25519:[4,5,6],x:5,xenon:0,y:0,ye:5,year:5,yet:[0,5],yi:0,you:[0,1,2,3,4,5,6],your:[0,1,3,5,6],yourself:[5,6],z:0,zero:[4,6],zeromq:3,zi:0},titles:["Examples","Getting Started Fast","Reticulum Network Stack Manual","Building Networks","API Reference","Understanding Reticulum","What is Reticulum?"],titleterms:{"1":[],"2":[],"class":4,"function":5,"public":5,"try":1,The:5,With:1,announc:[0,5],api:4,base:1,basic:5,binari:5,bridg:3,broadcast:0,build:3,can:6,caveat:6,concept:3,converg:3,creat:1,current:6,deliveri:[],destin:[4,5],detail:5,develop:1,devic:6,doe:6,echo:0,emptor:6,establish:5,exampl:[0,3],fast:1,filetransf:0,format:5,further:5,get:[1,5],gipsum:[],goal:5,growth:3,ident:[4,5],identif:0,indic:2,interconnect:3,interfac:[3,6],internet:3,introduct:5,kei:5,link:[0,4,5],lora:3,manual:2,mechan:5,minim:0,motiv:5,name:5,network:[1,2,3],node:5,offer:6,orem:[],over:3,overview:3,packet:[4,5],particip:1,pathfind:[],prioritis:5,program:1,protocol:5,proven:[],reach:5,receipt:4,refer:[4,5],request:[0,4],resourc:[4,5],respons:0,reticulum:[1,2,4,5,6],scenario:3,setup:5,site:3,specif:5,stack:2,start:1,statu:6,step:[],support:[3,6],system:5,tabl:2,transport:[4,5],type:[5,6],understand:5,us:[1,6],what:6,where:6}}) \ No newline at end of file diff --git a/docs/manual/understanding.html b/docs/manual/understanding.html index a516843..3853495 100644 --- a/docs/manual/understanding.html +++ b/docs/manual/understanding.html @@ -5,7 +5,7 @@ - Understanding Reticulum — Reticulum Network Stack 0.2.5 beta documentation + Understanding Reticulum — Reticulum Network Stack 0.2.6 beta documentation @@ -31,7 +31,7 @@
  • previous |
  • - + @@ -853,7 +853,7 @@ proof 11
  • previous |
  • - + diff --git a/docs/manual/whatis.html b/docs/manual/whatis.html index 5774f5d..158dd98 100644 --- a/docs/manual/whatis.html +++ b/docs/manual/whatis.html @@ -5,7 +5,7 @@ - What is Reticulum? — Reticulum Network Stack 0.2.5 beta documentation + What is Reticulum? — Reticulum Network Stack 0.2.6 beta documentation @@ -31,7 +31,7 @@
  • previous |
  • - + @@ -45,8 +45,8 @@

    What is Reticulum?

    Reticulum is a cryptography-based networking stack for wide-area networks built on readily available hardware, and can operate even with very high latency and extremely low bandwidth.

    Reticulum allows you to build very wide-area networks with off-the-shelf tools, and offers end-to-end encryption, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable packet acknowledgements and more.

    -

    Reticulum is a complete networking stack, and does not use IP or higher layers, although it is easy to utilise IP (with TCP or UDP) as the underlying carrier for Reticulum. It is therefore trivial to tunnel Reticulum over the Internet or private IP networks. Reticulum is built directly on cryptographic principles, allowing resilience and stable functionality in open and trustless networks.

    -

    No kernel modules or drivers are required. Reticulum runs completely in userland, and can run on practically any system that runs Python 3.

    +

    Reticulum is a complete networking stack, and does not need IP or higher layers, although it is easy to utilise IP (with TCP or UDP) as the underlying carrier for Reticulum. It is therefore trivial to tunnel Reticulum over the Internet or private IP networks. Reticulum is built directly on cryptographic principles, allowing resilience and stable functionality in open and trustless networks.

    +

    No kernel modules or drivers are required. Reticulum runs completely in userland, and can run on practically any system that runs Python 3. Reticulum runs well even on small single-board computers like the Pi Zero.

    Current Status

    Reticulum should currently be considered beta software. All core protocol features are implemented and functioning, but additions will probably occur as real-world use is explored. There will be bugs. The API and wire-format can be considered relatively stable at the moment, but could change if warranted.

    @@ -182,7 +182,7 @@ network, and vice versa.

  • previous |
  • - +
    diff --git a/docs/source/conf.py b/docs/source/conf.py index 17a96cb..09106b7 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ copyright = '2021, Mark Qvist' author = 'Mark Qvist' # The full version, including alpha/beta/rc tags -release = '0.2.5 beta' +release = '0.2.6 beta' # -- General configuration --------------------------------------------------- diff --git a/docs/source/gettingstartedfast.rst b/docs/source/gettingstartedfast.rst index 9082e99..8f65586 100644 --- a/docs/source/gettingstartedfast.rst +++ b/docs/source/gettingstartedfast.rst @@ -23,14 +23,35 @@ You can install Nomad Network via pip: .. code:: - # Install + # Install ... pip3 install nomadnet - # And run + # ... and run nomadnet +Creating a Network With Reticulum +============================================= + +To create a network, you will need to specify one or more *interfaces* for +Reticulum to use. This is done in the Reticulum configuration file, which by +default is located at ``~/.reticulum/config``. + +When Reticulum is started for the first time, it will create a default +configuration file, with one active interface. This default interface uses +your existing ethernet network (if there is one), and only allows you to +communicate with other Reticulum peers within your local broadcast domain. + +To communicate further, you will have to add one or more interfaces. The default +configuration includes a number of examples, ranging from using TCP over the +internet, to LoRa and Packet Radio interfaces. + +Possibly, the examples in the config file are enough to gen you started. If +you want more information, you can read the :ref:`Interfaces` +chapter of this manual. + + Develop a Program with Reticulum =========================================== If you want to develop programs that use Reticulum, the easiest way to get @@ -56,7 +77,7 @@ don't use pip, but try this recipe: .. code:: # Install dependencies - pip3 install cryptography pyserial + pip3 install cryptography pyserial netifaces # Clone repository git clone https://github.com/markqvist/Reticulum.git diff --git a/docs/source/index.rst b/docs/source/index.rst index bafc699..418fc0c 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -10,6 +10,7 @@ the development of Reticulum itself. whatis gettingstartedfast + networks understanding reference examples diff --git a/docs/source/whatis.rst b/docs/source/whatis.rst index 9b9e128..9c8b219 100644 --- a/docs/source/whatis.rst +++ b/docs/source/whatis.rst @@ -6,9 +6,9 @@ Reticulum is a cryptography-based networking stack for wide-area networks built Reticulum allows you to build very wide-area networks with off-the-shelf tools, and offers end-to-end encryption, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable packet acknowledgements and more. -Reticulum is a complete networking stack, and does not use IP or higher layers, although it is easy to utilise IP (with TCP or UDP) as the underlying carrier for Reticulum. It is therefore trivial to tunnel Reticulum over the Internet or private IP networks. Reticulum is built directly on cryptographic principles, allowing resilience and stable functionality in open and trustless networks. +Reticulum is a complete networking stack, and does not need IP or higher layers, although it is easy to utilise IP (with TCP or UDP) as the underlying carrier for Reticulum. It is therefore trivial to tunnel Reticulum over the Internet or private IP networks. Reticulum is built directly on cryptographic principles, allowing resilience and stable functionality in open and trustless networks. -No kernel modules or drivers are required. Reticulum runs completely in userland, and can run on practically any system that runs Python 3. +No kernel modules or drivers are required. Reticulum runs completely in userland, and can run on practically any system that runs Python 3. Reticulum runs well even on small single-board computers like the Pi Zero. Current Status