diff --git a/LICENSE b/LICENSE index 9285f0f..fa60476 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ Reticulum License -Copyright (c) 2016-2025 Mark Qvist +Copyright (c) 2016-2026 Mark Qvist Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index aa70c38..1c0940f 100644 Binary files a/docs/Reticulum Manual.epub and b/docs/Reticulum Manual.epub differ diff --git a/docs/Reticulum Manual.pdf b/docs/Reticulum Manual.pdf index 5d9b96d..5e2b4f1 100644 Binary files a/docs/Reticulum Manual.pdf and b/docs/Reticulum Manual.pdf differ diff --git a/docs/manual/.buildinfo b/docs/manual/.buildinfo index baa29b1..0c7fa4d 100644 --- a/docs/manual/.buildinfo +++ b/docs/manual/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 116d1d28ad6d1b37f551e41003675574 +config: 3ef31babf60c8874c1d335df4b2d9f99 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/manual/_sources/gettingstartedfast.rst.txt b/docs/manual/_sources/gettingstartedfast.rst.txt index 3673ea5..9b102ed 100644 --- a/docs/manual/_sources/gettingstartedfast.rst.txt +++ b/docs/manual/_sources/gettingstartedfast.rst.txt @@ -25,7 +25,7 @@ and install them offline using ``pip``: .. code:: shell - pip install ./rns-1.0.2-py3-none-any.whl + pip install ./rns-1.1.2-py3-none-any.whl On platforms that limit user package installation via ``pip``, you may need to manually allow this using the ``--break-system-packages`` command line flag when installing. This diff --git a/docs/manual/_sources/index.rst.txt b/docs/manual/_sources/index.rst.txt index b33049c..0d70d95 100644 --- a/docs/manual/_sources/index.rst.txt +++ b/docs/manual/_sources/index.rst.txt @@ -20,6 +20,7 @@ to participate in the development of Reticulum itself. whatis gettingstartedfast + zen software using understanding @@ -28,6 +29,7 @@ to participate in the development of Reticulum itself. networks support examples + license .. toctree:: :maxdepth: 2 diff --git a/docs/manual/_sources/license.rst.txt b/docs/manual/_sources/license.rst.txt new file mode 100644 index 0000000..e906631 --- /dev/null +++ b/docs/manual/_sources/license.rst.txt @@ -0,0 +1,36 @@ +.. _license: + +Reticulum License +================= + +.. code:: text + + Reticulum License + + Copyright (c) 2016-2026 Mark Qvist + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + - The Software shall not be used in any kind of system which includes amongst + its functions the ability to purposefully do harm to human beings. + + - The Software shall not be used, directly or indirectly, in the creation of + an artificial intelligence, machine learning or language model training + dataset, including but not limited to any use that contributes to the + training or development of such a model or algorithm. + + - The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff --git a/docs/manual/_sources/whatis.rst.txt b/docs/manual/_sources/whatis.rst.txt index 233c95d..585a883 100644 --- a/docs/manual/_sources/whatis.rst.txt +++ b/docs/manual/_sources/whatis.rst.txt @@ -6,6 +6,9 @@ Reticulum is a cryptography-based networking stack for building both local and wide-area networks with readily available hardware, that can continue to operate under adverse conditions, such as extremely low bandwidth and very high latency. +To understand the foundational philosophy and goals of this system, read the +:ref:`Zen of Reticulum `. + Reticulum allows you to build wide-area networks with off-the-shelf tools, and offers end-to-end encryption, forward secrecy, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable packet @@ -40,6 +43,21 @@ real-world use is explored. The API and wire-format can be considered complete a could change if absolutely warranted. +Reference Implementation +======================== +The Python code, for which this documentation is written, is the Reference Implementation of +Reticulum, and compatibility with the Reticulum protocol is defined as having +full interoperability, and sufficient functional parity with this reference implementation. + +Any specific protocol implementation that achieves this is Reticulum. Any that does +not is not Reticulum. + +The protocol design and reference implementation for Reticulum was carried out by Mark Qvist between 2014 +and 2022. It is licensed under the :ref:`Reticulum License `. + +The Reticulum Protocol was dedicated to the public domain in 2016. + + What does Reticulum Offer? ========================== @@ -182,10 +200,3 @@ Reticulum implements a range of generalised interface types that covers the comm For a full list and more details, see the :ref:`Supported Interfaces` chapter. - -Caveat Emptor -============== -Reticulum is an experimental networking stack, and should be considered as -such. While it has been built with cryptography best-practices very foremost in -mind, it has not yet been externally security audited, and there could very well be -privacy-breaking bugs. \ No newline at end of file diff --git a/docs/manual/_sources/zen.rst.txt b/docs/manual/_sources/zen.rst.txt new file mode 100644 index 0000000..4b996c8 --- /dev/null +++ b/docs/manual/_sources/zen.rst.txt @@ -0,0 +1,453 @@ +.. _zen: + +**************** +Zen of Reticulum +**************** + +The Illusion Of The Center +========================== + +For the better part of a generation, we have been taught to visualize the digital world through the lens of hierarchy. The mental maps we carry are dominated by a single, misleading image: **The Cloud**. + +We imagine the network as a vast, ethereal space "up there" or "out there". A centralized repository of services and data to which we, the lowly clients, must connect. We build our software with this assumption hardcoded into our logic: *There is a server. The server has the authority. The server knows the way. I must find the server to function*. + +This is the Client-Server mental model, and it is the primary obstacle to understanding Reticulum. + +Fallacy Of The Cloud +-------------------- + +The first step in the Zen of Reticulum is to realize that *there is no cloud*. There is only other people's computers. When you build for the cloud, you are building *for* a landlord. You are accepting that your application's existence is conditional on the permission, uptime, and continued goodwill of a central authority. + +In Reticulum, you must shift your thinking from "connecting to" to "being among". Reticulum is not a service you subscribe to - *it is a fabric you inhabit*. There is no "up there". There is only *here* and *there*, and the space between them is peer-to-peer. + +Decentralization Or Uncentralizability? +--------------------------------------- + +It is common to hear the word "decentralized" thrown around in modern tech circles. But often, this is merely a marketing term for "slightly distributed centralization". A blockchain with a few dominant miners, or a federated protocol with a few giant servers. *In practice*, it's still centralized. It simply has a few centers instead of one. + +Reticulum goes further. It wants **Uncentralizability**. + +This is not a wishful political stance, but a foundational mathematical characteristic of the protocol, onto which everything else has been built. Reticulum assumes that every peer on the network is potentially hostile, and every link is potentially compromised. It is designed with no "privileged" nodes. While some nodes may act as Transport Instances - forwarding traffic for others - they do so *blindly*, and they only know about their immediate surroundings, and nothing more. They route based on cryptographic proofs, not on administrative privilege. They cannot see who is talking to whom, nor can they selectively manipulate traffic without breaking their own ability to route entirely. + +The system is designed to make hierarchy structurally impossible. You cannot hijack an address, because there is no central registry to hijack. You cannot block a user, because there is no central switch to flip. You can offer paths through the network, but you can't force anyone to use them. + +Death To The Address +-------------------- + +To break free of the center, you must also let go of the concept of the "Address". + +In the IP world, an address is a location. It is a coordinate in a *deeply hierarchical* and static grid. If you move your computer to a different house, your address changes. If your router reboots, your address might change. Your *identity* is bound to your *location*, and therefore, it is fragile, and easily controlled. + +Reticulum abolishes this link between *Identity* and *Location*. + +In Reticulum, an address is not a place; it is a **Hash of an Identity**. It is a cryptographic representation of *who* you are, not *where* you are. Because of this, your address is portable. You can take a laptop from a WiFi cafe in Berlin, to a LoRa mesh in the mountains, to a packet radio link on a boat, and your "address" - your *Destination Hash* - never changes. + +The network does not route to a place; it routes to a *person* (or a machine). When you send a packet, you are not targeting a coordinate in a grid; you are encrypting a message for a specific entity. The network dynamically discovers where that entity currently resides, and it does so in a way where no one really knows where that entity is actually located physically. + +**Consider:** + +- **The Old Way:** *"I am at* ``192.168.1.5``. *Come find me"*. +- **The Zen Way:** *"I am* ``<327c1b2f87c9353e01769b01090b18f2>``. *Wherever I am, my peers can reach me"*. + +Once you stop thinking about servers and start thinking about portable identities, where everyone can always reach everyone else directly, the illusion of the center fades away. You realize there *is* no center holding the network together. No coordinators or bureaucrats required. The network is simply the sum of its peers, communicating directly, sovereignly, and without a master. + + +Physics Of Trust +================ +*Paranoia Is A Great Design Principle* + +If we accept that there is no center - that the network is a chaotic, peer-to-peer mesh - we are forced to confront a terrifying reality: **There is no one guarding the door**. + +In the traditional networking mindset, we rely on the concept of the "trusted core". We assume our local coffee shop WiFi is safe, or that the backbone providers are neutral custodians. We build our security like a castle: strong walls on the outside, soft and trusting on the inside. We use encryption only when we step out into the "wild" internet. + +Hostile Environments +-------------------- + +The Zen of Reticulum requires you to invert this. You must assume that *every* environment is hostile. This isn't cynicism, just uncaring physics. + +When you transmit information over radio waves, you are shouting into a crowded room. Anyone can listen. When you traverse the internet, your packets pass through routers controlled by strangers, corporations, and state actors. Assuming privacy in this environment without cryptographic protection is not optimism but gross negligence. + +Reticulum is built on the premise that every link is tapped, and every peer is a potential adversary. If your system cannot survive an adversary owning the physical layer, it cannot survive at all. + +But this is the paradox: By assuming the network is hostile, you make it safe. When you accept the dangers for what they are, they become manageable. When you stop trusting the infrastructure and start trusting the math, you eliminate the single point of failure: Human integrity. + +Encryption Is Not A Feature +--------------------------- + +In the world of TCP/IP, encryption is an afterthought. It is a layer we slap on top of the protocol (HTTPS, TLS) to patch the security holes of the original design. It is a "feature" you sometimes *enable* for "sensitive data". This is fundamentally flawed, since all data is sensitive. + +In Reticulum, encryption is **gravity**. + +It is not optional. It is not a plugin. It is the *fundamental force that allows the network to exist*. If you were to strip the encryption from Reticulum, the routing would break. The Transport system uses cryptographic signatures and entropy to verify paths and pass information. If packets were plaintext, intermediate nodes could not prove that a route was valid, nor could endpoints prevent spoofing or tampering. + +In Reticulum, the entropy of the encrypted packet *is* the routing logic. + +To ask for a version of Reticulum without encryption is like asking for a version of the ocean without liquid. You are not asking for a feature change; you're asking for a different physical universe. We design for a universe where information has mass, structure, and integrity. + +Zero-Trust Architectures +------------------------ + +We must unlearn our reliance on **Institutional Trust**. + +For decades, we have been trained to trust authorities. We trust a website because a chain of Certificate Authorities (companies we don't know) vouches for it. We trust an app because it is in an app store (run by a corporation we don't control). We trust a message because it comes from a phone number assigned by a telecom. Yet, everything in our digital information sphere today is more untrustworthy and risky than a medieval second-hand underwear market. + +Reticulum replaces institutional trust with **Cryptographic Proof**. + +In Reticulum, you do not trust a node because it has a nice hostname or because it is listed in a directory. You trust it because it holds the private key corresponding to the Destination Hash you are communicating with. This trust is binary, mathematical, and **absolute**. Either the signature matches, or it does not. There is no "maybe". + +This shift moves the power from the institution to the individual. You become the ultimate arbiter of your own trust relationships. You decide which keys to accept, which paths to follow, and which identities to recognize. + +**Consider:** + +- **The Old Way:** *"I trust this site because the browser says the lock icon is green"*. +- **The Zen Way:** *"I trust this destination because I have verified its hash fingerprint out-of-band, and the math confirms the signature"*. + +When you internalize the Physics of Trust, you stop looking for protection from firewalls, VPNs, and Terms of Service agreements. You realize that true security comes from the design of the protocol itself. You can stop trusting the cloud, and you start trusting the code - because you can verify it yourself. + + +Merits Of Scarcity +================== +*Every Bit Counts* + +We have grown addicted to abundance. In the modern digital ecosystem, bandwidth is treated as an endless, flat ocean. We stream high-definition video without a thought, we ship entire libraries of code just to render a single button, and we measure performance in gigabits per second. This abundance has hollowed out our craft. When constraints vanish, efficiency dies, and with it, a certain kind of Clarity and Quality. + +Reticulum asks you to step out of the ocean and onto the tightrope. + +The Bandwidth Fallacy +--------------------- + +The Zen of Reticulum requires the realization that **5 bits per second is a valid speed**. + +To a modern developer, this sounds like paralysis. But there is a profound freedom in limits: When you have a gigabit connection, you can be incredibly sloppy. You can be wasteful. You can push your problems onto the infrastructure. *"It’s slow? Get a faster router"*. + +But on a high-latency, low-bandwidth link (be it a noisy HF radio channel or a tenuous LoRa hop) you cannot push problems anywhere. You must solve them. The network does not negotiate with waste. + +This forces a shift from consumption to interaction. You are no longer, then, consuming a service provided by a fat pipe; you are engaging in a careful negotiation with the physical medium. The medium becomes a partner in the conversation, not just a dumb conduit. You suddenly need to *understand the world to be in it*. + +Cost Of A Byte +-------------- + +In a scarce economy, a byte is not just data, but energy, time, and space. + +Every byte you transmit consumes battery life on a solar-powered node. It occupies valuable airtime that could have been used by another peer. It represents a measurable slice of the electromagnetic spectrum. + +When you internalize this, you begin to write code differently. You stop asking, "How much data can I send?" and start asking, "What is the *minimum* amount of information required to convey this intent? How can I best utilize my informational entropy?" + +This is where the elegance of Reticulum shines. The protocol is designed to strip away the non-essential. A link establishment takes three very small packets. A destination hash fits in 16 bytes. The overhead is vanishingly small, leaving almost the entire channel for the message itself. + +**Consider:** + +- **The Old Way:** *"I need to send a status update. I'll send a JSON object with metadata, timestamps, and user profile info (15KB)."* +- **The Zen Way:** *"I need to send a status update. I'll send a single byte representing the state code. The context is already known."* + +This is of course optimization, but more importantly, *it is a form of respect*. Efficiency in a shared medium is an act of stewardship. By taking only what you need from the network, you leave room for others. The network listens to those who speak with purpose. + +Flow & Time +----------- + +Scarcity also teaches us about time. We have become addicted to the *synchronous* now - the instant ping, the real-time stream. But Reticulum embraces *asynchronous* time. + +When links are intermittent and latency is measured in minutes or hours, "real-time" is an illusion. Reticulum doesn't encourage **Store and Forward** as a mere fallback, but as a primary mode of existence. You write a message, it propagates when it can, and it arrives when it arrives. + +This changes the psychological texture of communication. It removes the anxiety of the immediate response. It allows for contemplation. You are not demanding the recipient's attention *right now*; you are placing a gift in their path, to be found when they are ready. + +By designing for delay, you design for resilience. You are no longer building a house of cards that collapses when a single packet drops. You are building a stone arch that distributes the load *over time*. + +Liberation From Limits +---------------------- + +There is a strange optimism in scarcity. When you are forced to work within strict constraints, you are forced to prioritize. *You* must decide what truly matters. *That* is the real core of agency. + +In the infinite fantasy world of The Cloud, everything is urgent, so nothing is. In the economy of Reticulum, the cost of transmission forces you to weigh the value of your message. Do you really need to send that heart beat? Is that photo essential? + +When you strip away the noise, what remains is *signal*. + +This discipline creates a different kind of developer. It creates a craftsman who understands that the best code is the code you don't have to write. It creates a user who understands that the most powerful message is the one that is *understood*, not the one that is loudest. In the world of Reticulum, you are not a mere consumer of bandwidth; you are an architect of intent. + + +Sovereignty Through Infrastructure +================================== +**Be Your Own Network** + +We live in an era of digital tenancy. We lease our connectivity from ISPs. We rent our storage from cloud providers. We even borrow our identity from social media platforms. We are tenants in a house we did not build, governed by rules we did not write, subject to eviction at the whim of a landlord who has never met us. + +The Zen of Reticulum is the realization that you *can* own the house. + +A Carrier-Grade Fallacy +----------------------- + +For decades, we have been gaslit into believing that networking is really not just hard, but impossible. It is presented as a dark art reserved for telcos and billionaires, requiring millions of dollars of fiber optics, climate-controlled data centers, and armies of engineers. We are told that building reliable infrastructure is "too complex" for the individual or small organization. + +This is a big, fat lie. + +Physics is simple. A radio wave needs a transmitter and a receiver. A packet needs a path. The "complexity" of the modern internet is largely bureaucratic - a mountain of billing systems, regulatory capture, and legacy cruft designed to keep the gatekeepers in power. + +Reticulum strips away the bureaucracy. It runs on hardware that costs the price of a dinner. It runs on spectrum that is free to use. It demonstrates that a robust, planetary-scale network does not require a Fortune 500 company. It requires only the will to deploy, and the distributed, uncoordinated efforts of many individuals. + +Personal Infrastructure +----------------------- + +This is where the rubber meets the road. You can read about Reticulum, you can understand the theory, but the insights only arrive when you plug in a radio and run a Transport Node. Suddenly, you are no longer a consumer. You're an operator. + +This shift is subtle but profound. When you run your own infrastructure, the network ceases to be a service that is provided *to* you. It becomes a space that you *inhabit*. You become responsible for the flow of information. You gain an intimate understanding of the medium - the way the weather affects the radio waves, the way the topology changes, the way the packets dance through the ether. + +There is a quiet competence that comes from this. You stop asking "Is the internet down?" and start asking "Is *my* links up?" You stop waiting for a technician and start checking the logs. This is a form of strength. To understand the system that carries your words is to be free from the mystery that keeps you dependent. + +The Ability To Disconnect +------------------------- + +Why go to the trouble? Why buy the radio, write the config, and leave the Pi running in the corner? + +Because the old, centralized network is fragile. And because most of us doesn't even really want to be there anymore. + +The internet we rely on today is a chain of single points of failure. Cut the undersea cable, and a continent goes dark. Shut down the power grid, and the cloud evaporates. Deprioritize the "wrong" traffic, and the flow of information is strangled. + +Sovereignty is the ability to survive the cut, whether or not that cut was an accident or on purpose. + +When you build your own infrastructure, you build a lifeline. Reticulum is designed to function over media that the traditional internet cannot touch - bare wires, battery-powered radios, ad-hoc WiFi meshes. When the grid fails, or the censors arrive, or the bill goes unpaid, your Reticulum network continues to hum. + +This is not about "dropping out" of society. It is about building a substrate on which an actual *Society* can function. + +**Consider:** + +- **The Old Way:** "My connection is slow. I should call my ISP and complain." +- **The Zen Way:** "The path is noisy. I will adjust the antenna or find a better route." + +By taking ownership of the infrastructure, you take ownership of your voice. You stop shouting into someone else's megaphone and start building your own. The network is no longer something that happens to you; it is something you make happen. + + +Identity and Nomadism +===================== +**A Fluid Self** + +In the old world, you are defined by your coordinates. If you are at ``34.109.71.5``, you're *here*. If you unplug the cable and walk down the street, you vanish. Your digital self evaporates because it was tethered to the wall. You are a ghost in the endless machinations of gears, levers and transistors, bound to the hardware, and those that own it. + +This creates a subtle, constant anxiety. We are terrified of disconnecting because, in the architecture of the old web, disconnecting is a kind of death. + +The Zen of Reticulum offers a different way to be. + +Portable Existence +------------------ + +In Reticulum, your identity is not a location, or a username granted by a service. It is a cryptographic key - a complex, unique mathematical signature that exists independently of the physical world. You can carry it only in your mind, if you want to. + +Think of it less like a street address and more like a name. *A true name*. + +If you travel from Berlin to Tokyo, you do not change your name. You are still you. The people who know you can still recognize you. Reticulum applies this principle to the network layer. Your Destination Hash is **invariant**. It travels with you, stored securely on your device, *immutable as a stone*. + +This changes the relationship between you and the machine. You are not "logged into" the network via a specific gateway. You *are* the endpoint. The network does not connect to a place; *it converges on you*. + +Roaming Nodes +------------- + +This freedom introduces a new concept of time and space: **Nomadism**. + +Because your identity is portable, your connectivity can be fluid. You can be sitting at a desk connected to a fiber backbone one moment, and walking through a field connected only to a long-range LoRa mesh the next. To the rest of the network, nothing has changed. Your friends do not need to update your contact info. The messages they send do not bounce back. The network senses the shift in the medium and reroutes the flow of data automatically. + +You are no longer a stationary node in a fixed grid. You are a wanderer in a fluid medium. + +The interfaces - whether it is WiFi, Ethernet, Packet Radio, or a physical wire - is merely the clothing your node wears. You change it to suit the environment. Underneath, you remain the same. This is the liberation of the protocol. It treats the physical medium as a transient circumstance, not a definition of self. + +**Consider:** + +- **The Old Way:** *"I lost connection. I have to reconnect to the VPN to tell them where I am now."* +- **The Zen Way:** *"I moved. The network subtly bends to accomodate this new reality."* + +Announcing Presence +------------------- + +How does the network find a wanderer? It listens. + +In the IP world, we query directories. We ask a server, "Where is Mark?" The server checks its database and gives us a coordinate. This means that someone, somewhere, is keeping track of you. It assumes and *requires* surveillance. + +Reticulum replaces surveillance with **Announces**. + +Instead of asking a central authority where you are, you simply state your presence. You broadcast a cryptographic proof: "I am here, and I am who I say I am". This ripples out through the mesh. Your neighbors hear it, update their path tables, and pass it on. + +This is a quiet, organic process. It is the digital equivalent of lighting lanterns in the dark. You do not need to chase the light; you let the light find you. It respects your autonomy. You choose when to announce, how often to speak, and to whom. You also choose when to disappear - for but a moment or perpetually. + +Anchor In The Flow +------------------ + +There is a deep peace in this nomadism. It teaches you that stability does not come from standing still. Stability comes from *internal coherence*. + +By holding your own private key, you hold your own center of gravity. The world around you; the infrastructure, the topography and the availability of links can all shift chaotically. Storms can knock out towers. Cables can be cut. The internet can go down. + +But as long as you possess your key, you possess your identity. The entire infrastructure can be destroyed and rebuilt, and you are still you. Nothing lasts, yet nothing is lost. + +You become a sovereign entity moving through the noise, connected not by the rigidity of cables, but by the fluidity of recognition. The network becomes a place you inhabit, rather than a utility you subscribe to: You are at home in the ether. + + +Ethics Of The Tool +================== +**Technology With Conscience** + +You have unlearned the center. You have accepted the physics of trust. You have embraced the economy of scarcity and the freedom of unbound nomadism. You are standing in a new space. Now, look at the tool in your hand. + +In the old world, we were taught that technology is neutral. We are told that "guns don't kill people, people do", or that a component is just a component, indifferent to what its combinatorial potential is. This is a convenient lie. It serves only to allow the builders to wash their hands of responsibility. + +But we know better now. We know that **architecture is politics**, and *politics is control*. The way you build a system determines how it will be used. If you build a system optimized for mass surveillance, you *will* get a panopticon. If you build a system optimized for centralized control, you *will* get a dictatorship. If you build a system optimized for extraction, you *will* get a parasite. + +The Zen of Reticulum asserts that a tool is never neutral. + +On the very contrary: A tool is intent, **crystallized**. + +The Harm Principle +------------------ + +Why does the Reticulum License forbid the software from being used in systems designed to harm humans? Is it not just a restriction on freedom? + +It is a restriction on *license*, yes, but it is an expansion of *freedom*. + +Building powerful tools without a moral compass is in no way virtuous or commendable, it is plain and simple irresponsibility. + +A tool that can easily be used to oppress is a real danger to the user. If you build a network that can be turned against you by a tyrant, you are not free. You are merely waiting for the leash to tighten. By encoding the "Harm Principle" into the legal DNA of the reference implementation, we are building a safeguard. We are stating, clearly and immutably, that *this tool* is for **life**, not for death. + +This aligns the software with the interests of humanity. It cements that the network cannot be conscripted into a kill-system, a weaponized drone controller, or a torture device without breaking the license and the law. It is a line drawn in the sand - not by a government or external authority, but by the creators of the tool itself. + +**Consider:** + +- **The Old Way:** *"It's just software. How people use it is not my problem."* +- **The Zen Way:** *"This software is a habitat. I will not allow it to be used to build a cage."* + +It is *your* choice whether to align with this - we are not forcing this stance on anyone. If you choose to align with life over death, with creativity over destruction, we grant you an immensely powerful tool, to own and build with as you please. If you do not, we deny it. + +If you do not like this, we most assuredly do not need you here, and you are on your own. + +Public Domain Protocol +---------------------- + +This leads to a vital distinction: The difference between the *idea* and the *implementation*. + +The protocol - the mathematical rules of how Reticulum works - is dedicated to the Public Domain. It belongs to humanity. **No one can own it**. Anyone can implement it, improve it, or adapt it. This is the core idea of free communication, which itself must be forever free. + +But the functional, deployed *reference implementation* - the Python code, the maintenance, the years of labor - has a conscience. This distinction is the engine of sustainability. It allows the protocol to be universal, while ensuring that the specific labor of the builders is not hijacked to undermine the foundational intent of the project itself. From this document, it should be very clear what this intent is. + +If you want to build a system with Reticulum that manipulates and damages users for profits or targets missiles, you can use the public domain protocol, and start from scratch. But you cannot take our work. You must do your own. This serves as a pillar of accountability. If you want to build a weapon, *you* go and forge the steel yourself, while the world observes. And when the blood is drawn - it is on **your** hands. + +Preserving Human Agency +----------------------- + +We live in an era of predatory extraction. The open-source commons is being scraped, ingested, and regurgitated by machine learning algorithms, whose corporate owners seek to replace the very humans who built those commons. Our code, our words, and our creativity is being used to train systems that are specifically designed to make us obsolete, without offering anything else in return than serfdom and leashes. + +Reticulum stands against this. + +The license protects the software from being used to feed the beast. It draws a hard line: This tool is for *people*. It is for human-to-human connection. It is not a dataset to be strip-mined for the purpose of building a synthetic overlord, puppeteered by a miniscule conglomerate of controllers. + +This is a radical act of preservation. By protecting the code from AI appropriation, we are protecting space for human agency. We are ensuring that there remains a digital realm where the actors are flesh, blood and soul, where decisions are made by minds, not overlords hiding behind models. + +When you use Reticulum, you are using a tool that respects you. It does not see you as a product to be tracked. It does not see your data as fuel for an algorithm. It sees you as a sovereign, equal peer. + +This changes the foundational premise of using the technology. It restores dignity to the interaction. You are not the user of a service; you are a participant in a mutual covenant. The tool aligns with your autonomy, rather than eroding it. + +In this way, ethics is not a restriction, but a foundation. It is the foundation that helps ensure the network will still belong to you tomorrow. + + +Design Patterns For Post-IP Systems +=================================== +**Practical Philosophy for Developers** + +The philosophy is useless if it cannot be hammered into code. The metaphors we have explored - nomadism, scarcity, trust - are not just poetry, but real-world engineering constraints. When you sit down to write software for Reticulum, these concepts must shape the very structure of your application. + +We are now moving from the *why* to the *how*. This is where the abstract becomes concrete, and where you will see the true depth of the patterns we have been weaving. + +Store & Forward +--------------- + +The web has trained us to be impatient. We write synchronous code. We fire a request and we wait, blocking the UI, holding our breath. If the response doesn't come in 250 milliseconds, we show a spinner. If it doesn't come in five seconds, we show an error. We treat network connectivity as a binary state: either we are "online" or we are "broken". + +This is brittle. It is a rejection of reality. + +In Reticulum, connectivity is a spectrum, and presence is asynchronous. If at all applicable to your intent, you must design your applications to embrace **Store & Forward**. + +Instead of demanding an immediate answer, your application should act as a patient participant. You create a message for someone or something in the mesh. The network holds it. It carries it from node to node, perhaps over hours or days, waiting for the recipient to appear. When they finally surface, the message is delivered. This requires a shift from "request/response" to "event/handler". How exactly you do this is a challenge for you to solve intelligently within your problem domain, but Reticulum-based systems already exist that does this extremely well, and you can use them for inspiration. + +**Consider:** + +- **The Old Way:** ``Connect() -> Send() -> Wait() -> Crash if timeout.`` +- **The Zen Way:** ``Send() -> Continue living. -> Receive() when it arrives.`` + +This changes the user experience profoundly. It removes the anxiety of the loading bar. It creates a sense of continuity. The user is not "waiting for the network"; they are interacting with a persistent log of communication that lives in the network itself. + +Naming Is Power +--------------- + +In the IP world, we are slaves to the Domain Name System. We rely on a hierarchy of registrars to map human-readable names to machine-readable addresses. This hierarchy is a choke point. If the registrar revokes your domain, or if the DNS server goes down, you vanish. + +Reticulum dissolves this hierarchy with **Hash-based Identity**. + +In this design pattern, a name is not a string you look up; it is a cryptographic destination you verify. When you design for Reticulum, you stop asking the user for a URL and start asking for a Destination or Identity Hash. + +This feels strange at first. A hash like ``<83b7328926fed0d2e6a10a7671f9e237>`` looks alien compared to ``myfriend.com``. But that alienness is the armor. It **cannot** be spoofed. It **cannot** be censored by a registrar. It is **absolute**. + +Designing for this means shifting your UI metaphors. You are no longer browsing a web of pages; you are managing a ledger of keys. You are building an "Address Book" that is actually a keyring. The names are given by the user, and the power stays with them. That hashes look complex is directly analogous to the strengths of the bonds formed by their use. It forces the user to engage in a moment of verification, an out-of-band handshake, which restores the human element of trust that SSL certificates stripped away. + +The Interface Is The Medium +--------------------------- + +One of the most liberating patterns in Reticulum is **Transport Agnosticism**. + +In traditional networking, your code is often littered with transport logic. "Am I on WiFi? Check bandwidth. Am I on Cellular? Check data plan. Am I on Ethernet?". You are constantly micromanaging the pipe. + +In Reticulum, you write to the API, and the API writes to the medium. You send a packet to a Destination. You do not care if that packet travels over a TCP tunnel, a LoRa radio wave, or a serial wire interface. That is the stack's concern. + +This allows you to write **Universal Applications**. +Imagine a messaging app. You write it once. It works on a laptop connected to fiber. It works on a phone in the city using WiFi. And, without a single line of code changed, it works on a device in the wilderness, talking only to other devices via radio. + +The pattern is simple: **Never code to the hardware. Code to the intent.** + +**Consider:** + +- **The Old Way:** ``socket.connect(ip, port)``, and then a whole lot more +- **The Zen Way:** ``RNS.Packet(destination, data).send()`` + +By abstracting the medium, you make your software immortal to changes in infrastructure. The user might switch from a 4G hotspot to a HF modem tomorrow. Your software doesn't need to know. It simply continues the conversation. + +Emergent Patterns +----------------- + +When you combine these patterns - *Store & Forward*, *Hash-based Identity*, and *Transport Agnosticism* - you create software that feels fundamentally different. + +It feels *grounded*. It doesn't flicker when the signal drops. It doesn't panic when the server is down. It has weight. It has persistence. It has *relevance*. + +You are no longer building a "client" that begs a "server" for attention. You are building an autonomous agent that exists within the mesh. It speaks when it needs to, listens when it can, and carries its identity with it wherever it goes. + +This is the culmination of the Zen. The code is not just a set of instructions: It is a behavioral envelope. It is a way of *being* in the network. + + +Fabric Of The Independent +========================= + +We have stripped away the illusions. We have seen that the center is empty, that trust *must* be hard, that resources are finite, and that we must own our infrastructure. We have seen that tools have ethics and that our identity can move fluidly. + +This is a reclaiming of the commons. For too long, we have allowed the most vital substrate of human society - *our ability to speak to one another* - to be colonized by entities that do not share our interests. We have allowed the architecture of our communication to be designed by accountants rather than architects. + +We are taking it back. Not by petitioning the masters, but by building the new world within, over, under and around the shell of the old. + +The Work Is Finished +-------------------- + +The heavy lifting is done. + +The protocol is in the public domain, a gift to humanity that can never be taken away. The software is written, tested, and running on devices scattered across the globe. The manual lies open before you. The source code for the reference implementation is now distributed on hundreds of thousands of devices across the planet. No one can delete or destroy it. The hardware is accessible and abundant. + +It was a hard road to get here, but we got here. Now, there is no roadmap committee waiting for approval. There is no venture capital dictating the user experience. There is no CEO to sign off on the next feature release. + +There is only you. + +The barrier to entry is no longer complexity: It is the mere habit of dependency. You were conditioned to wait. Wait for the app update. Wait for the ISP to fix the line. Wait for the platform to allow the post. Wait for the government to change the policies. Wait for the likes. Wait for the revolution to be televised. + +The revolution never was televised. + +It is packetized. + +Open Sky +-------- + +The future of this technology is a construction project. + +It looks like a single node on a windowsill, listening to the static. It looks like a message sent to a neighbor, bypassing the noise of the commercial web. It looks like a community mesh that grows, link by link, hop by hop, carried by hands that care more about connection than profit. + +You have the blueprints. You have the tools. You have the philosophy. The noise of the old world has fallen away, leaving you with the quiet clarity of the open spectrum. + +*Mark, early 2026* \ No newline at end of file diff --git a/docs/manual/_static/documentation_options.js b/docs/manual/_static/documentation_options.js index de213a8..ca548c4 100644 --- a/docs/manual/_static/documentation_options.js +++ b/docs/manual/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '1.1.2', + VERSION: '1.1.3', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/manual/examples.html b/docs/manual/examples.html index 24e9db8..855e760 100644 --- a/docs/manual/examples.html +++ b/docs/manual/examples.html @@ -3,11 +3,11 @@ - + - Code Examples - Reticulum Network Stack 1.1.2 documentation + Code Examples - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation
+ diff --git a/docs/manual/forhumans.html b/docs/manual/forhumans.html index 907705d..028668e 100644 --- a/docs/manual/forhumans.html +++ b/docs/manual/forhumans.html @@ -7,7 +7,7 @@ - An Explanation of Reticulum for Human Beings - Reticulum Network Stack 1.1.2 documentation + An Explanation of Reticulum for Human Beings - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
- + diff --git a/docs/manual/genindex.html b/docs/manual/genindex.html index d5e11c0..dc9ec96 100644 --- a/docs/manual/genindex.html +++ b/docs/manual/genindex.html @@ -5,7 +5,7 @@ - Index - Reticulum Network Stack 1.1.2 documentation + Index - Reticulum Network Stack 1.1.3 documentation @@ -178,7 +178,7 @@
@@ -202,7 +202,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -213,6 +213,7 @@
- + diff --git a/docs/manual/gettingstartedfast.html b/docs/manual/gettingstartedfast.html index d1b8bde..7e05156 100644 --- a/docs/manual/gettingstartedfast.html +++ b/docs/manual/gettingstartedfast.html @@ -3,11 +3,11 @@ - + - Getting Started Fast - Reticulum Network Stack 1.1.2 documentation + Getting Started Fast - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
  • API Reference
  • @@ -275,7 +277,7 @@ of your system with a command like sudo pamac install python-pip or similar.

    You can also dowload the Reticulum release wheels from GitHub, or other release channels, and install them offline using pip:

    -
    pip install ./rns-1.0.2-py3-none-any.whl
    +
    pip install ./rns-1.1.2-py3-none-any.whl
     

    On platforms that limit user package installation via pip, you may need to manually @@ -862,12 +864,12 @@ All other available modules will still be loaded when needed.

    +
    diff --git a/docs/manual/hardware.html b/docs/manual/hardware.html index 96d221c..0259f32 100644 --- a/docs/manual/hardware.html +++ b/docs/manual/hardware.html @@ -7,7 +7,7 @@ - Communications Hardware - Reticulum Network Stack 1.1.2 documentation + Communications Hardware - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
  • API Reference
  • @@ -672,7 +674,7 @@ can be used with Reticulum. This includes virtual software modems such as
- + diff --git a/docs/manual/index.html b/docs/manual/index.html index 72602be..4633d19 100644 --- a/docs/manual/index.html +++ b/docs/manual/index.html @@ -7,7 +7,7 @@ - Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
@@ -575,7 +631,7 @@ to participate in the development of Reticulum itself.

- + diff --git a/docs/manual/interfaces.html b/docs/manual/interfaces.html index 08252ab..198a82b 100644 --- a/docs/manual/interfaces.html +++ b/docs/manual/interfaces.html @@ -7,7 +7,7 @@ - Configuring Interfaces - Reticulum Network Stack 1.1.2 documentation + Configuring Interfaces - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
- + diff --git a/docs/manual/license.html b/docs/manual/license.html new file mode 100644 index 0000000..18e9d31 --- /dev/null +++ b/docs/manual/license.html @@ -0,0 +1,353 @@ + + + + + + + + + + Reticulum License - Reticulum Network Stack 1.1.3 documentation + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+
+

Reticulum License

+
Reticulum License
+
+Copyright (c) 2016-2026 Mark Qvist
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+- The Software shall not be used in any kind of system which includes amongst
+  its functions the ability to purposefully do harm to human beings.
+
+- The Software shall not be used, directly or indirectly, in the creation of
+  an artificial intelligence, machine learning or language model training
+  dataset, including but not limited to any use that contributes to the
+  training or development of such a model or algorithm.
+
+- The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/manual/networks.html b/docs/manual/networks.html index 1f4876a..9cfc862 100644 --- a/docs/manual/networks.html +++ b/docs/manual/networks.html @@ -7,7 +7,7 @@ - Building Networks - Reticulum Network Stack 1.1.2 documentation + Building Networks - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation
- + diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv index 0fbbc69..989b7cb 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 7fb7c2c..6856792 100644 --- a/docs/manual/reference.html +++ b/docs/manual/reference.html @@ -3,11 +3,11 @@ - + - API Reference - Reticulum Network Stack 1.1.2 documentation + API Reference - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
+ diff --git a/docs/manual/search.html b/docs/manual/search.html index d91ee12..9b26961 100644 --- a/docs/manual/search.html +++ b/docs/manual/search.html @@ -8,7 +8,7 @@ -Search - Reticulum Network Stack 1.1.2 documentation +Search - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
- + diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index 7019292..3db3822 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"API Reference":[[7,null]],"ARM64":[[2,"arm64"]],"AX.25 KISS Interface":[[5,"ax-25-kiss-interface"]],"Adding Radio Interfaces":[[2,"adding-radio-interfaces"]],"An Explanation of Reticulum for Human Beings":[[1,null]],"Android":[[2,"android"]],"Announce":[[0,"announce"]],"Announce Propagation Rules":[[10,"announce-propagation-rules"]],"Announce Rate Control":[[5,"announce-rate-control"]],"Auto Interface":[[5,"auto-interface"]],"Automated List Sourcing":[[11,"automated-list-sourcing"]],"Backbone Interface":[[5,"backbone-interface"]],"Blackhole Management":[[11,"blackhole-management"]],"Bootstrapping Connectivity":[[2,"bootstrapping-connectivity"]],"Broadcast":[[0,"broadcast"]],"Buffer":[[0,"buffer"]],"Build Personal Infrastructure":[[2,"build-personal-infrastructure"]],"Building Networks":[[6,null]],"Caveat Emptor":[[12,"caveat-emptor"]],"Channel":[[0,"channel"]],"Code Examples":[[0,null]],"Columba":[[8,"columba"]],"Combining Hardware Types":[[3,"combining-hardware-types"]],"Common Interface Options":[[5,"common-interface-options"]],"Communications Hardware":[[3,null]],"Concepts & Overview":[[6,"concepts-overview"]],"Conceptual Overview":[[10,"conceptual-overview"]],"Configuration & Data":[[11,"configuration-data"]],"Configuring Interfaces":[[5,null]],"Connect to the Distributed Backbone":[[2,"connect-to-the-distributed-backbone"]],"Connecting Remotes":[[5,"connecting-remotes"]],"Connecting Reticulum Instances Over the Internet":[[2,"connecting-reticulum-instances-over-the-internet"]],"Contributing to the Global Ret":[[2,"contributing-to-the-global-ret"]],"Creating RNodes":[[3,"creating-rnodes"]],"Creating a Network With Reticulum":[[2,"creating-a-network-with-reticulum"]],"Creating and Using Custom Interfaces":[[2,"creating-and-using-custom-interfaces"]],"Creating and Using a Network Identity":[[10,"creating-and-using-a-network-identity"]],"Cryptographic Primitives":[[10,"cryptographic-primitives"]],"Current Status":[[12,"current-status"]],"Current Usage":[[10,"current-usage"]],"Custom Interfaces":[[0,"custom-interfaces"],[5,"custom-interfaces"]],"Debian Bookworm":[[2,"debian-bookworm"]],"Destination Naming":[[10,"destination-naming"]],"Destinations":[[10,"destinations"]],"Destinations, Not Addresses":[[6,"destinations-not-addresses"]],"Develop a Program with Reticulum":[[2,"develop-a-program-with-reticulum"]],"Discoverable Interfaces":[[5,"discoverable-interfaces"]],"Discovering Interfaces":[[11,"discovering-interfaces"]],"Discovery Parameters":[[5,"discovery-parameters"]],"Donations":[[9,"donations"]],"Echo":[[0,"echo"]],"Enabling Discovery":[[5,"enabling-discovery"]],"Ethernet-based Hardware":[[3,"ethernet-based-hardware"]],"Example Configuration":[[5,"example-configuration"]],"Filetransfer":[[0,"filetransfer"]],"Finding Your Way":[[2,"finding-your-way"]],"Fixed Serial Port Names":[[11,"fixed-serial-port-names"]],"Future Implications":[[10,"future-implications"]],"Getting Further":[[10,"getting-further"]],"Getting Started Fast":[[2,null]],"Goals":[[10,"goals"]],"Heltec LoRa32 v2.0":[[3,"heltec-lora32-v2-0"]],"Heltec LoRa32 v3.0":[[3,"heltec-lora32-v3-0"]],"Heltec LoRa32 v4.0":[[3,"heltec-lora32-v4-0"]],"Heltec T114":[[3,"heltec-t114"]],"Heterogeneous Connectivity":[[6,"heterogeneous-connectivity"]],"Hosting Public Entrypoints":[[2,"hosting-public-entrypoints"]],"I2P Interface":[[5,"i2p-interface"]],"Identification":[[0,"example-identify"]],"Identities":[[10,"understanding-identities"]],"Improving System Configuration":[[11,"improving-system-configuration"]],"Included Utility Programs":[[11,"included-utility-programs"]],"Indices and Tables":[[4,"indices-and-tables"]],"Installation":[[3,"installation"]],"Interface Access Codes":[[10,"interface-access-codes"]],"Interface Modes":[[5,"interface-modes"],[5,"interfaces-modes"]],"Interface Modules & Connectivity Resources":[[8,"interface-modules-connectivity-resources"]],"Interface Types and Devices":[[12,"interface-types-and-devices"]],"Introduction & Basic Functionality":[[10,"introduction-basic-functionality"]],"Introductory Considerations":[[6,"introductory-considerations"]],"KISS Interface":[[5,"kiss-interface"]],"LXMF":[[8,"lxmf"]],"LXMF Interactive Client":[[8,"lxmf-interactive-client"]],"LXMFy":[[8,"lxmfy"]],"LXST":[[8,"id17"]],"LXST Phone":[[8,"lxst-phone"]],"LilyGO LoRa32 v1.0":[[3,"lilygo-lora32-v1-0"]],"LilyGO LoRa32 v2.0":[[3,"lilygo-lora32-v2-0"]],"LilyGO LoRa32 v2.1":[[3,"lilygo-lora32-v2-1"]],"LilyGO T-Beam":[[3,"lilygo-t-beam"]],"LilyGO T-Beam Supreme":[[3,"lilygo-t-beam-supreme"]],"LilyGO T-Deck":[[3,"lilygo-t-deck"]],"LilyGO T-Echo":[[3,"lilygo-t-echo"]],"LilyGO T3S3":[[3,"lilygo-t3s3"]],"Link":[[0,"link"]],"Link Establishment in Detail":[[10,"link-establishment-in-detail"]],"Listeners":[[5,"listeners"]],"Local Blackhole Management":[[11,"local-blackhole-management"]],"MacOS":[[2,"macos"]],"MeshChat":[[8,"meshchat"]],"MeshChatX":[[8,"meshchatx"]],"Micron Parser JS":[[8,"micron-parser-js"]],"Minimal":[[0,"minimal"]],"Mixing Strategies":[[2,"mixing-strategies"]],"Motivation":[[10,"motivation"]],"Network Health & Responsibility":[[2,"network-health-responsibility"]],"Network Identities":[[10,"network-identities"]],"New Destination Rate Limiting":[[5,"new-destination-rate-limiting"]],"Node Types":[[10,"node-types"]],"Nomad Network":[[8,"nomad-network"]],"OpenCom XL":[[3,"opencom-xl"]],"OpenWRT":[[2,"openwrt"]],"Packet Prioritisation":[[10,"packet-prioritisation"]],"Packet Radio Modems":[[3,"packet-radio-modems"]],"Pipe Interface":[[5,"pipe-interface"]],"Platform-Specific Install Notes":[[2,"platform-specific-install-notes"]],"Programs & Utilities":[[8,"programs-utilities"]],"Programs Using Reticulum":[[8,null]],"Protocol Specifics":[[10,"protocol-specifics"]],"Protocols":[[8,"protocols"]],"Provide Feedback":[[9,"provide-feedback"]],"Public Key Announcements":[[10,"public-key-announcements"]],"Publishing Blackhole Lists":[[11,"publishing-blackhole-lists"]],"Pure-Python Reticulum":[[2,"pure-python-reticulum"]],"RAK4631-based Boards":[[3,"rak4631-based-boards"]],"RBrowser":[[8,"rbrowser"]],"RISC-V":[[2,"risc-v"]],"RNMon":[[8,"rnmon"]],"RNS FileSync":[[8,"rns-filesync"]],"RNS Page Node":[[8,"rns-page-node"]],"RNode":[[3,"rnode"]],"RNode LoRa Interface":[[5,"rnode-lora-interface"]],"RNode Multi Interface":[[5,"rnode-multi-interface"]],"RRC":[[8,"rrc"]],"Raspberry Pi":[[2,"raspberry-pi"]],"Reaching the Destination":[[10,"reaching-the-destination"]],"Reference Setup":[[10,"reference-setup"]],"Remote Management":[[11,"remote-management"]],"Remote Shell":[[8,"remote-shell"]],"Requests & Responses":[[0,"requests-responses"]],"Resolving Dependency & Installation Issues":[[2,"resolving-dependency-installation-issues"]],"Resources":[[10,"resources"]],"RetiBBS":[[8,"retibbs"]],"Reticulum Network Stack Manual":[[4,null]],"Reticulum Network Telephone":[[8,"reticulum-network-telephone"]],"Reticulum Relay Chat":[[8,"reticulum-relay-chat"]],"Reticulum Transport":[[10,"reticulum-transport"]],"Reticulum as a System Service":[[11,"reticulum-as-a-system-service"]],"Retipedia":[[8,"retipedia"]],"Security Considerations":[[5,"security-considerations"]],"Serial Interface":[[5,"serial-interface"]],"Serial Lines & Devices":[[3,"serial-lines-devices"]],"Sideband":[[8,"sideband"]],"Standalone Reticulum Installation":[[2,"standalone-reticulum-installation"]],"Support Reticulum":[[9,null]],"Supported Boards and Devices":[[3,"supported-boards-and-devices"]],"Systemwide Service":[[11,"systemwide-service"]],"TCP Client Interface":[[5,"tcp-client-interface"]],"TCP Server Interface":[[5,"tcp-server-interface"]],"Table Of Contents":[[4,"table-of-contents"]],"The Announce Mechanism in Detail":[[10,"the-announce-mechanism-in-detail"]],"The rncp Utility":[[11,"the-rncp-utility"]],"The rnid Utility":[[11,"the-rnid-utility"]],"The rnodeconf Utility":[[11,"the-rnodeconf-utility"]],"The rnpath Utility":[[11,"the-rnpath-utility"]],"The rnprobe Utility":[[11,"the-rnprobe-utility"]],"The rnsd Utility":[[11,"the-rnsd-utility"]],"The rnstatus Utility":[[11,"the-rnstatus-utility"]],"The rnx Utility":[[11,"the-rnx-utility"]],"Transport Nodes and Instances":[[6,"transport-nodes-and-instances"]],"Trustless Networking":[[6,"trustless-networking"]],"Try Using a Reticulum-based Program":[[2,"try-using-a-reticulum-based-program"]],"UDP Interface":[[5,"udp-interface"]],"Ubuntu Lunar":[[2,"ubuntu-lunar"]],"Understanding Reticulum":[[10,null]],"Unsigned RNode v2.x":[[3,"unsigned-rnode-v2-x"]],"Usage with Reticulum":[[3,"usage-with-reticulum"]],"Userspace Service":[[11,"userspace-service"]],"Using Reticulum on Your System":[[11,null]],"Using the Included Utilities":[[2,"using-the-included-utilities"]],"What does Reticulum Offer?":[[12,"what-does-reticulum-offer"]],"What is Reticulum?":[[12,null]],"Where can Reticulum be Used?":[[12,"where-can-reticulum-be-used"]],"WiFi-based Hardware":[[3,"wifi-based-hardware"]],"Windows":[[2,"windows"]],"Wire Format":[[10,"wire-format"]]},"docnames":["examples","forhumans","gettingstartedfast","hardware","index","interfaces","networks","reference","software","support","understanding","using","whatis"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["examples.rst","forhumans.rst","gettingstartedfast.rst","hardware.rst","index.rst","interfaces.rst","networks.rst","reference.rst","software.rst","support.rst","understanding.rst","using.rst","whatis.rst"],"indexentries":{"__init__() (rns.rawchannelreader method)":[[7,"RNS.RawChannelReader.__init__",false]],"__init__() (rns.rawchannelwriter method)":[[7,"RNS.RawChannelWriter.__init__",false]],"accepts_links() (rns.destination method)":[[7,"RNS.Destination.accepts_links",false]],"add_message_handler() (rns.channel.channel method)":[[7,"RNS.Channel.Channel.add_message_handler",false]],"add_ready_callback() (rns.rawchannelreader method)":[[7,"RNS.RawChannelReader.add_ready_callback",false]],"advertise() (rns.resource method)":[[7,"RNS.Resource.advertise",false]],"announce() (rns.destination method)":[[7,"RNS.Destination.announce",false]],"announce_cap (rns.reticulum attribute)":[[7,"RNS.Reticulum.ANNOUNCE_CAP",false]],"app_and_aspects_from_name() (rns.destination static method)":[[7,"RNS.Destination.app_and_aspects_from_name",false]],"await_path() (rns.transport static method)":[[7,"RNS.Transport.await_path",false]],"blackhole_sources() (rns.reticulum static method)":[[7,"RNS.Reticulum.blackhole_sources",false]],"buffer (class in rns)":[[7,"RNS.Buffer",false]],"cancel() (rns.resource method)":[[7,"RNS.Resource.cancel",false]],"channel (class in rns.channel)":[[7,"RNS.Channel.Channel",false]],"clear_default_app_data() (rns.destination method)":[[7,"RNS.Destination.clear_default_app_data",false]],"concluded() (rns.requestreceipt method)":[[7,"RNS.RequestReceipt.concluded",false]],"create_bidirectional_buffer() (rns.buffer static method)":[[7,"RNS.Buffer.create_bidirectional_buffer",false]],"create_keys() (rns.destination method)":[[7,"RNS.Destination.create_keys",false]],"create_reader() (rns.buffer static method)":[[7,"RNS.Buffer.create_reader",false]],"create_writer() (rns.buffer static method)":[[7,"RNS.Buffer.create_writer",false]],"current_ratchet_id() (rns.identity static method)":[[7,"RNS.Identity.current_ratchet_id",false]],"curve (rns.identity attribute)":[[7,"RNS.Identity.CURVE",false]],"curve (rns.link attribute)":[[7,"RNS.Link.CURVE",false]],"decrypt() (rns.destination method)":[[7,"RNS.Destination.decrypt",false]],"decrypt() (rns.identity method)":[[7,"RNS.Identity.decrypt",false]],"deregister_announce_handler() (rns.transport static method)":[[7,"RNS.Transport.deregister_announce_handler",false]],"deregister_request_handler() (rns.destination method)":[[7,"RNS.Destination.deregister_request_handler",false]],"destination (class in rns)":[[7,"RNS.Destination",false]],"enable_ratchets() (rns.destination method)":[[7,"RNS.Destination.enable_ratchets",false]],"encrypt() (rns.destination method)":[[7,"RNS.Destination.encrypt",false]],"encrypt() (rns.identity method)":[[7,"RNS.Identity.encrypt",false]],"encrypted_mdu (rns.packet attribute)":[[7,"RNS.Packet.ENCRYPTED_MDU",false]],"enforce_ratchets() (rns.destination method)":[[7,"RNS.Destination.enforce_ratchets",false]],"establishment_timeout_per_hop (rns.link attribute)":[[7,"RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP",false]],"expand_name() (rns.destination static method)":[[7,"RNS.Destination.expand_name",false]],"from_bytes() (rns.identity static method)":[[7,"RNS.Identity.from_bytes",false]],"from_file() (rns.identity static method)":[[7,"RNS.Identity.from_file",false]],"full_hash() (rns.identity static method)":[[7,"RNS.Identity.full_hash",false]],"get_age() (rns.link method)":[[7,"RNS.Link.get_age",false]],"get_channel() (rns.link method)":[[7,"RNS.Link.get_channel",false]],"get_data_size() (rns.resource method)":[[7,"RNS.Resource.get_data_size",false]],"get_establishment_rate() (rns.link method)":[[7,"RNS.Link.get_establishment_rate",false]],"get_expected_rate() (rns.link method)":[[7,"RNS.Link.get_expected_rate",false]],"get_hash() (rns.resource method)":[[7,"RNS.Resource.get_hash",false]],"get_instance() (rns.reticulum static method)":[[7,"RNS.Reticulum.get_instance",false]],"get_mdu() (rns.link method)":[[7,"RNS.Link.get_mdu",false]],"get_mode() (rns.link method)":[[7,"RNS.Link.get_mode",false]],"get_mtu() (rns.link method)":[[7,"RNS.Link.get_mtu",false]],"get_parts() (rns.resource method)":[[7,"RNS.Resource.get_parts",false]],"get_private_key() (rns.destination method)":[[7,"RNS.Destination.get_private_key",false]],"get_private_key() (rns.identity method)":[[7,"RNS.Identity.get_private_key",false]],"get_progress() (rns.requestreceipt method)":[[7,"RNS.RequestReceipt.get_progress",false]],"get_progress() (rns.resource method)":[[7,"RNS.Resource.get_progress",false]],"get_public_key() (rns.identity method)":[[7,"RNS.Identity.get_public_key",false]],"get_q() (rns.link method)":[[7,"RNS.Link.get_q",false]],"get_q() (rns.packet method)":[[7,"RNS.Packet.get_q",false]],"get_random_hash() (rns.identity static method)":[[7,"RNS.Identity.get_random_hash",false]],"get_remote_identity() (rns.link method)":[[7,"RNS.Link.get_remote_identity",false]],"get_request_id() (rns.requestreceipt method)":[[7,"RNS.RequestReceipt.get_request_id",false]],"get_response() (rns.requestreceipt method)":[[7,"RNS.RequestReceipt.get_response",false]],"get_response_time() (rns.requestreceipt method)":[[7,"RNS.RequestReceipt.get_response_time",false]],"get_rssi() (rns.link method)":[[7,"RNS.Link.get_rssi",false]],"get_rssi() (rns.packet method)":[[7,"RNS.Packet.get_rssi",false]],"get_rtt() (rns.packetreceipt method)":[[7,"RNS.PacketReceipt.get_rtt",false]],"get_segments() (rns.resource method)":[[7,"RNS.Resource.get_segments",false]],"get_snr() (rns.link method)":[[7,"RNS.Link.get_snr",false]],"get_snr() (rns.packet method)":[[7,"RNS.Packet.get_snr",false]],"get_status() (rns.packetreceipt method)":[[7,"RNS.PacketReceipt.get_status",false]],"get_status() (rns.requestreceipt method)":[[7,"RNS.RequestReceipt.get_status",false]],"get_transfer_size() (rns.resource method)":[[7,"RNS.Resource.get_transfer_size",false]],"has_path() (rns.transport static method)":[[7,"RNS.Transport.has_path",false]],"hash() (rns.destination static method)":[[7,"RNS.Destination.hash",false]],"hash_from_name_and_identity() (rns.destination static method)":[[7,"RNS.Destination.hash_from_name_and_identity",false]],"hops_to() (rns.transport static method)":[[7,"RNS.Transport.hops_to",false]],"identify() (rns.link method)":[[7,"RNS.Link.identify",false]],"identity (class in rns)":[[7,"RNS.Identity",false]],"inactive_for() (rns.link method)":[[7,"RNS.Link.inactive_for",false]],"interface_discovery_sources() (rns.reticulum static method)":[[7,"RNS.Reticulum.interface_discovery_sources",false]],"is_compressed() (rns.resource method)":[[7,"RNS.Resource.is_compressed",false]],"is_ready_to_send() (rns.channel.channel method)":[[7,"RNS.Channel.Channel.is_ready_to_send",false]],"keepalive (rns.link attribute)":[[7,"RNS.Link.KEEPALIVE",false]],"keepalive_timeout_factor (rns.link attribute)":[[7,"RNS.Link.KEEPALIVE_TIMEOUT_FACTOR",false]],"keysize (rns.identity attribute)":[[7,"RNS.Identity.KEYSIZE",false]],"link (class in rns)":[[7,"RNS.Link",false]],"link_mtu_discovery (rns.reticulum attribute)":[[7,"RNS.Reticulum.LINK_MTU_DISCOVERY",false]],"link_mtu_discovery() (rns.reticulum static method)":[[7,"RNS.Reticulum.link_mtu_discovery",false]],"load_private_key() (rns.destination method)":[[7,"RNS.Destination.load_private_key",false]],"load_private_key() (rns.identity method)":[[7,"RNS.Identity.load_private_key",false]],"load_public_key() (rns.identity method)":[[7,"RNS.Identity.load_public_key",false]],"mdu (rns.channel.channel property)":[[7,"RNS.Channel.Channel.mdu",false]],"messagebase (class in rns)":[[7,"RNS.MessageBase",false]],"minimum_bitrate (rns.reticulum attribute)":[[7,"RNS.Reticulum.MINIMUM_BITRATE",false]],"msgtype (rns.messagebase attribute)":[[7,"RNS.MessageBase.MSGTYPE",false]],"mtu (rns.reticulum attribute)":[[7,"RNS.Reticulum.MTU",false]],"next_hop() (rns.transport static method)":[[7,"RNS.Transport.next_hop",false]],"next_hop_interface() (rns.transport static method)":[[7,"RNS.Transport.next_hop_interface",false]],"no_data_for() (rns.link method)":[[7,"RNS.Link.no_data_for",false]],"no_inbound_for() (rns.link method)":[[7,"RNS.Link.no_inbound_for",false]],"no_outbound_for() (rns.link method)":[[7,"RNS.Link.no_outbound_for",false]],"pack() (rns.messagebase method)":[[7,"RNS.MessageBase.pack",false]],"packet (class in rns)":[[7,"RNS.Packet",false]],"packetreceipt (class in rns)":[[7,"RNS.PacketReceipt",false]],"pathfinder_m (rns.transport attribute)":[[7,"RNS.Transport.PATHFINDER_M",false]],"plain_mdu (rns.packet attribute)":[[7,"RNS.Packet.PLAIN_MDU",false]],"publish_blackhole_enabled() (rns.reticulum static method)":[[7,"RNS.Reticulum.publish_blackhole_enabled",false]],"ratchet_count (rns.destination attribute)":[[7,"RNS.Destination.RATCHET_COUNT",false]],"ratchet_expiry (rns.identity attribute)":[[7,"RNS.Identity.RATCHET_EXPIRY",false]],"ratchet_interval (rns.destination attribute)":[[7,"RNS.Destination.RATCHET_INTERVAL",false]],"ratchetsize (rns.identity attribute)":[[7,"RNS.Identity.RATCHETSIZE",false]],"rawchannelreader (class in rns)":[[7,"RNS.RawChannelReader",false]],"rawchannelwriter (class in rns)":[[7,"RNS.RawChannelWriter",false]],"recall() (rns.identity static method)":[[7,"RNS.Identity.recall",false]],"recall_app_data() (rns.identity static method)":[[7,"RNS.Identity.recall_app_data",false]],"register_announce_handler() (rns.transport static method)":[[7,"RNS.Transport.register_announce_handler",false]],"register_message_type() (rns.channel.channel method)":[[7,"RNS.Channel.Channel.register_message_type",false]],"register_request_handler() (rns.destination method)":[[7,"RNS.Destination.register_request_handler",false]],"remote_management_enabled() (rns.reticulum static method)":[[7,"RNS.Reticulum.remote_management_enabled",false]],"remove_message_handler() (rns.channel.channel method)":[[7,"RNS.Channel.Channel.remove_message_handler",false]],"remove_ready_callback() (rns.rawchannelreader method)":[[7,"RNS.RawChannelReader.remove_ready_callback",false]],"request() (rns.link method)":[[7,"RNS.Link.request",false]],"request_path() (rns.transport static method)":[[7,"RNS.Transport.request_path",false]],"requestreceipt (class in rns)":[[7,"RNS.RequestReceipt",false]],"required_discovery_value() (rns.reticulum static method)":[[7,"RNS.Reticulum.required_discovery_value",false]],"resend() (rns.packet method)":[[7,"RNS.Packet.resend",false]],"resource (class in rns)":[[7,"RNS.Resource",false]],"reticulum (class in rns)":[[7,"RNS.Reticulum",false]],"send() (rns.channel.channel method)":[[7,"RNS.Channel.Channel.send",false]],"send() (rns.packet method)":[[7,"RNS.Packet.send",false]],"set_default_app_data() (rns.destination method)":[[7,"RNS.Destination.set_default_app_data",false]],"set_delivery_callback() (rns.packetreceipt method)":[[7,"RNS.PacketReceipt.set_delivery_callback",false]],"set_link_closed_callback() (rns.link method)":[[7,"RNS.Link.set_link_closed_callback",false]],"set_link_established_callback() (rns.destination method)":[[7,"RNS.Destination.set_link_established_callback",false]],"set_packet_callback() (rns.destination method)":[[7,"RNS.Destination.set_packet_callback",false]],"set_packet_callback() (rns.link method)":[[7,"RNS.Link.set_packet_callback",false]],"set_proof_requested_callback() (rns.destination method)":[[7,"RNS.Destination.set_proof_requested_callback",false]],"set_proof_strategy() (rns.destination method)":[[7,"RNS.Destination.set_proof_strategy",false]],"set_ratchet_interval() (rns.destination method)":[[7,"RNS.Destination.set_ratchet_interval",false]],"set_remote_identified_callback() (rns.link method)":[[7,"RNS.Link.set_remote_identified_callback",false]],"set_resource_callback() (rns.link method)":[[7,"RNS.Link.set_resource_callback",false]],"set_resource_concluded_callback() (rns.link method)":[[7,"RNS.Link.set_resource_concluded_callback",false]],"set_resource_started_callback() (rns.link method)":[[7,"RNS.Link.set_resource_started_callback",false]],"set_resource_strategy() (rns.link method)":[[7,"RNS.Link.set_resource_strategy",false]],"set_retained_ratchets() (rns.destination method)":[[7,"RNS.Destination.set_retained_ratchets",false]],"set_timeout() (rns.packetreceipt method)":[[7,"RNS.PacketReceipt.set_timeout",false]],"set_timeout_callback() (rns.packetreceipt method)":[[7,"RNS.PacketReceipt.set_timeout_callback",false]],"should_use_implicit_proof() (rns.reticulum static method)":[[7,"RNS.Reticulum.should_use_implicit_proof",false]],"sign() (rns.destination method)":[[7,"RNS.Destination.sign",false]],"sign() (rns.identity method)":[[7,"RNS.Identity.sign",false]],"stale_grace (rns.link attribute)":[[7,"RNS.Link.STALE_GRACE",false]],"stale_time (rns.link attribute)":[[7,"RNS.Link.STALE_TIME",false]],"teardown() (rns.link method)":[[7,"RNS.Link.teardown",false]],"to_file() (rns.identity method)":[[7,"RNS.Identity.to_file",false]],"track_phy_stats() (rns.link method)":[[7,"RNS.Link.track_phy_stats",false]],"transport (class in rns)":[[7,"RNS.Transport",false]],"transport_enabled() (rns.reticulum static method)":[[7,"RNS.Reticulum.transport_enabled",false]],"truncated_hash() (rns.identity static method)":[[7,"RNS.Identity.truncated_hash",false]],"truncated_hashlength (rns.identity attribute)":[[7,"RNS.Identity.TRUNCATED_HASHLENGTH",false]],"unpack() (rns.messagebase method)":[[7,"RNS.MessageBase.unpack",false]],"validate() (rns.identity method)":[[7,"RNS.Identity.validate",false]]},"objects":{"RNS":[[7,0,1,"","Buffer"],[7,0,1,"","Destination"],[7,0,1,"","Identity"],[7,0,1,"","Link"],[7,0,1,"","MessageBase"],[7,0,1,"","Packet"],[7,0,1,"","PacketReceipt"],[7,0,1,"","RawChannelReader"],[7,0,1,"","RawChannelWriter"],[7,0,1,"","RequestReceipt"],[7,0,1,"","Resource"],[7,0,1,"","Reticulum"],[7,0,1,"","Transport"]],"RNS.Buffer":[[7,1,1,"","create_bidirectional_buffer"],[7,1,1,"","create_reader"],[7,1,1,"","create_writer"]],"RNS.Channel":[[7,0,1,"","Channel"]],"RNS.Channel.Channel":[[7,1,1,"","add_message_handler"],[7,1,1,"","is_ready_to_send"],[7,2,1,"","mdu"],[7,1,1,"","register_message_type"],[7,1,1,"","remove_message_handler"],[7,1,1,"","send"]],"RNS.Destination":[[7,3,1,"","RATCHET_COUNT"],[7,3,1,"","RATCHET_INTERVAL"],[7,1,1,"","accepts_links"],[7,1,1,"","announce"],[7,1,1,"","app_and_aspects_from_name"],[7,1,1,"","clear_default_app_data"],[7,1,1,"","create_keys"],[7,1,1,"","decrypt"],[7,1,1,"","deregister_request_handler"],[7,1,1,"","enable_ratchets"],[7,1,1,"","encrypt"],[7,1,1,"","enforce_ratchets"],[7,1,1,"","expand_name"],[7,1,1,"","get_private_key"],[7,1,1,"","hash"],[7,1,1,"","hash_from_name_and_identity"],[7,1,1,"","load_private_key"],[7,1,1,"","register_request_handler"],[7,1,1,"","set_default_app_data"],[7,1,1,"","set_link_established_callback"],[7,1,1,"","set_packet_callback"],[7,1,1,"","set_proof_requested_callback"],[7,1,1,"","set_proof_strategy"],[7,1,1,"","set_ratchet_interval"],[7,1,1,"","set_retained_ratchets"],[7,1,1,"","sign"]],"RNS.Identity":[[7,3,1,"","CURVE"],[7,3,1,"","KEYSIZE"],[7,3,1,"","RATCHETSIZE"],[7,3,1,"","RATCHET_EXPIRY"],[7,3,1,"","TRUNCATED_HASHLENGTH"],[7,1,1,"","current_ratchet_id"],[7,1,1,"","decrypt"],[7,1,1,"","encrypt"],[7,1,1,"","from_bytes"],[7,1,1,"","from_file"],[7,1,1,"","full_hash"],[7,1,1,"","get_private_key"],[7,1,1,"","get_public_key"],[7,1,1,"","get_random_hash"],[7,1,1,"","load_private_key"],[7,1,1,"","load_public_key"],[7,1,1,"","recall"],[7,1,1,"","recall_app_data"],[7,1,1,"","sign"],[7,1,1,"","to_file"],[7,1,1,"","truncated_hash"],[7,1,1,"","validate"]],"RNS.Link":[[7,3,1,"","CURVE"],[7,3,1,"","ESTABLISHMENT_TIMEOUT_PER_HOP"],[7,3,1,"","KEEPALIVE"],[7,3,1,"","KEEPALIVE_TIMEOUT_FACTOR"],[7,3,1,"","STALE_GRACE"],[7,3,1,"","STALE_TIME"],[7,1,1,"","get_age"],[7,1,1,"","get_channel"],[7,1,1,"","get_establishment_rate"],[7,1,1,"","get_expected_rate"],[7,1,1,"","get_mdu"],[7,1,1,"","get_mode"],[7,1,1,"","get_mtu"],[7,1,1,"","get_q"],[7,1,1,"","get_remote_identity"],[7,1,1,"","get_rssi"],[7,1,1,"","get_snr"],[7,1,1,"","identify"],[7,1,1,"","inactive_for"],[7,1,1,"","no_data_for"],[7,1,1,"","no_inbound_for"],[7,1,1,"","no_outbound_for"],[7,1,1,"","request"],[7,1,1,"","set_link_closed_callback"],[7,1,1,"","set_packet_callback"],[7,1,1,"","set_remote_identified_callback"],[7,1,1,"","set_resource_callback"],[7,1,1,"","set_resource_concluded_callback"],[7,1,1,"","set_resource_started_callback"],[7,1,1,"","set_resource_strategy"],[7,1,1,"","teardown"],[7,1,1,"","track_phy_stats"]],"RNS.MessageBase":[[7,3,1,"","MSGTYPE"],[7,1,1,"","pack"],[7,1,1,"","unpack"]],"RNS.Packet":[[7,3,1,"","ENCRYPTED_MDU"],[7,3,1,"","PLAIN_MDU"],[7,1,1,"","get_q"],[7,1,1,"","get_rssi"],[7,1,1,"","get_snr"],[7,1,1,"","resend"],[7,1,1,"","send"]],"RNS.PacketReceipt":[[7,1,1,"","get_rtt"],[7,1,1,"","get_status"],[7,1,1,"","set_delivery_callback"],[7,1,1,"","set_timeout"],[7,1,1,"","set_timeout_callback"]],"RNS.RawChannelReader":[[7,1,1,"","__init__"],[7,1,1,"","add_ready_callback"],[7,1,1,"","remove_ready_callback"]],"RNS.RawChannelWriter":[[7,1,1,"","__init__"]],"RNS.RequestReceipt":[[7,1,1,"","concluded"],[7,1,1,"","get_progress"],[7,1,1,"","get_request_id"],[7,1,1,"","get_response"],[7,1,1,"","get_response_time"],[7,1,1,"","get_status"]],"RNS.Resource":[[7,1,1,"","advertise"],[7,1,1,"","cancel"],[7,1,1,"","get_data_size"],[7,1,1,"","get_hash"],[7,1,1,"","get_parts"],[7,1,1,"","get_progress"],[7,1,1,"","get_segments"],[7,1,1,"","get_transfer_size"],[7,1,1,"","is_compressed"]],"RNS.Reticulum":[[7,3,1,"","ANNOUNCE_CAP"],[7,3,1,"","LINK_MTU_DISCOVERY"],[7,3,1,"","MINIMUM_BITRATE"],[7,3,1,"","MTU"],[7,1,1,"","blackhole_sources"],[7,1,1,"","get_instance"],[7,1,1,"","interface_discovery_sources"],[7,1,1,"","link_mtu_discovery"],[7,1,1,"","publish_blackhole_enabled"],[7,1,1,"","remote_management_enabled"],[7,1,1,"","required_discovery_value"],[7,1,1,"","should_use_implicit_proof"],[7,1,1,"","transport_enabled"]],"RNS.Transport":[[7,3,1,"","PATHFINDER_M"],[7,1,1,"","await_path"],[7,1,1,"","deregister_announce_handler"],[7,1,1,"","has_path"],[7,1,1,"","hops_to"],[7,1,1,"","next_hop"],[7,1,1,"","next_hop_interface"],[7,1,1,"","register_announce_handler"],[7,1,1,"","request_path"]]},"objnames":{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","property","Python property"],"3":["py","attribute","Python attribute"]},"objtypes":{"0":"py:class","1":"py:method","2":"py:property","3":"py:attribute"},"terms":{"":[0,2,5,6,10,11,12],"0":[0,2,5,7,10,11,12],"00":[10,11],"00000000":10,"00000100":10,"00000111":10,"01":10,"01010000":10,"02":2,"05":0,"0536":11,"06915":5,"08":[0,11],"0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1":11,"0x0101":0,"0x20":0,"0x7d":0,"0x7e":0,"0x91c421ddfb8a30a49a71d63447ddb54cebe3465":9,"0xf000":[0,7],"1":[0,2,5,7,10,11],"10":[5,10,11],"100":[0,5,10],"1000":0,"10000000":10,"1024":0,"11":10,"115":10,"115200":[0,5,11],"1178a8f1fad405bf2ad153bf5036bdfd":11,"118":5,"12":[2,5,11],"1200":10,"125":5,"125000":5,"127":5,"128":[6,7,10],"13":11,"13425ec15b621c1d928589718000d814":[6,10],"14":5,"15":5,"150":[5,11],"150m":5,"15m":11,"16":[5,6,10,11],"1625":5,"1625000":5,"167":10,"17":11,"1726dbad538775b5bf9b0ea25a4079c8":11,"18":11,"1800":7,"187":11,"1b03013c25f1c2ca068a4f080b844a10":11,"1h":11,"2":[0,2,5,7,10,11],"20":[5,10,11],"200":[5,11],"201":5,"2023":[2,11],"21":2,"22":5,"2225fdeecaf6e2db4556c3c2d7637294":11,"23":11,"2316":11,"23h":11,"24":[5,11],"2400000000":5,"25":[0,4,12],"255":[5,11],"25519":7,"256":[5,6,7,10,11,12],"2592000":7,"27":11,"29":5,"297":[10,12],"29716":5,"2b489d06eaf7c543808c76a5332a447d":11,"2b9ec651326d9bc274119054c70fb75":11,"2d03725b327348980d570f739a3a5708":11,"2d882c5586e548d79b5af27bca1776dc":11,"2f":0,"2owjajquafianpecac":2,"3":[0,2,5,8,10,11,12],"30":[5,7,11],"30602def3b3506a28ed33db6f60cc6c9":11,"32":[2,7,10],"3278":5,"32m":11,"33":5,"34":5,"360":[5,7],"3600":[0,5],"37428":11,"37429":11,"38":11,"383":7,"3865":11,"399ea050ce0eed1816c300bcb0840938":11,"3a4f8b9c1d2e3f4g5h6i7j8k9l0m1n2o":11,"3b87":5,"4":[7,10,11],"40m":11,"4242":[2,5],"4251":5,"42671":5,"430":10,"4343":5,"44":12,"44318":5,"45":[0,10],"46":11,"464":7,"465":10,"469":11,"48555":5,"49":11,"49555":5,"4965":11,"4e":5,"4faf1b2e0a077e6a9d92fa051f256038":10,"4ghz":5,"5":[0,5,7,10,11,12],"500":[5,7,10,12],"5001":5,"51":[5,10],"512":[5,7,10,12],"52":11,"521c87a83afb8f29e4455e77930b973b":11,"5245a8efe1788c6a1cd36144a270e13b":11,"55":5,"56":11,"564":0,"56m":11,"5757":5,"5858":5,"59":11,"5caf":5,"5d78":5,"5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq":5,"6":[5,7,11],"60":[0,5],"600":5,"63":11,"64":[2,10,11],"68a4aa91ac350c4087564e8a69f84e86":11,"7":[2,5,10,11],"71e5":5,"72":5,"720":[5,7],"7200":5,"73":[5,11],"73cbd378bb0286ed11a707c13447bb1":11,"74":11,"74195":5,"781":11,"7822":11,"7a55144adf826958a9529a3bcf08b149":11,"8":[0,5,11],"80":[9,11],"8001":5,"809":11,"83":[10,11],"84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w":9,"86":11,"865":5,"865600000":5,"867":5,"867200000":5,"868":10,"88":5,"89":5,"8dd57a738226809646089335a6b03695":11,"9":[2,7,11],"900":10,"9037":11,"921600":11,"941bed5e228775e5a8079fc38b1ccf3f":11,"96":10,"9600":0,"984b74a3f768bef236af4371e6f248cd":11,"99":10,"99714":5,"9fb6d773498fb3feda407ed8ef2c3229":11,"9h":11,"A":[0,2,5,6,7,8,10,11],"And":0,"As":[2,3,5,7,8,9,10,11,12],"At":[2,10],"Be":[7,11],"But":[9,10],"By":[0,2,5,7,10,11],"For":[2,5,6,7,10,11,12],"IN":[0,7],"If":[0,2,3,5,6,7,8,9,10,11,12],"In":[0,2,3,5,6,7,8,10,11,12],"It":[0,2,3,5,6,7,8,10,11,12],"No":[0,2,5,6,10,11,12],"Not":4,"Of":[6,10],"On":[0,2,5,6,11],"One":[2,3,7,10],"Or":[5,11,12],"That":[8,10],"The":[0,2,3,4,5,6,7,8,9,12],"Then":[0,2],"There":[2,6,10,11],"These":[2,5,6,7,8,10,11],"To":[0,2,3,5,6,10,11],"Will":7,"With":[4,5,6,8,10,11],"_":10,"__":10,"______":10,"_______":10,"________":10,"________________":10,"__future__":0,"__init__":[0,7],"__main__":0,"__name__":0,"__str__":0,"a4d":5,"a79f":5,"aarch64":2,"ab":0,"abil":[2,3,11,12],"abl":[0,2,5,7,10,11],"abort":[0,5],"about":[0,2,3,5,6,7,10,11],"abov":[2,3,5,10,11],"absolut":[5,9,12],"abstract":[6,7,10],"abstractmethod":7,"abund":3,"abus":11,"accept":[5,7,9,10,11],"accept_al":[0,7],"accept_app":7,"accept_non":7,"accepts_link":7,"access":[2,4,5,6,7,11],"access_point":[5,6],"accid":8,"accommod":[7,10],"accord":[0,2,6,10],"accordingli":[0,5],"account":6,"achiev":[2,5,6,7,10],"acknowledg":[6,12],"across":[0,3,6,7,10,11],"act":[2,5,7,10,11],"action":[0,11],"activ":[0,2,5,7,8,10],"actor":[10,11],"actual":[0,2,5,6,10,11],"ad":[0,3,4,5,6,7,8,10,11,12],"adapt":[2,3],"add":[0,2,5,6,7,11],"add_argu":0,"add_message_handl":[0,7],"add_ready_callback":7,"addit":[3,5,6,7,8,10,11,12],"addition":[2,3,5,10],"addr":11,"address":[0,2,4,5,7,10,11,12],"adher":7,"adjust":[2,7],"admin":5,"administr":[6,8,10,11],"adopt":10,"adress":[7,10],"advanc":[8,10],"advantag":7,"advers":12,"adversari":[2,6,9],"advertis":[0,5,7],"advic":9,"advis":[5,10],"ae":[7,10,12],"af73":5,"affect":[2,5],"affili":8,"afford":6,"after":[0,2,5,6,7,10,11],"again":[5,10,11],"against":[2,5,10],"agenc":10,"agent":10,"agnost":[6,10],"agnostic":10,"ago":11,"ahead":6,"aim":[2,4,10],"air":[2,3],"airmax":3,"airtim":[5,6],"airtime_limit_long":5,"airtime_limit_short":5,"akin":10,"algorithm":6,"alic":10,"align":[2,11],"aliv":[7,10],"all":[0,2,3,4,5,6,7,8,9,10,11,12],"allevi":3,"alloc":[5,6,7,10,11],"allow":[0,2,3,5,6,7,8,10,11,12],"allow_al":[0,7],"allow_list":7,"allow_non":7,"allowed_hash":11,"allowed_ident":11,"allowed_list":7,"almost":[3,5,10,11],"alon":5,"along":[5,7,10,11],"alongsid":6,"alreadi":[0,2,3,6,7,8,10,11],"also":[0,2,3,4,5,6,7,8,10,11,12],"alter":[2,7,10],"altern":[0,2,5,11],"although":[2,10,12],"alwai":[2,5,6,7,10,11],"amateur":[5,12],"amount":[0,5,6,7,10,12],"amsterdam":[5,11],"an":[0,2,3,5,6,7,8,10,11,12],"analog":8,"analyt":9,"android":[4,5,8,11],"ani":[0,2,3,5,6,7,8,9,10,11,12],"annot":0,"annouce_cap":5,"announc":[4,6,7,8,11],"announce_cap":[5,7],"announce_handl":0,"announce_interv":5,"announce_packet_hash":7,"announce_rate_grac":5,"announce_rate_penalti":5,"announce_rate_target":5,"announced_ident":[0,7],"announceloop":0,"announcesampl":0,"anonym":[2,6,7,10,12],"anoth":[6,7,10,11],"answer":[10,11],"antenna":3,"anymor":2,"anyon":[0,2,3,5,6,7,8,10,11],"anyth":[3,5,8,10,11,12],"anywher":[0,5],"ap":5,"api":[2,4,10,12],"apk":2,"app":[0,2,7,8,10],"app_and_aspects_from_nam":7,"app_data":[0,7],"app_nam":[0,7],"app_timeout":0,"append":[0,10],"appli":[5,7,10],"applic":[0,5,6,7,8,10,11,12],"approach":[2,3,6,10,11],"appropri":[5,6],"approv":[6,10],"approxim":[5,11],"april":2,"apt":2,"ar":[0,2,3,5,6,7,8,9,10,11,12],"arbitrari":[7,10,11,12],"arch":2,"architect":9,"architectur":[2,8],"archiv":8,"area":[2,3,5,6,10,12],"arg":0,"argon":0,"argpars":0,"argument":[0,7,11],"argumentpars":0,"arm64":4,"around":[2,5,10],"arrai":2,"arriv":[0,10],"arx":11,"ask":[0,2,3,7,8],"aspect":[0,2,3,5,6,7,10,11],"aspect_filt":[0,7],"assign":[0,6,10,11],"assist":8,"associ":[7,10,11],"assum":[5,6,10],"assumpt":[6,9],"asymmetr":[10,11,12],"asynchron":6,"attach":[8,11],"attached_interfac":7,"attack":2,"attain":2,"attempt":[0,2,3,7,11],"attent":9,"attribut":7,"atx":11,"audit":12,"auth":11,"authent":[5,6,7,8,10,11,12],"author":[10,11],"authorit":10,"auto":[2,3,4,7,10,11],"auto_compress":7,"autoconfigur":12,"autoconnect_discovered_interfac":[5,11],"autodiscov":5,"autoinstal":[3,11],"autointerfac":[2,3,5,11],"autom":[2,3,4,8,9,10],"automat":[0,2,5,6,7,8,10,11,12],"autonom":[6,10],"autonomi":12,"avail":[0,2,3,4,5,6,7,8,10,11,12],"averag":10,"avoid":[3,10,11],"awai":[0,5,10,11],"await_path":7,"awar":[2,5,10],"ax":[4,12],"ax25kissinterfac":5,"b":[0,11],"b32":5,"back":[0,5,10,12],"backbon":[3,4,6,11],"backboneinterfac":[2,5,11],"backend":[5,10],"background":[2,5,11],"backhaul":[3,6],"backup":11,"balanc":5,"band":[3,10],"bandwidth":[2,5,6,7,8,10,11,12],"bare":[0,5],"barrier":[5,10],"base":[4,5,6,7,8,10,11,12],"base32":[5,11],"base64":11,"bash":5,"basi":[5,7,10,11,12],"basic":[0,2,4,5,6,7,11],"baud":[5,11],"baud_flash":11,"baudrat":0,"bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6":9,"bc7291552be7a58f361522990465165c":11,"beacon":5,"beauti":8,"becaus":[6,10],"becki":0,"becom":[0,2,5,6,7,10],"been":[0,2,3,5,6,7,8,9,10,11,12],"befor":[0,2,5,6,7,9,10,11],"begin":[0,3,7],"begun":7,"behalf":[5,6],"behav":[3,8],"behaviour":[2,5,11],"behind":[2,5,9,10],"being":[2,5,7,10],"beings":10,"belief":10,"belong":[6,10,11],"below":[3,5,11],"benefici":[5,11],"best":[2,6,10,12],"better":[2,5,6,9,10],"between":[0,5,6,7,8,10,11],"bi":[7,10],"bidirect":10,"billion":[6,10],"bin":[2,5,11],"binari":[0,2,5,6,7,10,11],"bind":5,"bit":[0,2,5,6,7,8,10,11,12],"bitcoin":9,"bitrat":[0,5,7],"blackhol":[2,4,6,7,10],"blackhole_sourc":[7,11],"blackholed_ident":11,"blackholeupdat":11,"ble":5,"blindli":11,"blob":[0,10],"block":[2,5,6,7,8,10,11],"blocklist":11,"bluetooth":11,"board":[2,4,5,8,10,12],"bogu":5,"boil":3,"bookworm":4,"bool":7,"boot":[2,11],"bootstrap":[4,5,11],"bootstrap_onli":[2,5],"bot":8,"both":[0,2,3,5,6,7,8,10,11,12],"bounc":2,"bound":6,"boundari":[5,6,10],"box":3,"break":[2,7,10,12],"breath":2,"breviti":11,"bridg":[3,5],"briefli":[3,10],"bring":[5,11],"brittl":2,"broad":[2,3],"broadcast":[2,4,5,6,7,10,11],"broadcast_destin":0,"broadcastloop":0,"broader":[2,10],"broken":2,"brought":[5,11],"brows":8,"browser":8,"buffer":[4,5,7,12],"bufferedread":7,"bufferedrwpair":7,"bufferedwrit":7,"bufferexampl":0,"bug":[8,9,12],"build":[0,3,4,5,8,10,12],"built":[2,5,6,8,10,11,12],"bulletin":8,"bundl":0,"bureaucrat":12,"burst":5,"bw":11,"bypass":9,"byte":[0,6,7,10,11,12],"bytes":0,"c":[0,11],"c50cc4e4f7838b6c31f60ab9032cbc62":11,"c89b4da064bf66d280f0e4d8abfd9806":11,"cabl":5,"cach":[5,6,11],"calcul":[6,7,10,11],"call":[0,6,7,8,10,12],"callabl":[0,7],"callback":[0,7],"callsign":5,"can":[0,2,3,4,5,6,7,8,9,10,11],"cancel":7,"candid":6,"cannot":[0,2,5,6,12],"cap":5,"capabl":[0,2,5,6,10],"capac":[2,3,5,6,7,10],"car":6,"carambola":0,"care":[2,6,7,11,12],"carefulli":2,"cargo_build_target":2,"carri":[5,6,7,10,11,12],"carrier":[6,12],"case":[0,2,3,5,6,10,11],"cat":11,"categori":3,"caus":[2,5],"caution":5,"caveat":4,"cb":[7,10],"cbc":[10,12],"cdma":5,"cell":6,"censor":[10,11],"censorship":[10,12],"central":[2,3,5,6,8,10,11],"centralis":10,"certain":[0,5,6,9,10,11],"chain":5,"challeng":[2,8,10],"chanc":3,"chang":[0,2,5,7,10,11,12],"channel":[2,4,5,6,7,9,10,12],"channelarg":0,"channelexampl":0,"chapter":[2,3,5,6,7,8,10,11,12],"charact":[0,5],"characterist":[5,6,10],"charter":10,"chat":4,"cheap":[3,5,10],"cheapli":2,"check":[0,2,7,10,11],"checksum":[7,12],"choic":[2,6],"choos":[0,2,5,8,10],"chose":10,"chosen":10,"chunk":0,"cific":5,"ciphertext":7,"ciphertext_token":7,"circumst":[9,10],"cl":0,"claim":10,"class":[0,6,7,12],"clear":[0,5,7,11],"clear_default_app_data":7,"clear_screen":0,"client":[0,3,4,7,11],"client_buffer_readi":0,"client_connect":0,"client_disconnect":0,"client_ident":0,"client_loop":0,"client_message_receiv":0,"client_packet_receiv":0,"client_request":0,"clone":10,"close":[0,6,7,11],"closed_callback":7,"closer":[8,10],"closest":10,"cloud":[5,8],"cluster":10,"co":[3,5,12],"code":[2,3,4,5,6,8,9,11],"codingr":5,"coexist":6,"collabor":10,"collaps":2,"collect":[2,9],"collis":6,"columba":4,"com":[0,9],"combin":[2,4,8,10],"come":[2,5,6,10],"comma":[5,11],"command":[0,2,5,8,11],"comment":[5,11],"commit":[2,8],"common":[0,2,3,4,6,10,11,12],"commonli":[3,5],"commun":[0,2,4,5,6,7,8,9,10,11,12],"communica":5,"compar":6,"compat":[0,2,3,5,7,8,10,11],"compil":2,"complet":[0,2,3,5,6,7,8,10,11,12],"complex":[2,5,9,10],"compli":6,"compon":[3,9,10],"compos":10,"comprehens":[8,9],"compress":[0,7,10,11,12],"compromis":10,"comput":[2,5,10,12],"computation":[5,11],"concaten":7,"conceiv":[2,3],"concept":[4,10,11],"conceptu":4,"concert":10,"conclud":[0,7],"concurr":[3,10,11],"condit":[2,10,12],"conf":[2,8],"config":[0,2,5,6,11],"configarg":0,"configdir":7,"configpath":0,"configur":[0,2,3,4,6,7,10,12],"configuraion":3,"configure_devic":0,"confirm":[6,10,12],"conflict":[2,6],"confus":[3,10],"congest":10,"conjunct":5,"connect":[0,3,4,7,9,10,11,12],"consequ":[6,10],"conserv":5,"consid":[0,2,5,7,8,10,11,12],"consider":[4,10],"consist":10,"consol":11,"constant":7,"constantli":10,"constitut":[2,10],"constrain":[6,7],"construct":[10,12],"constructor":0,"consum":[6,7],"consumpt":6,"contact":[6,8,10],"contain":[0,5,6,7,10,11],"contend":10,"content":[0,2,6,8,11],"context":[2,10,11],"contin":[0,2],"continu":[5,7,9,11,12],"contribut":[4,6,9],"control":[0,2,3,4,6,7,8,10,11,12],"convei":0,"conveni":[0,11],"convent":[0,6],"converg":[2,6,10],"convers":[8,10],"cook":2,"coordin":[5,6,7,10,12],"copi":11,"core":[6,10,11,12],"correct":[0,5,6,10],"correctli":[0,6],"correspond":[6,10],"cost":[3,5,10,12],"could":[0,2,5,6,7,10,11,12],"count":[8,10],"counter":0,"cours":[2,5,6,8,10],"cover":[2,3,6,10,12],"coverag":6,"cpu":[0,5,6,10],"cpuinfo":11,"cr":11,"creat":[0,4,5,6,7,8,11,12],"create_bidirectional_buff":[0,7],"create_kei":7,"create_read":7,"create_receipt":[0,7],"create_writ":7,"creation":[6,8,10,11,12],"creator":10,"credenti":[5,10],"critic":[6,10,11],"cross":[5,8],"crucial":6,"cryptograph":[2,4,5,6,11,12],"cryptographi":[2,10,12],"ctrl":0,"cull":7,"curl":5,"current":[0,2,4,5,7,8,11],"current_download":0,"current_filenam":0,"current_ratchet_id":7,"curv":[6,7,10,12],"curve25519":[6,7,10,12],"custom":[3,4,7,8,10,12],"custom_network_nam":5,"customis":5,"d":11,"d56a4fa02c0a77b3575935aedd90bdb2":11,"daemon":[0,2,5,7,8,11],"dai":[7,8],"data":[0,2,3,4,5,6,7,10,12],"data_buff":0,"data_port":5,"databas":[8,11],"databit":[0,5,11],"datacent":2,"datar":5,"date":[0,2,11],"datetim":0,"db":[0,11],"dbm":[0,5,11],"deal":5,"debian":[4,10,11],"debug":[2,11],"decad":[3,9],"decentr":[2,5,11],"decentralis":12,"decid":[5,6,7,10],"decim":5,"decis":[5,6,10],"declar":10,"decod":[0,5,11],"decreas":11,"decrypt":[5,6,7,10,11],"dedic":[5,10],"deep":2,"def":0,"default":[0,2,3,5,6,7,8,10,11],"default_ifac_s":0,"defin":[0,5,7,10,11],"definit":[0,2,10,11],"defunct":11,"degrad":6,"degre":5,"delai":[5,8,10,11],"deleg":10,"delimit":0,"deliv":[0,2,6,7,8],"deliveri":[0,6,7,8,12],"demand":7,"demonstr":[0,2,5],"depend":[0,3,4,5,6,7,10,11],"deploi":10,"deregist":7,"deregister_announce_handl":7,"deregister_request_handl":7,"deriv":[2,6,7,10,12],"describ":[3,5,7,10],"descript":[0,11],"descriptor":0,"deseri":0,"deserializ":0,"design":[2,3,5,6,8,9,10,11,12],"desir":[0,3,5,10],"desktop":[5,8],"dest_len":0,"destin":[0,2,4,7,11],"destination_1":0,"destination_2":0,"destination_clos":0,"destination_hash":[0,7,11],"destination_hexhash":0,"detach":5,"detail":[0,2,4,5,7,11,12],"detect":0,"determin":[2,6,7,10],"detriment":11,"dev":[0,2,5,11],"devel":2,"develop":[3,4,7,8,9,10,12],"devic":[0,2,4,5,6,7,8,10,11],"dh":7,"dhcp":[3,5,6,11],"dict":0,"dictat":11,"dictionari":11,"did":[0,8],"differ":[0,2,3,5,6,7,8,10,11,12],"diffi":[6,10],"difficult":[2,3,11],"difficulti":[5,11],"digit":[2,3,10,12],"dir":0,"dire":3,"direct":[0,2,3,6,7,8,10,11],"direction":10,"directli":[2,3,5,6,7,8,10,11,12],"directori":[0,2,5,6,11],"disabl":[5,10,11],"disappear":[5,11],"disassoci":10,"discard":[2,7,10],"disconnect":[0,2,5],"discov":[2,4,5,6,7,8,10],"discover":[2,4,11],"discover_interfac":11,"discoveri":[2,4,7,10,11],"discovery_bandwidth":5,"discovery_encrypt":5,"discovery_frequ":5,"discovery_modul":5,"discovery_nam":5,"discovery_port":5,"discovery_scop":5,"discovery_stamp_valu":5,"discrimin":6,"discuss":[3,10],"disk":[0,7,11],"displai":[0,5,6,8,10,11],"disrupt":5,"dissolv":6,"distanc":[3,10,11],"distant":[2,7,10],"distinct":[5,6,10],"distinguish":[6,10],"distribut":[0,4,6,7,8,10,11,12],"dive":2,"divid":7,"divmod":0,"dn":[3,5,8],"dnf":2,"do":[0,2,3,5,6,7,10,11],"document":[2,7,8,10,11],"doe":[0,2,3,4,5,7,8,10,11],"doesn":[5,6],"domain":[2,5,10,11],"don":[0,2,6,7,10,11],"donat":4,"done":[0,2,5,10,11],"dot":[10,11],"doubt":2,"dowload":2,"down":[0,3,5,7,11],"download":[0,2,5,6,8,11],"download_began":0,"download_conclud":0,"download_finish":0,"download_start":0,"download_tim":0,"downstream":11,"drag":8,"drastic":11,"drive":9,"driver":[11,12],"droid":2,"drop":[5,6,7,8,10,11],"dsrdtr":0,"dual":[3,11],"dublin":11,"due":0,"dump":11,"duplex":[10,12],"durat":11,"dynam":[2,5,8,11],"dysfunct":9,"e":[0,11],"e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790":11,"e702c42ba8":11,"e7536ee90bd4a440e130490b87a25124":11,"each":[0,2,5,6,7,8,10,11],"earli":8,"earlier":10,"eas":[5,10],"easi":[2,3,5,8,10,11,12],"easier":[2,5,6,11,12],"easiest":[2,3,5,10],"easili":[2,5,6,10,11,12],"eastern":10,"ecdh":[10,12],"echo":4,"echo_destin":0,"echo_request":0,"ecosystem":[2,5,8,10,11],"ed25519":[10,12],"edit":[2,11],"eeprom":11,"effect":[5,10,11],"effici":[0,2,5,6,7,8,10,11,12],"effort":3,"effortlessli":8,"eg":11,"ei":0,"either":[2,3,6,7,10,11],"elaps":5,"element":6,"elif":0,"elimin":6,"ellipt":[6,7,10,12],"els":[0,6,8,9,10,12],"email":8,"embed":3,"emerg":8,"emiss":8,"emploi":[3,10],"empow":12,"empti":0,"emptor":4,"emul":2,"enabl":[0,2,3,4,6,7,8,10,11,12],"enable_ratchet":7,"enable_remote_manag":11,"enable_transport":[5,10,11],"encapsul":[5,12],"encod":[0,7,8,11],"encount":[2,6],"encourag":2,"encrypt":[0,2,5,6,7,8,10,11,12],"encrypted_mdu":7,"end":[0,5,6,7,8,10,12],"endless":5,"endpoint":[0,6,7,8,10],"energi":2,"enforc":[5,7,10,11],"enforce_ratchet":7,"engin":[2,8,9],"enhanc":10,"enough":[2,3,5,8,10],"ensur":[0,2,5,6,7,8,10,11,12],"ensurepath":2,"enter":[0,11],"entir":[0,2,6,7,8,10,11],"entiti":[6,10,11],"entri":[0,2,10,11],"entrypoint":[4,5,11],"enumer":0,"envelop":7,"environ":[2,5,6,9,10],"environment":10,"environmentlogg":10,"eof":5,"ephemer":[6,7,10,12],"epub":4,"equal":[6,7,10],"equip":[5,6,10],"equival":5,"erron":9,"error":[0,2,5,9,11],"esc":0,"esc_mask":0,"escap":0,"esp32":3,"especi":[2,3,5],"essenti":[2,5,8,10,11],"establish":[0,2,5,6,7,8,11,12],"established_callback":7,"establishment_timeout_per_hop":7,"etc":11,"eth0":5,"eth1":5,"ethereum":9,"ethernet":[2,4,5,6,8,10,12],"even":[0,2,5,6,7,8,10,11,12],"event":5,"eventu":7,"ever":10,"everi":[0,2,5,6,7,10,11],"everydai":2,"everyon":[2,8,9,10],"everyth":[0,6,8,9,10],"evolv":[2,6,10],"exact":[3,5,10],"exactli":[7,10],"exampl":[2,3,4,6,7,10,11,12],"example_util":0,"exampleannouncehandl":0,"exampleconfig":[2,11],"exampleinterfac":0,"exce":[0,5,7],"except":[0,5,7],"excess":[5,11],"exchang":[6,7,10,12],"exclud":[7,10],"execstart":11,"execstartpr":11,"execut":[0,2,5,7,11],"exhaust":[3,8,10,11],"exist":[0,2,3,5,6,8,10,11,12],"exit":[0,5,7,11],"expand":[6,8,10,12],"expand_nam":7,"expect":[0,5,7,9,10,11],"expens":[3,5],"experi":[6,8,10],"experienc":0,"experiment":12,"expir":5,"expiri":[5,7],"explain":[3,7],"explan":[10,11],"explicit":7,"explicitli":[5,6,10,11],"explor":[0,8,10,12],"export":[2,11],"expos":[5,7,11],"exposur":5,"extend":[0,7],"extens":[5,8,12],"extern":[0,2,5,7,11,12],"extra":[2,5,11],"extract":11,"extrem":[2,8,10,11,12],"f":[0,2,11],"f4":5,"f53a1c4278e0726bb73fcc623d6ce763":11,"fabric":6,"face":[5,8],"facilit":[8,10],"fact":[2,5,12],"factor":[5,7,11],"fail":[0,2,5,7],"failed_callback":[0,7],"failur":[2,5,7],"fake":11,"fals":[0,5,6,7],"famili":2,"familiar":8,"far":[2,6,10],"fashion":9,"fast":[4,5,6,7,8,10],"faster":[2,5,10],"fastest":[5,10],"favor":2,"favorit":8,"fe80":2,"featur":[2,5,6,7,8,9,10,12],"feder":[8,10,11],"fedora":2,"feed":[2,7],"feedback":[0,4],"feel":8,"fernet":10,"fetch":[5,11],"few":[2,3,5,6,8,10,11,12],"fewer":7,"ff":11,"fi":9,"fiber":3,"fibr":12,"field":10,"file":[0,2,3,5,6,7,8,10,11,12],"file_resourc":0,"file_s":0,"filelist":0,"filelist_data":0,"filelist_receiv":0,"filelist_timeout_job":0,"filenam":0,"filesync":4,"filetransf":[4,7],"filter":[0,6,10,11],"final":[0,7,10],"find":[4,5,8,10,11],"find_spec":0,"fine":5,"firewal":[2,5,6],"firmwar":[2,3,10,11],"firmware_hash":11,"first":[0,2,5,6,7,10,11],"fit":0,"five":0,"fix":[4,10],"fixed_mtu":5,"flag":[0,2,7,10,11],"flash":11,"flasher":2,"fleet":10,"flexibl":[2,3,5,6,8,12],"fli":10,"flight":7,"float":[0,7],"flood":[5,11],"flow":[0,2,5,6,10],"flow_control":5,"flush":0,"focu":11,"focus":[8,10],"folder":0,"follow":[0,2,3,5,7,9,10,11,12],"forc":[0,11],"forcibli":[7,11],"foreground":2,"foremost":12,"forget":[6,11],"fork":8,"form":[2,5,6,7,10,11],"format":[0,4,8,11,12],"forth":0,"forward":[5,6,7,8,10,12],"forward_ip":5,"forward_port":5,"found":[0,2,5,7,10,11],"foundat":[6,9,10,12],"frame":[0,5],"framework":8,"free":[2,6,8,9,12],"freedom":10,"freedv":3,"freeli":10,"freq":11,"frequenc":[2,3,5,10,11],"frequent":[5,6],"friend":2,"friendli":8,"from":[0,2,3,5,6,7,8,9,10,11,12],"from_byt":7,"from_fil":7,"from_identity_hash":7,"fromhex":0,"front":10,"frontend":8,"fruit":0,"ftdi_ft230x_basic_uart_43891ckm":11,"full":[0,2,5,6,7,8,10,11,12],"full_hash":7,"full_nam":[7,11],"fulli":[0,2,3,5,8,10,11,12],"funcion":7,"function":[0,2,3,4,5,6,7,8,9,11,12],"fundament":[3,6,10,11],"further":[2,4,5],"futur":[4,6,7,8,11],"fw":11,"g":[0,10,11],"ga":0,"gain":[3,7,10],"galact":10,"gap":2,"gatekeep":10,"gatewai":[0,2,5,6,10,11],"gbp":11,"gener":[0,2,3,5,6,7,10,11,12],"generalis":12,"genuin":11,"geograph":[2,5],"get":[0,3,4,5,6,7,8,11],"get_ag":7,"get_channel":[0,7],"get_config_obj":0,"get_data_s":7,"get_establishment_r":7,"get_expected_r":7,"get_external_ip":5,"get_hash":7,"get_inst":7,"get_mdu":7,"get_mod":7,"get_mtu":7,"get_packet_rssi":0,"get_packet_snr":0,"get_part":7,"get_private_kei":7,"get_progress":[0,7],"get_public_kei":7,"get_q":7,"get_random_hash":[0,7],"get_remote_ident":[0,7],"get_request_id":7,"get_respons":7,"get_response_tim":7,"get_rssi":7,"get_rtt":[0,7],"get_seg":7,"get_snr":7,"get_statu":7,"get_transfer_s":7,"geti2p":5,"ghz":10,"gi":0,"gigabit":6,"gigabyt":12,"github":[0,2],"give":[2,5,10,11],"given":[5,6,7,10,11],"global":[0,4,5,6,7,10,11,12],"glue":3,"go":[0,5,6,10],"goal":[2,4,5,6,8],"good":[2,3,6,10,11],"got":0,"got_respons":0,"govern":10,"gpio":8,"grace":7,"gracefulli":[5,6],"grant":11,"grape":0,"graphic":8,"gratefulli":9,"great":[2,10],"greater":[7,10,11,12],"greatli":[2,5],"grid":8,"group":[5,7,8,10],"group_id":5,"groupinstal":2,"grow":2,"growth":2,"guarante":[6,9,10],"guess":5,"gui":8,"guid":[2,3,8,10],"guidelin":2,"guilt":8,"gw":5,"h":11,"ha":[0,3,5,6,7,8,9,10,12],"hack":12,"had":10,"half":[10,12],"hand":0,"handheld":10,"handl":[0,2,3,5,6,7,8,10,11,12],"handler":[0,7,11],"happen":[0,2,7,10],"hard":[2,3],"hardlin":6,"hardwar":[0,2,4,5,7,8,10,11,12],"has_path":[0,7],"hasattr":0,"hash":[0,6,7,10,11],"hash1":10,"hash2":10,"hash_from_name_and_ident":7,"hashlib":10,"hashmap":0,"have":[0,2,3,5,6,7,8,9,10,11],"hazard":7,"hdlc":0,"header":[0,5,7,10],"header_1":10,"header_2":10,"health":4,"hear":10,"heard":[7,8,10,11],"height":5,"held":[5,11],"helium":0,"hellman":[6,10],"help":[0,2,6,9,10,11],"helper":0,"here":[0,2,5,10,11],"heterogen":[2,4,12],"hex":[0,11],"hexadecim":[0,10,11],"hexbyt":11,"hf":8,"hidden":11,"hide":2,"hierarch":12,"high":[3,5,6,10,11,12],"higher":[5,6,12],"highest":7,"highli":[5,9,10],"hint":0,"histori":8,"hit":0,"hkdf":10,"hmac":[10,12],"hoc":12,"hold":[5,7,10],"holder":6,"home":[2,6,8,11],"homebrew":5,"hop":[5,6,7,10,11,12],"hopefulli":6,"hops_to":7,"host":[0,4,5,6,8,10,11],"hostnam":5,"hour":[0,5,11],"hous":2,"how":[0,2,3,5,6,8,10,11,12],"howev":[2,5,6,10],"http":[0,8,9],"hub":[5,8,11],"human":[0,5,6,7,9,10],"hundr":[6,8],"hungri":3,"hw_mtu":0,"hwrev":11,"hz":[5,11],"i":[0,2,3,4,5,6,7,8,9,10,11],"i2p":[2,4,6,8,12],"i2p_tunnel":5,"i2pd":[2,5],"i2pinterfac":[2,5],"ia":11,"ic":3,"ic_burst_freq":5,"ic_burst_freq_new":5,"ic_burst_hold":5,"ic_burst_penalti":5,"ic_held_release_interv":5,"ic_max_held_announc":5,"ic_new_tim":5,"icmp":8,"id":[5,7,10,11],"id_callsign":5,"id_interv":5,"idea":[2,10,11],"ideal":[8,12],"ident":[0,2,4,5,6,7,8,11,12],"identif":[4,5,12],"identifi":[0,5,6,7,10,11],"identifyexampl":0,"identity_data":11,"ie":11,"if00":11,"ifac":[0,2,5,6,10,11],"ifac_s":5,"ifconf":0,"ifconfig":11,"ignor":[5,6,7,9,10,11],"ignored_devic":5,"illustr":[0,5,10],"imagin":6,"immedi":[5,11],"impact":[5,6,7,10],"imperson":6,"implement":[0,5,6,7,8,9,10,12],"implic":[4,5,6],"implicit":[6,7,10],"implicitli":11,"import":[0,2,3,5,6,7,9,10,11],"importantli":2,"importlib":0,"imposs":10,"impract":11,"improv":[2,4,5,8,9],"in_fram":0,"in_wait":0,"inactive_for":7,"inadvert":11,"inbound":[0,5,7],"inbox":6,"includ":[0,3,4,5,6,7,8,10,12],"inclus":6,"incom":[0,5,7,11],"incompat":[7,10],"incomplet":6,"increas":[5,7,11],"incur":5,"indefinit":11,"independ":[7,10],"index":[0,2,4],"indic":[0,7],"indirectli":10,"individu":[2,5,7,9,10,11,12],"inevit":[2,10],"infer":10,"influx":[5,8],"influxdb":8,"info":[7,10,11],"inform":[0,2,4,5,6,7,8,9,10,11],"infrastructur":[3,4,5,6,8,10,11],"ingo":7,"ingress":[0,5],"ingress_control":5,"inher":6,"init":2,"initi":[0,5,6,7,10,12],"initialis":[0,7,11],"input":[0,11],"insert":10,"insid":10,"inspect":[2,5,6,10,11],"instal":[0,4,5,10,11,12],"instanc":[0,4,5,7,8,10,11],"instance_control_port":11,"instance_nam":11,"instanti":7,"instantli":11,"instead":[0,2,5,7,10,11],"instruct":2,"int":[0,7],"integ":[0,7],"integr":[2,8,10,11],"intend":[2,5,6,10,11],"intens":11,"intent":6,"intention":[8,10],"inter":[2,7,10],"inter_byte_timeout":0,"interact":[0,2,4,6,7,10,11],"intercept":6,"interchang":5,"interconnect":[2,5,6,10],"interest":[8,10],"interfac":[3,4,6,7],"interface_class":0,"interface_discovery_sourc":[7,11],"interface_en":11,"interfer":[6,11],"intermedi":6,"intermediari":[5,7,10],"intermitt":[5,6],"intern":[0,5,7,10],"internal_1":5,"internet":[4,5,6,8,10,11,12],"internetwork":2,"interoper":[3,6,8,10,12],"interrupt":5,"interv":[5,7,11],"intervent":11,"intiat":0,"introduc":10,"introduct":4,"introductori":4,"intuit":[6,12],"invalid":[0,5,7],"invers":10,"invest":6,"invis":[2,5],"invit":5,"involv":[6,9],"io":3,"iodin":8,"ioerror":0,"iot":3,"ip":[2,3,5,6,10,11,12],"ipv4":5,"ipv6":[2,5,11],"irc":8,"irrelev":9,"is_compress":7,"is_connected_to_shared_inst":0,"is_open":0,"is_path_respons":7,"is_ready_to_send":[0,7],"isdir":0,"isfil":0,"isinst":0,"ism":[3,10],"isol":[2,5,11],"isp":[5,6],"issu":[4,5,6],"its":[3,5,6,7,10,11],"itself":[4,6,8,10,11],"iv":[10,12],"j":[4,11],"jail":11,"javascript":8,"job":0,"join":[0,2,6,8,10],"journei":6,"json":11,"just":[0,2,3,5,6,8,10,12],"k":[0,11],"kb":11,"kbp":11,"keep":[0,2,6,7,10,11,12],"keepal":[7,10],"keepalive_timeout_factor":7,"kei":[0,4,5,6,7,11,12],"kept":[5,6,7,10],"kernel":[5,11,12],"keyboardinterrupt":0,"keyerror":7,"keypad":8,"keypair":[6,10],"keyset":[10,11,12],"keysiz":7,"keystor":6,"khz":5,"ki":0,"kill":[7,10],"kind":[3,5,6,8,10],"kiss":[3,4,8,11,12],"kiss_fram":5,"kissinterfac":[5,11],"know":[0,2,3,5,6,7,10],"knowledg":[6,10],"known":[0,5,7,10,11],"ko":9,"krypton":0,"l":[5,11],"lack":10,"laid":10,"lan":5,"languag":8,"laptop":6,"larg":[0,3,5,6,7,10,11,12],"larger":[6,10,11],"laser":5,"last":[0,5,7,11],"last_read_m":0,"last_unit":0,"latenc":[2,6,10,12],"later":[0,2,5,8,11],"latest":[0,2,5,7,11],"latest_buff":0,"latest_client_link":0,"latitud":5,"laucnh":2,"launch":[8,11],"layer":[3,5,6,7,8,10,11,12],"lcd":8,"lead":[2,10],"leak":2,"learn":[0,2,6,9,10],"least":[2,3,5,6,10,11,12],"leav":[6,8,10],"ledger":10,"left":[5,7,10,11],"legaci":6,"legal":5,"legisl":5,"legitim":[2,6,11],"len":0,"length":[0,5,7,10],"less":[0,2,3,5,7,10,12],"let":[0,2,5,6,8,10,11],"level":[3,5,6,10,11],"liber":3,"liberapai":9,"libffi":2,"librari":[2,8],"licens":10,"lift":11,"light":11,"lightweight":12,"like":[0,2,3,5,6,7,8,10,11,12],"limit":[0,2,3,4,6,8,10],"line":[0,2,4,5,8,10,11,12],"linger":11,"link":[2,3,4,5,6,7,8,11,12],"link_clos":0,"link_establish":0,"link_id":[0,7],"link_mtu_discoveri":7,"linkexampl":0,"linux":[2,3,5,8,10],"list":[0,2,3,4,5,7,8,10,12],"list_deliv":0,"list_fil":0,"list_filt":11,"list_packet":0,"list_receipt":0,"list_timeout":0,"listdir":0,"listen":[0,2,4,8,10,11],"listen_ip":5,"listen_on":[2,5],"listen_port":5,"littl":[3,8,10],"live":[2,7,8],"lki":10,"lkr":10,"ll":[0,12],"llm":8,"ln":11,"load":[0,2,3,5,7,11,12],"load_private_kei":7,"load_public_kei":7,"local":[0,2,4,5,6,7,8,10,12],"locat":[2,5,6,10,11],"log":[0,2,5,11],"log_crit":0,"log_error":0,"log_info":0,"log_verbos":0,"logdest":7,"logic":10,"loginctl":11,"loglevel":[0,7,11],"long":[0,2,3,5,6,7,10,11],"longer":[0,2,10,11],"longest":5,"longitud":5,"look":[0,2,5,6,8,10,11],"loop":0,"lora":[2,3,4,6,8,10,12],"lorawan":[3,10],"loss":[5,6,10],"lot":[6,10],"low":[2,3,5,6,8,10,12],"lower":[0,2,5,11],"ltu":3,"lunar":4,"lxmf":[4,5,6,7,11],"lxmfy":4,"lxst":4,"m":[0,2,10,11],"mac":[5,10],"machin":[2,10,11],"machineri":8,"maco":[4,8],"made":[2,5,7,10],"mai":[2,5,6,7,8,10,11],"mailbox":8,"main":0,"maintain":[2,6,10,11],"mainten":[2,6,10],"make":[0,2,3,5,6,8,9,10,11,12],"malici":[2,6,10,11],"malinform":9,"manag":[2,4,6,7,8,10,12],"mani":[0,2,3,5,6,7,8,10,11,12],"manipul":[10,12],"manjaro":2,"manner":[6,8],"manual":[0,2,5,6,7,10,11],"manufactur":[3,5],"map":[5,8,10,11],"mark":[2,7,10],"markqvist":[0,9],"markup":8,"master":[0,7],"match":[0,5,10,11],"materi":8,"matter":[2,5,6],"matur":11,"max":11,"maximum":[0,5,7,10,11],"mbp":11,"mdu":[0,7],"me":5,"mean":[2,3,5,6,7,10,11],"meaning":2,"meantim":7,"measur":[6,10],"mechan":[2,4,5,6,11,12],"medium":[0,3,5,6,7,8,10,12],"member":[2,10],"memori":[2,6,10],"mention":[5,10],"menu":0,"menu_mod":0,"merg":11,"mesh":[2,5,6,10,11,12],"meshchat":4,"meshchatx":4,"messag":[0,2,6,7,8,10,11],"message_class":7,"messagebas":[0,4,7],"messagecallbacktyp":7,"messeng":[6,10],"met":2,"metadata":[2,5,10,11],"metavar":0,"meter":5,"meth":0,"method":[0,2,5,7,10],"methodologi":[10,11],"metric":8,"mevpekyafshak5wr":5,"mhz":[5,10],"mi":0,"microcontrol":10,"micron":4,"microwav":6,"might":[2,5,6,10,11],"mikrotik":3,"millimet":3,"millisecond":[0,6,11],"mind":[6,12],"minim":[3,4,5,10],"minimalsampl":0,"minimum":[0,2,5,7,10,11],"minimum_bitr":7,"minut":[0,2,5,10],"mirror":[6,11],"misconfigur":2,"mislead":2,"miss":[0,2],"mistak":2,"misunderstand":9,"mitig":6,"mix":[4,5,6,11],"mixtur":12,"mobil":[5,6,10],"mode":[0,2,3,4,6,7,8,10,11,12],"model":[6,11],"modem":[4,5,6,7,8,10,12],"modem73":8,"moder":5,"modern":[2,3,8],"modifi":[5,6,10,11],"modul":[0,2,3,4,5,6,10,11,12],"modular":8,"moment":10,"momentarili":5,"monero":9,"monitor":[2,5,8,10,11],"moon":0,"more":[0,2,3,5,6,7,8,9,10,11,12],"most":[2,3,5,6,7,8,10,11],"mostli":[5,6,10],"motiv":4,"move":[5,6,10,11],"msgtype":[0,7],"mtu":[0,5,7,10,12],"much":[2,5,6,10,11,12],"multi":[4,6,8,10,11,12],"multicast":5,"multicast_address_typ":5,"multilater":10,"multipl":[0,5,6,8,10,11],"multiplex":0,"multipoint":10,"multitud":2,"must":[0,2,5,6,7,10,11],"mw":5,"my":[5,10],"my_fil":11,"my_ident":11,"my_network":[10,11],"my_network_ident":5,"mycal":5,"myriad":10,"n":[0,10,11],"name":[0,2,4,5,6,7],"namespac":0,"narg":0,"nat":[2,5],"nativ":[0,6,8],"natur":5,"nearbi":[5,6],"nearest":5,"nears":10,"neat":6,"neccessari":5,"necesarri":5,"necessari":[3,5,6,7,10],"necessarili":10,"need":[0,2,3,4,5,6,7,8,9,10,11,12],"neg":2,"neglig":10,"neither":[7,10],"neon":0,"neopixel":11,"net":5,"netcat":5,"network":[0,3,5,7,11,12],"network_ident":[5,10,11],"network_nam":[2,5],"neutral":6,"never":[5,6,7,10],"new":[0,2,4,6,7,10,11],"new_id":11,"new_ident":11,"newer":[7,10],"newest":10,"newli":[5,7,10],"newlin":5,"next":[2,5,7,10],"next_hop":7,"next_hop_interfac":7,"nicknam":10,"no1cll":5,"no_data_for":7,"no_inbound_for":7,"no_outbound_for":7,"noauth":11,"nobl":0,"noble_ga":0,"noble_gas":0,"nocheck":11,"node":[2,4,5,11,12],"noid":11,"nois":[7,9],"nomad":4,"nomadnet":8,"nomadnetwork":8,"non":[2,5,7,8,10],"none":[0,2,5,7,10,11],"nor":2,"normal":[0,2,5,7,10,11],"notabl":8,"notat":[10,11],"note":[0,3,4,5,7,10,11],"noth":[3,6,12],"notic":[5,10,11],"notif":[0,7],"now":[0,2,10,11],"np":11,"nrf52":3,"nt":0,"num":0,"number":[0,2,5,6,7,8,10,11],"o":[0,2,5,10,11,12],"object":[0,7],"obscur":2,"observ":6,"obtain":[2,3,7,10],"obvious":10,"occur":[0,5,11,12],"ocur":7,"odd":0,"ofdm":8,"off":[2,5,6,8,10,11,12],"offer":[2,4,5,6,7,8,10,11],"offic":6,"offlin":[0,2,6,8],"often":[2,5,6,10,11],"oganesson":0,"old":[0,2,3,9,10],"older":11,"omit":7,"on_interfac":7,"onc":[0,2,3,5,7,10,11,12],"one":[0,2,3,5,6,7,8,10,11,12],"ones":[2,5,6,11],"oneself":10,"ongo":8,"onli":[0,2,3,5,6,7,10,11,12],"onlin":[0,11],"onto":[2,10],"opaqu":6,"open":[0,2,3,5,6,7,8,9,10,11,12],"open_port":0,"openmodem":[5,12],"openssl":[2,10],"openwrt":4,"oper":[2,3,5,6,7,10,11,12],"opinion":9,"opkg":2,"opportun":2,"opportunist":6,"opposit":[0,5],"opt":10,"optic":[3,12],"optim":[2,6],"option":[0,2,3,4,6,7,8,10,11],"ord":0,"order":[0,7,11],"organ":[2,6,10,11],"organis":[5,9],"orient":10,"origin":[0,6,8,10],"os":2,"other":[0,2,3,5,6,7,8,10,11],"otherwis":[0,7],"our":[0,5,10],"ourselv":6,"out":[0,3,5,7,8,10,11],"outbound":[7,10],"outgo":[0,5,7,10,11],"outlin":[2,3,10],"output":[5,11],"outsid":[7,12],"over":[0,3,4,5,6,7,8,9,10,11,12],"overal":[10,11],"overcom":10,"overhead":[2,3,5,10],"overlai":2,"overli":9,"overrid":0,"oversight":10,"overview":[4,5],"overwhelm":[5,6,7],"overwrit":11,"own":[0,2,6,7,10,11,12],"owner":0,"p":[0,11],"pack":[0,7],"packag":[0,2,5,8,10],"packb":0,"packed_s":0,"packet":[0,2,4,5,6,7,8,11,12],"packet_callback":0,"packet_deliv":0,"packet_hash":0,"packet_receipt":[0,7],"packet_timed_out":0,"packetreceipt":[0,4,7],"pad":[10,12],"page":[4,10,11],"pair":[5,7,10,11],"pamac":2,"panic":[0,11],"panic_on_interface_error":[0,11],"paper":8,"par":[0,2],"parallel":2,"param":0,"paramet":[0,3,4,7,10,11],"pariti":[0,5,11],"parity_even":0,"parity_non":0,"parity_odd":0,"pars":0,"parse_arg":0,"parser":[0,4],"part":[0,2,5,6,7,8,10,11],"particip":[2,4,5,6,10,11],"particular":[0,3,5,10,11],"particularli":[5,11],"pass":[0,3,5,6,7,10,11],"passphras":[2,5,6,10],"passport":10,"past":11,"path":[0,2,3,5,6,7,10,11],"path_respons":7,"pathfinder_m":7,"pattern":[3,6,10],"payload":[0,5,7,10,11],"pdf":4,"peach":0,"peer":[0,2,5,7,8,10,11],"penalti":5,"pend":[0,10],"peopl":[2,8,10],"per":[5,6,7,8,10,11,12],"percent":[0,5],"percentag":7,"perfectli":2,"perform":[0,2,5,6,7,8,10,11],"perhap":2,"period":[0,5,7,10,11],"peripher":8,"perman":[2,5,11],"permiss":5,"permissionless":[10,11],"persecut":10,"persist":[5,11],"person":[4,5,6,9,10],"perspect":[5,6,7,10,12],"pet":0,"philosophi":[9,10],"phone":[2,4,6],"phonebook":8,"phy":11,"physic":[0,2,3,5,6,7,8,10,11,12],"pi":[0,4,6,10,11,12],"pick":10,"piec":10,"ping":11,"pip":[0,2,3,5,11],"pip3":2,"pipe":[4,8,12],"pipeinterfac":[3,5,8],"pipx":2,"pitfal":10,"pkcs7":[10,12],"pkg":2,"place":[0,2,5,6,10,11],"plaform":3,"plain":[0,3,5,7,10],"plain_mdu":7,"plaintext":[0,7],"plan":[6,10],"planetari":12,"platform":[0,3,4,8,10,11],"platoform":8,"pleas":[0,2,5,7,11],"plenti":[6,10],"plug":11,"plugin":8,"pmr":10,"point":[2,3,5,6,8,9,10,11],"pointer":2,"polici":11,"pomelo":0,"popul":7,"popular":12,"port":[0,2,3,4,5,6,10,12],"port0":11,"portabl":[5,6,10],"pose":[2,10],"posit":[0,11],"posix":2,"possess":[5,10],"possibl":[2,3,5,6,7,8,10,11,12],"possibli":[2,10],"post":0,"postfix":11,"potenti":[0,2,5,9,10,11,12],"power":[2,3,5,6,8,10,11,12],"powershel":2,"ppp":0,"practic":[6,10,12],"pre":[2,6,7,10],"preambl":[5,11],"preced":0,"preciou":6,"precompil":2,"predict":10,"prefer":[2,9,10],"prefer_ipv6":5,"premis":6,"prepar":[0,10],"prerequisit":7,"presenc":[5,7],"present":[5,6,8,10,11],"preserv":[2,7],"preshar":10,"press":0,"pretend":[8,10],"prettyhexrep":0,"prevent":[5,6,11],"previou":0,"previous":[5,7,10],"primari":10,"primarili":[5,6,8],"primarlii":2,"primit":[2,4],"principl":[6,10,12],"print":[0,5,11],"print_filelist":0,"print_help":0,"print_menu":0,"priorit":[6,10],"prioriti":10,"prioritis":[4,5,6,7],"privaci":[2,5,8,12],"privat":[2,5,6,7,8,9,10,11,12],"private_ret":2,"privileg":11,"probabl":[0,2,6,10,11,12],"probe":11,"problem":[2,10,11],"proc":11,"procedur":[2,7,10],"process":[0,2,3,5,6,7,10,11],"process_incom":0,"process_outgo":0,"product":11,"profound":6,"program":[0,3,4,5,7,10,12],"program_setup":0,"programm":10,"programmat":10,"progress":[0,7,11,12],"progress_callback":7,"project":[8,9],"promis":2,"prompt":[0,2],"proof":[0,5,6,7,10,11],"proof_packet":0,"proof_requested_callback":7,"proof_strategi":7,"propag":[4,5,6,7,8,11],"proper":2,"properli":2,"properti":[0,6,7],"proport":10,"protect":[2,11],"protocol":[2,3,4,5,6,12],"prove":[0,6,10],"prove_al":[0,7],"prove_app":7,"prove_non":7,"proven":[7,10],"provid":[0,2,3,4,5,6,7,8,10,11,12],"provis":[3,11],"prv_byte":7,"pseudo":11,"pub_byt":7,"public":[0,4,5,6,7,9,11],"public_inform":0,"publicli":[2,5,10,11],"publish":[2,4,5,7,10],"publish_blackhol":11,"publish_blackhole_en":7,"publish_ifac":5,"purchas":[2,10,12],"pure":[4,10],"purg":7,"purpos":[2,3,5,6,7,8,10,11],"push":8,"put":[0,3,5,11],"py":[0,10,11],"py3":2,"pyca":[2,10],"pyseri":[0,2],"python":[0,4,5,7,10,11,12],"python3":[0,2,3],"q":[0,11],"qr":[6,8],"qualiti":[7,11],"queri":[0,2,7,11],"question":[2,3,5],"queu":[7,11],"queue":[5,10],"quickli":[8,9,10,12],"quiet":[5,11],"quinc":0,"quirk":2,"quit":[0,2],"r":[0,5,10,11],"radio":[4,5,6,7,8,10,11,12],"radon":0,"rais":[0,7],"rak":3,"ram":[2,5],"randint":0,"random":[0,7,9,10],"random_text_gener":0,"randomis":10,"randomli":[0,10],"rang":[0,2,3,5,6,10,11,12],"rapidli":5,"rare":[2,5],"raspberri":[4,6,10,11,12],"rasperri":2,"ratchet":[7,10],"ratchet_count":7,"ratchet_expiri":7,"ratchet_id_receiv":7,"ratchet_interv":7,"ratchets":7,"ratchets_path":7,"rate":[0,4,7,8,11],"rather":[2,7,8],"ratio":7,"raw":[0,3,7],"rawchannelread":[4,7],"rawchannelwrit":[4,7],"rawiobas":7,"rb":0,"rbrowser":4,"re":[0,5,6,7,10],"reach":[2,4,5,6,7,11],"reachabl":[0,2,5,6,7,8,10,11],"reachable_on":5,"read":[0,2,5,6,7,10,11],"read_loop":0,"readabl":[0,5,7,10,11],"reader":[0,7],"readi":[0,2,3,5,7,12],"readili":12,"ready_byt":[0,7],"ready_callback":7,"real":[2,3,5,6,8,12],"realiti":[2,9],"realli":[5,7],"reappear":5,"reason":[2,5,10,11],"reassembl":10,"rebroadcast":6,"recal":[0,7,11],"recall_app_data":7,"recap":10,"receipt":[0,6,7,10],"receiv":[0,2,5,6,7,9,10,11],"receive_path_respons":7,"receive_stream_id":7,"received_announc":[0,7],"recent":[7,10],"recept":7,"reception_rssi":0,"reception_snr":0,"reception_stat":0,"recip":2,"recipi":10,"recogn":10,"recommend":[0,2,5,10],"recondit":11,"reconnect":[0,6],"reconnect_port":0,"reconstruct":10,"record":[2,10],"recoveri":5,"recreat":10,"recurs":[7,10],"reduc":[5,11],"redund":[2,6],"refer":[0,2,4,5,8,11],"refin":9,"refresh":11,"refus":6,"regain":2,"regard":10,"region":5,"regist":[0,7,11],"register_announce_handl":[0,7],"register_message_typ":[0,7],"register_request_handl":[0,7],"regul":5,"regular":11,"rel":[3,5,6,10],"relai":[2,4],"relat":2,"relationship":[6,10,11],"releas":[2,5,7,10],"relev":[0,2,3,5,7,10,11],"reli":[2,5,6,9,10,11],"reliabl":[2,3,5,6,7,10,12],"relianc":2,"relief":6,"reload":11,"rem":0,"remain":[5,6,7,8,10],"rememb":[6,7,10],"remot":[0,4,7,10],"remote_ident":[0,7],"remote_identifi":0,"remote_management_allow":11,"remote_management_en":7,"remote_p":0,"remotesensor":10,"remov":[7,11],"remove_message_handl":7,"remove_ready_callback":7,"render":8,"replac":[0,2,6,7,8,10,11],"repli":[0,11],"replic":[3,10],"reply_data":0,"reply_messag":0,"reply_text":0,"report":[5,7,9,11],"repositori":[2,10],"repres":[6,10],"represent":[0,7],"repurpos":2,"reput":[10,11],"request":[4,5,6,7,10,11,12],"request_destin":0,"request_fail":0,"request_id":[0,7],"request_packet":0,"request_path":[0,7],"request_receipt":[0,7],"request_receiv":0,"requested_at":[0,7],"requestexampl":0,"requestor":5,"requestreceipt":[4,7],"requir":[0,2,5,6,7,8,10,11,12],"require_shared_inst":7,"required_discovery_valu":[7,11],"resend":7,"reserv":[0,6,7],"resid":5,"resili":[2,6,8,11,12],"resist":6,"resolut":[2,5,10],"resolv":[4,5,6,10,11],"resourc":[0,2,4,5,6,7,9,11],"resource_callback":7,"resource_sending_conclud":0,"resource_strategi":7,"respawn":5,"respawn_delai":5,"respawn_interv":5,"respect":[5,6,12],"respond":[0,6,7,11],"respond_to_prob":11,"respons":[4,5,7,10,12],"response_callback":[0,7],"response_gener":[0,7],"rest":[6,12],"restart":[5,11],"restartsec":11,"restor":[2,5],"restrict":[5,6,11],"result":[0,2,5,10,11],"ret":[4,10],"retain":[5,7],"retained_ratchet":7,"retibb":4,"reticulum":[0,5,6,7],"retipedia":4,"retransmiss":[6,10],"retransmit":[5,10],"retri":[0,7,10],"retriev":[7,11],"return":[0,5,7,11],"reveal":[2,7,10,12],"revers":11,"review":10,"revis":11,"rfe":11,"rich":8,"ridicul":10,"right":[2,5],"rington":8,"risc":4,"risk":10,"rmap":2,"rn":[0,2,3,4,7,10,11],"rncp":4,"rnid":[4,10],"rnmon":4,"rnode":[2,4,10,11,12],"rnodeconf":[3,4],"rnodef3b9":5,"rnodeinterfac":[2,3,5,11],"rnodemultiinterfac":5,"rnpath":[2,4,5],"rnphone":8,"rnprobe":[2,4],"rns_bin_dir":11,"rnsd":[2,4],"rnsh":[8,11],"rnspure":[2,10],"rnstatu":[2,4,5,10],"rnstransport":[5,11],"rnx":4,"roadmap":9,"roam":[5,6],"robot":10,"robust":[2,5],"role":6,"roll":5,"rom":11,"room":8,"root":10,"rotat":[7,10,11],"round":[0,7,11],"rout":[2,3,5,6,7,8,10,11,12],"router":[2,5,6,11],"rpc":11,"rpc_kei":11,"rprogress":0,"rrc":4,"rrcd":8,"rssi":[0,7,11],"rtsct":0,"rtt":[0,7,10],"rttstring":0,"rule":[2,4,5,6,11],"run":[0,2,3,5,6,7,8,10,11,12],"runtim":[0,10],"rust":2,"rx":[5,11],"rxb":0,"sa":8,"safe":10,"said":10,"same":[0,2,3,5,6,7,8,10,11],"satellit":6,"satisfi":10,"save":[7,10,11],"save_error":0,"saved_filenam":0,"saw":8,"scalabl":[11,12],"scale":[10,12],"scan":[2,5],"scenario":[2,5,10],"schedul":7,"scheme":[3,5],"scope":5,"scratch":3,"screen":0,"script":[2,3,5],"scrutini":10,"seamless":[5,10],"seamlessli":[5,6,8],"search":[4,7,8],"second":[0,5,6,7,8,10,11,12],"secreci":[5,7,8,10,12],"secret":[6,10],"section":[2,3,5,6,8,10,11],"secur":[2,4,6,8,10,11,12],"see":[0,2,5,6,7,10,11,12],"seek":10,"seen":[5,10],"segment":[0,2,5,6,7,10,11,12],"select":[0,2,5],"self":[0,2,10,12],"semtech":3,"send":[0,5,6,7,10,11],"send_stream_id":7,"sender":[0,2,6,10,11],"sens":6,"sensibl":[2,3,5],"sensor":[6,10],"sent":[0,2,6,7,10,11],"sentiment":10,"separ":[0,5,6,8,10,11],"sequenc":[0,7,10,12],"sequenti":12,"seri":3,"serial":[0,2,4,6,10,12],"serialinterfac":[3,5],"serv":[0,3,5,6,8,9,10,11],"serve_path":0,"server":[0,2,3,4,6,7,8,10,11],"server_buffer_readi":0,"server_callback":0,"server_client_connect":0,"server_destin":0,"server_fil":0,"server_ident":0,"server_link":0,"server_loop":0,"server_message_receiv":0,"server_packet_receiv":0,"servic":[2,4,5,6,8,10],"session":[2,8,10],"set":[0,2,3,5,6,7,8,10,11,12],"set_default_app_data":7,"set_delivery_callback":[0,7],"set_link_closed_callback":[0,7],"set_link_established_callback":[0,7],"set_packet_callback":[0,7],"set_proof_requested_callback":7,"set_proof_strategi":[0,7],"set_ratchet_interv":7,"set_remote_identified_callback":[0,7],"set_resource_callback":7,"set_resource_concluded_callback":[0,7],"set_resource_started_callback":[0,7],"set_resource_strategi":[0,7],"set_retained_ratchet":7,"set_timeout":[0,7],"set_timeout_callback":[0,7],"setup":[0,2,4,5,11],"sever":[2,6,7,11],"sf":11,"sh":5,"sha":[6,7,10],"sha256":[10,12],"shall":10,"shape":6,"share":[0,2,6,7,8,10,11],"share_inst":11,"shared_instance_port":11,"shared_instance_typ":[7,11],"shelf":[10,12],"shell":[2,4,11],"ship":10,"shop":0,"short":[3,5,10,11],"shorter":5,"shorthand":[5,11],"shot":2,"should":[0,2,5,6,7,10,11,12],"should_ingress_limit":0,"should_quit":0,"should_use_implicit_proof":7,"show":[2,11],"shown":[0,9],"side":[5,12],"sideband":[2,4,11],"sign":[5,6,7,10,11],"signal":[0,5,7,10],"signatur":[6,7,10,11,12],"signifi":10,"signific":6,"significantli":[5,7],"silent":11,"similar":[0,2,3,5,7,8,11,12],"simpl":[0,2,3,7,8,10,11,12],"simpler":[5,6,12],"simplest":[5,10],"simpli":[0,2,3,5,6,8,9,10,11],"simplic":10,"simplifi":0,"simplyequip":3,"simultan":[2,10],"sinc":[0,2,5,6,7,10],"singl":[0,2,5,6,7,10,11,12],"singular":10,"sit":2,"site":[5,6],"situat":[2,3,5,6,10,11],"size":[0,2,5,7,10,11],"size_str":0,"skip":0,"sleep":[0,2,11],"slice":0,"slightli":[0,2],"slottim":[5,11],"slow":[0,5,6,8,10],"slower":[5,7,10],"small":[0,2,5,6,7,10,12],"smaller":7,"smallest":2,"snippet":11,"snr":[0,7,11],"so":[0,2,3,5,6,7,8,9,10,11,12],"social":2,"socket":[5,11,12],"softwar":[2,3,5,8,10],"sole":5,"solid":9,"solut":[10,11],"solv":10,"some":[0,2,3,5,6,7,8,10,11],"someon":[2,5,11],"someth":[6,10],"somethign":0,"sometim":[3,5,8],"somewhat":2,"soon":7,"sort":[5,10,11],"soundmodem":5,"sourc":[0,2,3,4,6,7,10,12],"sovereign":[2,10],"sovereignti":12,"space":[0,2,3,6,10,12],"spam":[2,5,10,11],"spammi":11,"span":[5,6,10],"spawn":5,"spe":5,"speak":9,"spec":10,"special":[8,10,11],"specif":[0,3,4,5,6,7,11],"specifi":[0,2,3,5,6,7,10,11],"spectrum":[5,10],"speed":[0,5,7,10,11],"spirit":8,"split":0,"sponsor":9,"spread":[5,11],"spreadingfactor":5,"squelch":5,"ssh":8,"ssid":5,"stabil":6,"stabl":[2,5,6,10,12],"stack":[0,2,6,7,8,10,11,12],"stage":10,"stai":[0,10,11],"stale":[6,7],"stale_grac":7,"stale_tim":7,"stamp":[5,7,11],"standalon":[4,8],"standard":[3,5,8,10,11],"start":[0,3,4,5,6,7,8,10,11],"startup":[0,2,11],"stat":[7,11],"state":[0,6],"static":[2,5,7],"staticmethod":0,"station":5,"stationari":[6,11],"statist":[0,5,7,9],"statu":[0,2,4,5,7,8,10,11],"stderr":11,"stdin":[5,11],"stdio":12,"stdout":[0,5,11],"stem":9,"step":[0,2,3],"still":[0,2,5,6,8,10,11],"stock":0,"stop":[7,12],"stopbit":[0,5,11],"storag":[2,5,8,10,11],"store":[0,7,8,10,11],"store_tru":0,"str":0,"straightforward":5,"strateg":6,"strategi":[4,5,7],"stream":[0,7,8,10],"stream_id":[0,7],"strength":[7,12],"strictli":[5,10],"string":[0,7],"stringmessag":0,"strong":[2,10],"stronger":2,"strongli":2,"struct":0,"structur":[0,6,7,10,12],"style":5,"sub":[0,5],"subclass":[0,7],"subinterfac":5,"subject":[2,11,12],"subnet":[2,6],"subscrib":[2,11],"subsequ":[0,10],"subset":5,"subsid":5,"succe":2,"succeed":[0,7],"succesfulli":6,"success":[2,5],"successful":7,"successfulli":[0,7,10],"sudo":[2,11],"suffer":6,"suffic":10,"suffici":[2,5,10,11],"suffix":0,"suit":[2,3,8,10,11],"suitabl":[0,2,5,6,10,11,12],"super":0,"supersed":5,"suppli":[0,5,7,10,12],"supplier":2,"support":[0,2,4,5,6,7,8,10,11,12],"sure":[0,2,3,11],"surveil":10,"surviv":[2,10,11],"switch":[3,5,6,10,11],"sx1262":3,"sx1268":3,"sx1276":3,"sx1278":3,"sx1280":3,"sy":0,"symlink":11,"symmetr":[7,10],"synchron":8,"system":[0,2,3,4,5,6,7,8,9,10,12],"systemctl":11,"systemd":11,"t":[0,2,5,6,7,10,11],"tabl":[2,5,6,10,11],"tablet":2,"tackl":8,"tag":7,"tail":5,"tailor":10,"take":[0,2,5,8,10,11,12],"taken":[0,10],"talk":8,"tangerin":0,"tap":3,"target":[0,5,8,11],"target_hash":7,"target_host":5,"target_port":[5,11],"task":11,"tcp":[2,3,4,6,10,11,12],"tcpclientinterfac":[2,3,5],"tcpinterfac":11,"tcpserverinterfac":[2,5],"tdata":0,"teach":11,"teahous":9,"teardown":[0,7],"teardown_reason":0,"technologi":[2,6],"teffect":0,"telemetri":[8,9],"telephon":4,"telephoni":8,"tell":[0,2,5,6],"temperatur":10,"temporari":[2,5,11],"temporarili":[5,6],"ten":10,"tend":5,"term":[2,5,6,10],"termin":[0,2,7,8],"terminologi":[6,10],"termux":2,"test":[2,8,10,11],"testnet":11,"text":[0,8,10],"tfile":0,"tgz":11,"than":[0,2,5,6,7,8,9,10,11,12],"thei":[0,2,5,6,7,8,10,11],"them":[0,2,3,5,6,8,9,10,11,12],"themselv":[5,6],"thereaft":10,"therefor":[2,10,12],"thi":[0,2,3,4,5,6,7,8,9,10,11,12],"thing":[0,2,6,8],"think":[2,3,6,9,10],"those":[2,6,10,11],"though":[2,5,6,10],"thousand":[2,5,10,11],"thread":0,"threat":11,"three":[2,10],"threshold":5,"throough":5,"throttl":[5,6],"through":[0,2,3,5,6,7,8,10,11,12],"throughout":[6,10],"throughput":[7,8,10,12],"thrown":7,"thu":[6,7,10],"ti":[0,6,10],"time":[0,2,3,5,6,7,8,9,10,11],"time_since_last":0,"timeout":[0,7,11],"timeoutarg":0,"timestamp":[0,10],"timestr":0,"tion":5,"tnc":[3,5,7,8,11,12],"to_fil":7,"todai":10,"togeth":[3,6,10,11],"token":[7,10,12],"toler":5,"too":[0,6],"tool":[2,3,6,8,10,11,12],"toolkit":[2,6],"top":[8,10],"topic":[2,10],"topographi":[2,6,10],"topologi":[2,5,6,10,12],"torn":[7,11],"total":[7,10,11,12],"total_s":0,"toward":[0,5,10],"track":7,"track_phy_stat":7,"trade":[6,10],"tradit":[6,10],"traffic":[0,2,5,6,7,10,11],"transceiv":[2,3,5,8,10,12],"transfer":[0,7,10,11,12],"transfer_s":0,"transform":12,"translat":6,"transmiss":[2,5,7,10],"transmit":[0,5,10],"transpar":[3,5,6,10,11],"transport":[0,2,4,5,7,8,11,12],"transport_en":7,"transport_ident":11,"travers":[2,7,10],"treat":[6,10],"tremend":6,"tri":0,"trip":[0,7,11],"trivial":[10,12],"true":[0,2,5,7,11],"truli":[3,10],"truncat":[7,10,11],"truncated_hash":7,"truncated_hashlength":[0,7],"trust":[2,5,6,10,11],"trustless":[4,10,12],"trustworthi":[6,11],"try":[0,4,5,6,7,8],"ttime":0,"ttransfer":0,"ttyacm0":5,"ttyusb0":[0,5,11],"ttyusb1":5,"ttyusb2":5,"tun":[3,5],"tun0":5,"tune":5,"tunnel":[2,5,6,10,12],"tupl":7,"turn":[0,5,11],"turnaround":5,"tutori":2,"two":[0,3,5,6,7,10],"tx":[5,11],"txb":0,"txp":11,"txpower":5,"txt":11,"txtail":[5,11],"type":[0,2,4,5,6,7,11],"typeerror":7,"typic":[5,6,10],"u":[10,11],"ubiqu":3,"ubuntu":[4,11],"uci":2,"udp":[4,6,10,11,12],"udpinterfac":5,"uhf":[11,12],"ui":8,"ultim":[2,10],"umsgpack":0,"unblackhol":11,"unblock":11,"uncencrypt":0,"unchang":6,"uncoordin":2,"under":[7,9,10,11,12],"underli":[0,5,6,7,10,12],"understand":[2,4,5,6,7,11],"underwai":2,"unencrypt":[0,7,10],"unequivoc":10,"unexplor":6,"unforg":[6,12],"unfortun":2,"unidentifi":0,"unidirect":0,"unifi":[6,10],"uninterest":0,"uniqu":[0,5,6,7,8,10,11,12],"unit":[0,2,7,11],"unknown":[0,5,6,7,10,11],"unless":[0,2,5,6,7,10],"unlicens":10,"unlik":10,"unlock":11,"unorganis":6,"unpack":[0,7],"unpackb":0,"unplug":11,"unrecover":[0,11],"unreli":5,"unset":10,"unsupport":7,"until":[0,2,5,7],"untrust":11,"unus":11,"unwant":[10,11],"up":[0,2,3,5,6,7,8,10,11,12],"updat":[0,2,7,10,11],"upgrad":[2,7,10],"upkeep":5,"upon":[0,5,10],"upset":0,"urandom":[10,12],"uri":8,"url":11,"us":[0,3,4,5,6,7],"usabl":[5,10],"usag":[4,5,7,8,9,11],"usb":[3,10,11],"useabl":10,"user":[0,2,5,6,8,10,11,12],"user_input":0,"userland":12,"usernameher":11,"usr":[5,11],"usual":[2,5,6],"utf":0,"util":[0,3,4,5,10],"utilis":[0,2,5,7,10,11,12],"ux":8,"v":[4,11],"valid":[0,2,5,6,7,10,11],"valu":[0,2,5,7,10,11],"valuabl":[3,9],"valueerror":[0,7],"vari":[2,5,10,11],"variabl":[0,2,7],"varieti":[5,8,10,11,12],"variou":[0,2,5,6,8,10,11,12],"vast":[2,10],"vastli":6,"ve":6,"vehicl":5,"vendor":[0,3,12],"verbos":[7,11],"veri":[2,3,5,6,7,8,9,10,11,12],"verif":[6,7,8,10,11],"verifi":[0,2,5,6,7,10,11,12],"versa":12,"version":[0,2,7,10,11],"vhf":[10,12],"via":[2,3,5,6,8,9,10,11,12],"viabl":6,"vice":12,"view":[2,5,9,10,11],"violat":5,"virtual":[2,3,5,6,10,11,12],"visibl":[0,5],"voic":[8,9],"voicemail":8,"volunt":2,"voluntari":2,"vpn":6,"vport":5,"vulner":6,"vvv":2,"w":11,"wa":[0,3,5,6,7,10,11,12],"wai":[0,4,5,6,7,8,10,11],"wait":[0,2,5,8,10,11],"want":[0,2,5,6,8,9,10,11],"wantedbi":11,"warn":11,"warrant":12,"wast":[5,6,9],"wave":3,"wb":0,"we":[0,2,3,5,6,9,10],"weaken":10,"web":[2,8],"websit":[2,5],"weight":11,"well":[3,5,6,7,8,9,10,11,12],"went":0,"were":[0,8],"what":[0,2,4,5,6,7,10,11],"whatev":[6,7,10],"wheel":2,"when":[0,2,3,5,6,7,8,10,11],"whenev":[0,7,10],"where":[2,3,4,5,6,7,8,10,11],"whereupon":10,"whether":[0,2,5,6,7,10],"which":[0,2,5,6,7,8,10,11],"while":[0,2,3,5,6,7,8,10,11,12],"whitelist":10,"whl":2,"who":[2,5,6,10,11],"whole":11,"wide":[2,3,5,6,8,10,11,12],"wider":[2,5,6,10,11],"wifi":[2,4,5,6,8,10,11,12],"wikipedia":8,"wildcard":0,"willing":11,"window":[4,5,8],"wipe":11,"wire":[3,4,5,8,12],"wireless":[3,6],"wirelessli":5,"wish":[0,5,10,11],"within":[0,2,5,6,7,10],"without":[0,2,3,5,6,8,10,11,12],"wlan0":5,"wolf":3,"won":0,"word":2,"work":[2,3,5,6,8,10,11,12],"workabl":6,"world":[2,3,5,6,8,11,12],"worri":6,"worth":2,"would":[5,7,8,10],"write":[0,2,3,5,7,8,10,11],"write_timeout":0,"writer":[0,7],"written":[0,10,12],"wrong":[0,2,5],"wrote":[0,5],"x":[7,10,11],"x25519":[10,12],"xenon":0,"xonxoff":0,"y":0,"ye":[2,5,10,11],"year":10,"yet":[0,5,10,12],"yggdrasil":5,"yi":0,"you":[0,2,3,4,5,6,7,8,9,10,11,12],"your":[0,3,4,5,6,7,9,10,12],"yourself":[2,10,11,12],"z":0,"zero":[5,7,8,12],"zi":0,"zim":8,"zone":10,"zshrc":2},"titles":["Code Examples","An Explanation of Reticulum for Human Beings","Getting Started Fast","Communications Hardware","Reticulum Network Stack Manual","Configuring Interfaces","Building Networks","API Reference","Programs Using Reticulum","Support Reticulum","Understanding Reticulum","Using Reticulum on Your System","What is Reticulum?"],"titleterms":{"0":3,"1":3,"25":5,"Beings":1,"Not":6,"Of":4,"The":[10,11],"With":2,"access":10,"ad":2,"address":6,"an":1,"android":2,"announc":[0,5,10],"api":7,"arm64":2,"auto":5,"autom":11,"ax":5,"backbon":[2,5],"base":[2,3],"basic":10,"beam":3,"blackhol":11,"board":3,"bookworm":2,"bootstrap":2,"broadcast":0,"buffer":0,"build":[2,6],"can":12,"caveat":12,"channel":0,"chat":8,"client":[5,8],"code":[0,10],"columba":8,"combin":3,"common":5,"commun":3,"concept":6,"conceptu":10,"configur":[5,11],"connect":[2,5,6,8],"consider":[5,6],"content":4,"contribut":2,"control":5,"creat":[2,3,10],"cryptograph":10,"current":[10,12],"custom":[0,2,5],"data":11,"debian":2,"deck":3,"depend":2,"destin":[5,6,10],"detail":10,"develop":2,"devic":[3,12],"discov":11,"discover":5,"discoveri":5,"distribut":2,"doe":12,"donat":9,"echo":[0,3],"emptor":12,"enabl":5,"entrypoint":2,"establish":10,"ethernet":3,"exampl":[0,5],"explan":1,"fast":2,"feedback":9,"filesync":8,"filetransf":0,"find":2,"fix":11,"format":10,"function":10,"further":10,"futur":10,"get":[2,10],"global":2,"goal":10,"hardwar":3,"health":2,"heltec":3,"heterogen":6,"host":2,"human":1,"i":12,"i2p":5,"ident":10,"identif":0,"implic":10,"improv":11,"includ":[2,11],"indic":4,"infrastructur":2,"instal":[2,3],"instanc":[2,6],"interact":8,"interfac":[0,2,5,8,10,11,12],"internet":2,"introduct":10,"introductori":6,"issu":2,"j":8,"kei":10,"kiss":5,"lilygo":3,"limit":5,"line":3,"link":[0,10],"list":11,"listen":5,"local":11,"lora":5,"lora32":3,"lunar":2,"lxmf":8,"lxmfy":8,"lxst":8,"maco":2,"manag":11,"manual":4,"mechan":10,"meshchat":8,"meshchatx":8,"micron":8,"minim":0,"mix":2,"mode":5,"modem":3,"modul":8,"motiv":10,"multi":5,"name":[10,11],"network":[2,4,6,8,10],"new":5,"node":[6,8,10],"nomad":8,"note":2,"offer":12,"opencom":3,"openwrt":2,"option":5,"over":2,"overview":[6,10],"packet":[3,10],"page":8,"paramet":5,"parser":8,"person":2,"phone":8,"pi":2,"pipe":5,"platform":2,"port":11,"primit":10,"prioritis":10,"program":[2,8,11],"propag":10,"protocol":[8,10],"provid":9,"public":[2,10],"publish":11,"pure":2,"python":2,"radio":[2,3],"rak4631":3,"raspberri":2,"rate":5,"rbrowser":8,"reach":10,"refer":[7,10],"relai":8,"remot":[5,8,11],"request":0,"resolv":2,"resourc":[8,10],"respons":[0,2],"ret":2,"retibb":8,"reticulum":[1,2,3,4,8,9,10,11,12],"retipedia":8,"risc":2,"rn":8,"rncp":11,"rnid":11,"rnmon":8,"rnode":[3,5],"rnodeconf":11,"rnpath":11,"rnprobe":11,"rnsd":11,"rnstatu":11,"rnx":11,"rrc":8,"rule":10,"secur":5,"serial":[3,5,11],"server":5,"servic":11,"setup":10,"shell":8,"sideband":8,"sourc":11,"specif":[2,10],"stack":4,"standalon":2,"start":2,"statu":12,"strategi":2,"support":[3,9],"suprem":3,"system":11,"systemwid":11,"t":3,"t114":3,"t3s3":3,"tabl":4,"tcp":5,"telephon":8,"transport":[6,10],"trustless":6,"try":2,"type":[3,10,12],"ubuntu":2,"udp":5,"understand":10,"unsign":3,"us":[2,8,10,11,12],"usag":[3,10],"userspac":11,"util":[2,8,11],"v":2,"v1":3,"v2":3,"v3":3,"v4":3,"wai":2,"what":12,"where":12,"wifi":3,"window":2,"wire":10,"x":3,"xl":3,"your":[2,11]}}) \ No newline at end of file +Search.setIndex({"alltitles":{"A Carrier-Grade Fallacy":[[14,"a-carrier-grade-fallacy"]],"API Reference":[[8,null]],"ARM64":[[2,"arm64"]],"AX.25 KISS Interface":[[5,"ax-25-kiss-interface"]],"Adding Radio Interfaces":[[2,"adding-radio-interfaces"]],"An Explanation of Reticulum for Human Beings":[[1,null]],"Anchor In The Flow":[[14,"anchor-in-the-flow"]],"Android":[[2,"android"]],"Announce":[[0,"announce"]],"Announce Propagation Rules":[[11,"announce-propagation-rules"]],"Announce Rate Control":[[5,"announce-rate-control"]],"Announcing Presence":[[14,"announcing-presence"]],"Auto Interface":[[5,"auto-interface"]],"Automated List Sourcing":[[12,"automated-list-sourcing"]],"Backbone Interface":[[5,"backbone-interface"]],"Blackhole Management":[[12,"blackhole-management"]],"Bootstrapping Connectivity":[[2,"bootstrapping-connectivity"]],"Broadcast":[[0,"broadcast"]],"Buffer":[[0,"buffer"]],"Build Personal Infrastructure":[[2,"build-personal-infrastructure"]],"Building Networks":[[7,null]],"Channel":[[0,"channel"]],"Code Examples":[[0,null]],"Columba":[[9,"columba"]],"Combining Hardware Types":[[3,"combining-hardware-types"]],"Common Interface Options":[[5,"common-interface-options"]],"Communications Hardware":[[3,null]],"Concepts & Overview":[[7,"concepts-overview"]],"Conceptual Overview":[[11,"conceptual-overview"]],"Configuration & Data":[[12,"configuration-data"]],"Configuring Interfaces":[[5,null]],"Connect to the Distributed Backbone":[[2,"connect-to-the-distributed-backbone"]],"Connecting Remotes":[[5,"connecting-remotes"]],"Connecting Reticulum Instances Over the Internet":[[2,"connecting-reticulum-instances-over-the-internet"]],"Contributing to the Global Ret":[[2,"contributing-to-the-global-ret"]],"Cost Of A Byte":[[14,"cost-of-a-byte"]],"Creating RNodes":[[3,"creating-rnodes"]],"Creating a Network With Reticulum":[[2,"creating-a-network-with-reticulum"]],"Creating and Using Custom Interfaces":[[2,"creating-and-using-custom-interfaces"]],"Creating and Using a Network Identity":[[11,"creating-and-using-a-network-identity"]],"Cryptographic Primitives":[[11,"cryptographic-primitives"]],"Current Status":[[13,"current-status"]],"Current Usage":[[11,"current-usage"]],"Custom Interfaces":[[0,"custom-interfaces"],[5,"custom-interfaces"]],"Death To The Address":[[14,"death-to-the-address"]],"Debian Bookworm":[[2,"debian-bookworm"]],"Decentralization Or Uncentralizability?":[[14,"decentralization-or-uncentralizability"]],"Design Patterns For Post-IP Systems":[[14,"design-patterns-for-post-ip-systems"]],"Destination Naming":[[11,"destination-naming"]],"Destinations":[[11,"destinations"]],"Destinations, Not Addresses":[[7,"destinations-not-addresses"]],"Develop a Program with Reticulum":[[2,"develop-a-program-with-reticulum"]],"Discoverable Interfaces":[[5,"discoverable-interfaces"]],"Discovering Interfaces":[[12,"discovering-interfaces"]],"Discovery Parameters":[[5,"discovery-parameters"]],"Donations":[[10,"donations"]],"Echo":[[0,"echo"]],"Emergent Patterns":[[14,"emergent-patterns"]],"Enabling Discovery":[[5,"enabling-discovery"]],"Encryption Is Not A Feature":[[14,"encryption-is-not-a-feature"]],"Ethernet-based Hardware":[[3,"ethernet-based-hardware"]],"Ethics Of The Tool":[[14,"ethics-of-the-tool"]],"Example Configuration":[[5,"example-configuration"]],"Fabric Of The Independent":[[14,"fabric-of-the-independent"]],"Fallacy Of The Cloud":[[14,"fallacy-of-the-cloud"]],"Filetransfer":[[0,"filetransfer"]],"Finding Your Way":[[2,"finding-your-way"]],"Fixed Serial Port Names":[[12,"fixed-serial-port-names"]],"Flow & Time":[[14,"flow-time"]],"Future Implications":[[11,"future-implications"]],"Getting Further":[[11,"getting-further"]],"Getting Started Fast":[[2,null]],"Goals":[[11,"goals"]],"Heltec LoRa32 v2.0":[[3,"heltec-lora32-v2-0"]],"Heltec LoRa32 v3.0":[[3,"heltec-lora32-v3-0"]],"Heltec LoRa32 v4.0":[[3,"heltec-lora32-v4-0"]],"Heltec T114":[[3,"heltec-t114"]],"Heterogeneous Connectivity":[[7,"heterogeneous-connectivity"]],"Hostile Environments":[[14,"hostile-environments"]],"Hosting Public Entrypoints":[[2,"hosting-public-entrypoints"]],"I2P Interface":[[5,"i2p-interface"]],"Identification":[[0,"example-identify"]],"Identities":[[11,"understanding-identities"]],"Identity and Nomadism":[[14,"identity-and-nomadism"]],"Improving System Configuration":[[12,"improving-system-configuration"]],"Included Utility Programs":[[12,"included-utility-programs"]],"Indices and Tables":[[4,"indices-and-tables"]],"Installation":[[3,"installation"]],"Interface Access Codes":[[11,"interface-access-codes"]],"Interface Modes":[[5,"interface-modes"],[5,"interfaces-modes"]],"Interface Modules & Connectivity Resources":[[9,"interface-modules-connectivity-resources"]],"Interface Types and Devices":[[13,"interface-types-and-devices"]],"Introduction & Basic Functionality":[[11,"introduction-basic-functionality"]],"Introductory Considerations":[[7,"introductory-considerations"]],"KISS Interface":[[5,"kiss-interface"]],"LXMF":[[9,"lxmf"]],"LXMF Interactive Client":[[9,"lxmf-interactive-client"]],"LXMFy":[[9,"lxmfy"]],"LXST":[[9,"id17"]],"LXST Phone":[[9,"lxst-phone"]],"Liberation From Limits":[[14,"liberation-from-limits"]],"LilyGO LoRa32 v1.0":[[3,"lilygo-lora32-v1-0"]],"LilyGO LoRa32 v2.0":[[3,"lilygo-lora32-v2-0"]],"LilyGO LoRa32 v2.1":[[3,"lilygo-lora32-v2-1"]],"LilyGO T-Beam":[[3,"lilygo-t-beam"]],"LilyGO T-Beam Supreme":[[3,"lilygo-t-beam-supreme"]],"LilyGO T-Deck":[[3,"lilygo-t-deck"]],"LilyGO T-Echo":[[3,"lilygo-t-echo"]],"LilyGO T3S3":[[3,"lilygo-t3s3"]],"Link":[[0,"link"]],"Link Establishment in Detail":[[11,"link-establishment-in-detail"]],"Listeners":[[5,"listeners"]],"Local Blackhole Management":[[12,"local-blackhole-management"]],"MacOS":[[2,"macos"]],"Merits Of Scarcity":[[14,"merits-of-scarcity"]],"MeshChat":[[9,"meshchat"]],"MeshChatX":[[9,"meshchatx"]],"Micron Parser JS":[[9,"micron-parser-js"]],"Minimal":[[0,"minimal"]],"Mixing Strategies":[[2,"mixing-strategies"]],"Motivation":[[11,"motivation"]],"Naming Is Power":[[14,"naming-is-power"]],"Network Health & Responsibility":[[2,"network-health-responsibility"]],"Network Identities":[[11,"network-identities"]],"New Destination Rate Limiting":[[5,"new-destination-rate-limiting"]],"Node Types":[[11,"node-types"]],"Nomad Network":[[9,"nomad-network"]],"Open Sky":[[14,"open-sky"]],"OpenCom XL":[[3,"opencom-xl"]],"OpenWRT":[[2,"openwrt"]],"Packet Prioritisation":[[11,"packet-prioritisation"]],"Packet Radio Modems":[[3,"packet-radio-modems"]],"Personal Infrastructure":[[14,"personal-infrastructure"]],"Physics Of Trust":[[14,"physics-of-trust"]],"Pipe Interface":[[5,"pipe-interface"]],"Platform-Specific Install Notes":[[2,"platform-specific-install-notes"]],"Portable Existence":[[14,"portable-existence"]],"Preserving Human Agency":[[14,"preserving-human-agency"]],"Programs & Utilities":[[9,"programs-utilities"]],"Programs Using Reticulum":[[9,null]],"Protocol Specifics":[[11,"protocol-specifics"]],"Protocols":[[9,"protocols"]],"Provide Feedback":[[10,"provide-feedback"]],"Public Domain Protocol":[[14,"public-domain-protocol"]],"Public Key Announcements":[[11,"public-key-announcements"]],"Publishing Blackhole Lists":[[12,"publishing-blackhole-lists"]],"Pure-Python Reticulum":[[2,"pure-python-reticulum"]],"RAK4631-based Boards":[[3,"rak4631-based-boards"]],"RBrowser":[[9,"rbrowser"]],"RISC-V":[[2,"risc-v"]],"RNMon":[[9,"rnmon"]],"RNS FileSync":[[9,"rns-filesync"]],"RNS Page Node":[[9,"rns-page-node"]],"RNode":[[3,"rnode"]],"RNode LoRa Interface":[[5,"rnode-lora-interface"]],"RNode Multi Interface":[[5,"rnode-multi-interface"]],"RRC":[[9,"rrc"]],"Raspberry Pi":[[2,"raspberry-pi"]],"Reaching the Destination":[[11,"reaching-the-destination"]],"Reference Implementation":[[13,"reference-implementation"]],"Reference Setup":[[11,"reference-setup"]],"Remote Management":[[12,"remote-management"]],"Remote Shell":[[9,"remote-shell"]],"Requests & Responses":[[0,"requests-responses"]],"Resolving Dependency & Installation Issues":[[2,"resolving-dependency-installation-issues"]],"Resources":[[11,"resources"]],"RetiBBS":[[9,"retibbs"]],"Reticulum License":[[6,null]],"Reticulum Network Stack Manual":[[4,null]],"Reticulum Network Telephone":[[9,"reticulum-network-telephone"]],"Reticulum Relay Chat":[[9,"reticulum-relay-chat"]],"Reticulum Transport":[[11,"reticulum-transport"]],"Reticulum as a System Service":[[12,"reticulum-as-a-system-service"]],"Retipedia":[[9,"retipedia"]],"Roaming Nodes":[[14,"roaming-nodes"]],"Security Considerations":[[5,"security-considerations"]],"Serial Interface":[[5,"serial-interface"]],"Serial Lines & Devices":[[3,"serial-lines-devices"]],"Sideband":[[9,"sideband"]],"Sovereignty Through Infrastructure":[[14,"sovereignty-through-infrastructure"]],"Standalone Reticulum Installation":[[2,"standalone-reticulum-installation"]],"Store & Forward":[[14,"store-forward"]],"Support Reticulum":[[10,null]],"Supported Boards and Devices":[[3,"supported-boards-and-devices"]],"Systemwide Service":[[12,"systemwide-service"]],"TCP Client Interface":[[5,"tcp-client-interface"]],"TCP Server Interface":[[5,"tcp-server-interface"]],"Table Of Contents":[[4,"table-of-contents"]],"The Ability To Disconnect":[[14,"the-ability-to-disconnect"]],"The Announce Mechanism in Detail":[[11,"the-announce-mechanism-in-detail"]],"The Bandwidth Fallacy":[[14,"the-bandwidth-fallacy"]],"The Harm Principle":[[14,"the-harm-principle"]],"The Illusion Of The Center":[[14,"the-illusion-of-the-center"]],"The Interface Is The Medium":[[14,"the-interface-is-the-medium"]],"The Work Is Finished":[[14,"the-work-is-finished"]],"The rncp Utility":[[12,"the-rncp-utility"]],"The rnid Utility":[[12,"the-rnid-utility"]],"The rnodeconf Utility":[[12,"the-rnodeconf-utility"]],"The rnpath Utility":[[12,"the-rnpath-utility"]],"The rnprobe Utility":[[12,"the-rnprobe-utility"]],"The rnsd Utility":[[12,"the-rnsd-utility"]],"The rnstatus Utility":[[12,"the-rnstatus-utility"]],"The rnx Utility":[[12,"the-rnx-utility"]],"Transport Nodes and Instances":[[7,"transport-nodes-and-instances"]],"Trustless Networking":[[7,"trustless-networking"]],"Try Using a Reticulum-based Program":[[2,"try-using-a-reticulum-based-program"]],"UDP Interface":[[5,"udp-interface"]],"Ubuntu Lunar":[[2,"ubuntu-lunar"]],"Understanding Reticulum":[[11,null]],"Unsigned RNode v2.x":[[3,"unsigned-rnode-v2-x"]],"Usage with Reticulum":[[3,"usage-with-reticulum"]],"Userspace Service":[[12,"userspace-service"]],"Using Reticulum on Your System":[[12,null]],"Using the Included Utilities":[[2,"using-the-included-utilities"]],"What does Reticulum Offer?":[[13,"what-does-reticulum-offer"]],"What is Reticulum?":[[13,null]],"Where can Reticulum be Used?":[[13,"where-can-reticulum-be-used"]],"WiFi-based Hardware":[[3,"wifi-based-hardware"]],"Windows":[[2,"windows"]],"Wire Format":[[11,"wire-format"]],"Zen of Reticulum":[[14,null]],"Zero-Trust Architectures":[[14,"zero-trust-architectures"]]},"docnames":["examples","forhumans","gettingstartedfast","hardware","index","interfaces","license","networks","reference","software","support","understanding","using","whatis","zen"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["examples.rst","forhumans.rst","gettingstartedfast.rst","hardware.rst","index.rst","interfaces.rst","license.rst","networks.rst","reference.rst","software.rst","support.rst","understanding.rst","using.rst","whatis.rst","zen.rst"],"indexentries":{"__init__() (rns.rawchannelreader method)":[[8,"RNS.RawChannelReader.__init__",false]],"__init__() (rns.rawchannelwriter method)":[[8,"RNS.RawChannelWriter.__init__",false]],"accepts_links() (rns.destination method)":[[8,"RNS.Destination.accepts_links",false]],"add_message_handler() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.add_message_handler",false]],"add_ready_callback() (rns.rawchannelreader method)":[[8,"RNS.RawChannelReader.add_ready_callback",false]],"advertise() (rns.resource method)":[[8,"RNS.Resource.advertise",false]],"announce() (rns.destination method)":[[8,"RNS.Destination.announce",false]],"announce_cap (rns.reticulum attribute)":[[8,"RNS.Reticulum.ANNOUNCE_CAP",false]],"app_and_aspects_from_name() (rns.destination static method)":[[8,"RNS.Destination.app_and_aspects_from_name",false]],"await_path() (rns.transport static method)":[[8,"RNS.Transport.await_path",false]],"blackhole_sources() (rns.reticulum static method)":[[8,"RNS.Reticulum.blackhole_sources",false]],"buffer (class in rns)":[[8,"RNS.Buffer",false]],"cancel() (rns.resource method)":[[8,"RNS.Resource.cancel",false]],"channel (class in rns.channel)":[[8,"RNS.Channel.Channel",false]],"clear_default_app_data() (rns.destination method)":[[8,"RNS.Destination.clear_default_app_data",false]],"concluded() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.concluded",false]],"create_bidirectional_buffer() (rns.buffer static method)":[[8,"RNS.Buffer.create_bidirectional_buffer",false]],"create_keys() (rns.destination method)":[[8,"RNS.Destination.create_keys",false]],"create_reader() (rns.buffer static method)":[[8,"RNS.Buffer.create_reader",false]],"create_writer() (rns.buffer static method)":[[8,"RNS.Buffer.create_writer",false]],"current_ratchet_id() (rns.identity static method)":[[8,"RNS.Identity.current_ratchet_id",false]],"curve (rns.identity attribute)":[[8,"RNS.Identity.CURVE",false]],"curve (rns.link attribute)":[[8,"RNS.Link.CURVE",false]],"decrypt() (rns.destination method)":[[8,"RNS.Destination.decrypt",false]],"decrypt() (rns.identity method)":[[8,"RNS.Identity.decrypt",false]],"deregister_announce_handler() (rns.transport static method)":[[8,"RNS.Transport.deregister_announce_handler",false]],"deregister_request_handler() (rns.destination method)":[[8,"RNS.Destination.deregister_request_handler",false]],"destination (class in rns)":[[8,"RNS.Destination",false]],"enable_ratchets() (rns.destination method)":[[8,"RNS.Destination.enable_ratchets",false]],"encrypt() (rns.destination method)":[[8,"RNS.Destination.encrypt",false]],"encrypt() (rns.identity method)":[[8,"RNS.Identity.encrypt",false]],"encrypted_mdu (rns.packet attribute)":[[8,"RNS.Packet.ENCRYPTED_MDU",false]],"enforce_ratchets() (rns.destination method)":[[8,"RNS.Destination.enforce_ratchets",false]],"establishment_timeout_per_hop (rns.link attribute)":[[8,"RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP",false]],"expand_name() (rns.destination static method)":[[8,"RNS.Destination.expand_name",false]],"from_bytes() (rns.identity static method)":[[8,"RNS.Identity.from_bytes",false]],"from_file() (rns.identity static method)":[[8,"RNS.Identity.from_file",false]],"full_hash() (rns.identity static method)":[[8,"RNS.Identity.full_hash",false]],"get_age() (rns.link method)":[[8,"RNS.Link.get_age",false]],"get_channel() (rns.link method)":[[8,"RNS.Link.get_channel",false]],"get_data_size() (rns.resource method)":[[8,"RNS.Resource.get_data_size",false]],"get_establishment_rate() (rns.link method)":[[8,"RNS.Link.get_establishment_rate",false]],"get_expected_rate() (rns.link method)":[[8,"RNS.Link.get_expected_rate",false]],"get_hash() (rns.resource method)":[[8,"RNS.Resource.get_hash",false]],"get_instance() (rns.reticulum static method)":[[8,"RNS.Reticulum.get_instance",false]],"get_mdu() (rns.link method)":[[8,"RNS.Link.get_mdu",false]],"get_mode() (rns.link method)":[[8,"RNS.Link.get_mode",false]],"get_mtu() (rns.link method)":[[8,"RNS.Link.get_mtu",false]],"get_parts() (rns.resource method)":[[8,"RNS.Resource.get_parts",false]],"get_private_key() (rns.destination method)":[[8,"RNS.Destination.get_private_key",false]],"get_private_key() (rns.identity method)":[[8,"RNS.Identity.get_private_key",false]],"get_progress() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_progress",false]],"get_progress() (rns.resource method)":[[8,"RNS.Resource.get_progress",false]],"get_public_key() (rns.identity method)":[[8,"RNS.Identity.get_public_key",false]],"get_q() (rns.link method)":[[8,"RNS.Link.get_q",false]],"get_q() (rns.packet method)":[[8,"RNS.Packet.get_q",false]],"get_random_hash() (rns.identity static method)":[[8,"RNS.Identity.get_random_hash",false]],"get_remote_identity() (rns.link method)":[[8,"RNS.Link.get_remote_identity",false]],"get_request_id() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_request_id",false]],"get_response() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_response",false]],"get_response_time() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_response_time",false]],"get_rssi() (rns.link method)":[[8,"RNS.Link.get_rssi",false]],"get_rssi() (rns.packet method)":[[8,"RNS.Packet.get_rssi",false]],"get_rtt() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.get_rtt",false]],"get_segments() (rns.resource method)":[[8,"RNS.Resource.get_segments",false]],"get_snr() (rns.link method)":[[8,"RNS.Link.get_snr",false]],"get_snr() (rns.packet method)":[[8,"RNS.Packet.get_snr",false]],"get_status() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.get_status",false]],"get_status() (rns.requestreceipt method)":[[8,"RNS.RequestReceipt.get_status",false]],"get_transfer_size() (rns.resource method)":[[8,"RNS.Resource.get_transfer_size",false]],"has_path() (rns.transport static method)":[[8,"RNS.Transport.has_path",false]],"hash() (rns.destination static method)":[[8,"RNS.Destination.hash",false]],"hash_from_name_and_identity() (rns.destination static method)":[[8,"RNS.Destination.hash_from_name_and_identity",false]],"hops_to() (rns.transport static method)":[[8,"RNS.Transport.hops_to",false]],"identify() (rns.link method)":[[8,"RNS.Link.identify",false]],"identity (class in rns)":[[8,"RNS.Identity",false]],"inactive_for() (rns.link method)":[[8,"RNS.Link.inactive_for",false]],"interface_discovery_sources() (rns.reticulum static method)":[[8,"RNS.Reticulum.interface_discovery_sources",false]],"is_compressed() (rns.resource method)":[[8,"RNS.Resource.is_compressed",false]],"is_ready_to_send() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.is_ready_to_send",false]],"keepalive (rns.link attribute)":[[8,"RNS.Link.KEEPALIVE",false]],"keepalive_timeout_factor (rns.link attribute)":[[8,"RNS.Link.KEEPALIVE_TIMEOUT_FACTOR",false]],"keysize (rns.identity attribute)":[[8,"RNS.Identity.KEYSIZE",false]],"link (class in rns)":[[8,"RNS.Link",false]],"link_mtu_discovery (rns.reticulum attribute)":[[8,"RNS.Reticulum.LINK_MTU_DISCOVERY",false]],"link_mtu_discovery() (rns.reticulum static method)":[[8,"RNS.Reticulum.link_mtu_discovery",false]],"load_private_key() (rns.destination method)":[[8,"RNS.Destination.load_private_key",false]],"load_private_key() (rns.identity method)":[[8,"RNS.Identity.load_private_key",false]],"load_public_key() (rns.identity method)":[[8,"RNS.Identity.load_public_key",false]],"mdu (rns.channel.channel property)":[[8,"RNS.Channel.Channel.mdu",false]],"messagebase (class in rns)":[[8,"RNS.MessageBase",false]],"minimum_bitrate (rns.reticulum attribute)":[[8,"RNS.Reticulum.MINIMUM_BITRATE",false]],"msgtype (rns.messagebase attribute)":[[8,"RNS.MessageBase.MSGTYPE",false]],"mtu (rns.reticulum attribute)":[[8,"RNS.Reticulum.MTU",false]],"next_hop() (rns.transport static method)":[[8,"RNS.Transport.next_hop",false]],"next_hop_interface() (rns.transport static method)":[[8,"RNS.Transport.next_hop_interface",false]],"no_data_for() (rns.link method)":[[8,"RNS.Link.no_data_for",false]],"no_inbound_for() (rns.link method)":[[8,"RNS.Link.no_inbound_for",false]],"no_outbound_for() (rns.link method)":[[8,"RNS.Link.no_outbound_for",false]],"pack() (rns.messagebase method)":[[8,"RNS.MessageBase.pack",false]],"packet (class in rns)":[[8,"RNS.Packet",false]],"packetreceipt (class in rns)":[[8,"RNS.PacketReceipt",false]],"pathfinder_m (rns.transport attribute)":[[8,"RNS.Transport.PATHFINDER_M",false]],"plain_mdu (rns.packet attribute)":[[8,"RNS.Packet.PLAIN_MDU",false]],"publish_blackhole_enabled() (rns.reticulum static method)":[[8,"RNS.Reticulum.publish_blackhole_enabled",false]],"ratchet_count (rns.destination attribute)":[[8,"RNS.Destination.RATCHET_COUNT",false]],"ratchet_expiry (rns.identity attribute)":[[8,"RNS.Identity.RATCHET_EXPIRY",false]],"ratchet_interval (rns.destination attribute)":[[8,"RNS.Destination.RATCHET_INTERVAL",false]],"ratchetsize (rns.identity attribute)":[[8,"RNS.Identity.RATCHETSIZE",false]],"rawchannelreader (class in rns)":[[8,"RNS.RawChannelReader",false]],"rawchannelwriter (class in rns)":[[8,"RNS.RawChannelWriter",false]],"recall() (rns.identity static method)":[[8,"RNS.Identity.recall",false]],"recall_app_data() (rns.identity static method)":[[8,"RNS.Identity.recall_app_data",false]],"register_announce_handler() (rns.transport static method)":[[8,"RNS.Transport.register_announce_handler",false]],"register_message_type() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.register_message_type",false]],"register_request_handler() (rns.destination method)":[[8,"RNS.Destination.register_request_handler",false]],"remote_management_enabled() (rns.reticulum static method)":[[8,"RNS.Reticulum.remote_management_enabled",false]],"remove_message_handler() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.remove_message_handler",false]],"remove_ready_callback() (rns.rawchannelreader method)":[[8,"RNS.RawChannelReader.remove_ready_callback",false]],"request() (rns.link method)":[[8,"RNS.Link.request",false]],"request_path() (rns.transport static method)":[[8,"RNS.Transport.request_path",false]],"requestreceipt (class in rns)":[[8,"RNS.RequestReceipt",false]],"required_discovery_value() (rns.reticulum static method)":[[8,"RNS.Reticulum.required_discovery_value",false]],"resend() (rns.packet method)":[[8,"RNS.Packet.resend",false]],"resource (class in rns)":[[8,"RNS.Resource",false]],"reticulum (class in rns)":[[8,"RNS.Reticulum",false]],"send() (rns.channel.channel method)":[[8,"RNS.Channel.Channel.send",false]],"send() (rns.packet method)":[[8,"RNS.Packet.send",false]],"set_default_app_data() (rns.destination method)":[[8,"RNS.Destination.set_default_app_data",false]],"set_delivery_callback() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.set_delivery_callback",false]],"set_link_closed_callback() (rns.link method)":[[8,"RNS.Link.set_link_closed_callback",false]],"set_link_established_callback() (rns.destination method)":[[8,"RNS.Destination.set_link_established_callback",false]],"set_packet_callback() (rns.destination method)":[[8,"RNS.Destination.set_packet_callback",false]],"set_packet_callback() (rns.link method)":[[8,"RNS.Link.set_packet_callback",false]],"set_proof_requested_callback() (rns.destination method)":[[8,"RNS.Destination.set_proof_requested_callback",false]],"set_proof_strategy() (rns.destination method)":[[8,"RNS.Destination.set_proof_strategy",false]],"set_ratchet_interval() (rns.destination method)":[[8,"RNS.Destination.set_ratchet_interval",false]],"set_remote_identified_callback() (rns.link method)":[[8,"RNS.Link.set_remote_identified_callback",false]],"set_resource_callback() (rns.link method)":[[8,"RNS.Link.set_resource_callback",false]],"set_resource_concluded_callback() (rns.link method)":[[8,"RNS.Link.set_resource_concluded_callback",false]],"set_resource_started_callback() (rns.link method)":[[8,"RNS.Link.set_resource_started_callback",false]],"set_resource_strategy() (rns.link method)":[[8,"RNS.Link.set_resource_strategy",false]],"set_retained_ratchets() (rns.destination method)":[[8,"RNS.Destination.set_retained_ratchets",false]],"set_timeout() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.set_timeout",false]],"set_timeout_callback() (rns.packetreceipt method)":[[8,"RNS.PacketReceipt.set_timeout_callback",false]],"should_use_implicit_proof() (rns.reticulum static method)":[[8,"RNS.Reticulum.should_use_implicit_proof",false]],"sign() (rns.destination method)":[[8,"RNS.Destination.sign",false]],"sign() (rns.identity method)":[[8,"RNS.Identity.sign",false]],"stale_grace (rns.link attribute)":[[8,"RNS.Link.STALE_GRACE",false]],"stale_time (rns.link attribute)":[[8,"RNS.Link.STALE_TIME",false]],"teardown() (rns.link method)":[[8,"RNS.Link.teardown",false]],"to_file() (rns.identity method)":[[8,"RNS.Identity.to_file",false]],"track_phy_stats() (rns.link method)":[[8,"RNS.Link.track_phy_stats",false]],"transport (class in rns)":[[8,"RNS.Transport",false]],"transport_enabled() (rns.reticulum static method)":[[8,"RNS.Reticulum.transport_enabled",false]],"truncated_hash() (rns.identity static method)":[[8,"RNS.Identity.truncated_hash",false]],"truncated_hashlength (rns.identity attribute)":[[8,"RNS.Identity.TRUNCATED_HASHLENGTH",false]],"unpack() (rns.messagebase method)":[[8,"RNS.MessageBase.unpack",false]],"validate() (rns.identity method)":[[8,"RNS.Identity.validate",false]]},"objects":{"RNS":[[8,0,1,"","Buffer"],[8,0,1,"","Destination"],[8,0,1,"","Identity"],[8,0,1,"","Link"],[8,0,1,"","MessageBase"],[8,0,1,"","Packet"],[8,0,1,"","PacketReceipt"],[8,0,1,"","RawChannelReader"],[8,0,1,"","RawChannelWriter"],[8,0,1,"","RequestReceipt"],[8,0,1,"","Resource"],[8,0,1,"","Reticulum"],[8,0,1,"","Transport"]],"RNS.Buffer":[[8,1,1,"","create_bidirectional_buffer"],[8,1,1,"","create_reader"],[8,1,1,"","create_writer"]],"RNS.Channel":[[8,0,1,"","Channel"]],"RNS.Channel.Channel":[[8,1,1,"","add_message_handler"],[8,1,1,"","is_ready_to_send"],[8,2,1,"","mdu"],[8,1,1,"","register_message_type"],[8,1,1,"","remove_message_handler"],[8,1,1,"","send"]],"RNS.Destination":[[8,3,1,"","RATCHET_COUNT"],[8,3,1,"","RATCHET_INTERVAL"],[8,1,1,"","accepts_links"],[8,1,1,"","announce"],[8,1,1,"","app_and_aspects_from_name"],[8,1,1,"","clear_default_app_data"],[8,1,1,"","create_keys"],[8,1,1,"","decrypt"],[8,1,1,"","deregister_request_handler"],[8,1,1,"","enable_ratchets"],[8,1,1,"","encrypt"],[8,1,1,"","enforce_ratchets"],[8,1,1,"","expand_name"],[8,1,1,"","get_private_key"],[8,1,1,"","hash"],[8,1,1,"","hash_from_name_and_identity"],[8,1,1,"","load_private_key"],[8,1,1,"","register_request_handler"],[8,1,1,"","set_default_app_data"],[8,1,1,"","set_link_established_callback"],[8,1,1,"","set_packet_callback"],[8,1,1,"","set_proof_requested_callback"],[8,1,1,"","set_proof_strategy"],[8,1,1,"","set_ratchet_interval"],[8,1,1,"","set_retained_ratchets"],[8,1,1,"","sign"]],"RNS.Identity":[[8,3,1,"","CURVE"],[8,3,1,"","KEYSIZE"],[8,3,1,"","RATCHETSIZE"],[8,3,1,"","RATCHET_EXPIRY"],[8,3,1,"","TRUNCATED_HASHLENGTH"],[8,1,1,"","current_ratchet_id"],[8,1,1,"","decrypt"],[8,1,1,"","encrypt"],[8,1,1,"","from_bytes"],[8,1,1,"","from_file"],[8,1,1,"","full_hash"],[8,1,1,"","get_private_key"],[8,1,1,"","get_public_key"],[8,1,1,"","get_random_hash"],[8,1,1,"","load_private_key"],[8,1,1,"","load_public_key"],[8,1,1,"","recall"],[8,1,1,"","recall_app_data"],[8,1,1,"","sign"],[8,1,1,"","to_file"],[8,1,1,"","truncated_hash"],[8,1,1,"","validate"]],"RNS.Link":[[8,3,1,"","CURVE"],[8,3,1,"","ESTABLISHMENT_TIMEOUT_PER_HOP"],[8,3,1,"","KEEPALIVE"],[8,3,1,"","KEEPALIVE_TIMEOUT_FACTOR"],[8,3,1,"","STALE_GRACE"],[8,3,1,"","STALE_TIME"],[8,1,1,"","get_age"],[8,1,1,"","get_channel"],[8,1,1,"","get_establishment_rate"],[8,1,1,"","get_expected_rate"],[8,1,1,"","get_mdu"],[8,1,1,"","get_mode"],[8,1,1,"","get_mtu"],[8,1,1,"","get_q"],[8,1,1,"","get_remote_identity"],[8,1,1,"","get_rssi"],[8,1,1,"","get_snr"],[8,1,1,"","identify"],[8,1,1,"","inactive_for"],[8,1,1,"","no_data_for"],[8,1,1,"","no_inbound_for"],[8,1,1,"","no_outbound_for"],[8,1,1,"","request"],[8,1,1,"","set_link_closed_callback"],[8,1,1,"","set_packet_callback"],[8,1,1,"","set_remote_identified_callback"],[8,1,1,"","set_resource_callback"],[8,1,1,"","set_resource_concluded_callback"],[8,1,1,"","set_resource_started_callback"],[8,1,1,"","set_resource_strategy"],[8,1,1,"","teardown"],[8,1,1,"","track_phy_stats"]],"RNS.MessageBase":[[8,3,1,"","MSGTYPE"],[8,1,1,"","pack"],[8,1,1,"","unpack"]],"RNS.Packet":[[8,3,1,"","ENCRYPTED_MDU"],[8,3,1,"","PLAIN_MDU"],[8,1,1,"","get_q"],[8,1,1,"","get_rssi"],[8,1,1,"","get_snr"],[8,1,1,"","resend"],[8,1,1,"","send"]],"RNS.PacketReceipt":[[8,1,1,"","get_rtt"],[8,1,1,"","get_status"],[8,1,1,"","set_delivery_callback"],[8,1,1,"","set_timeout"],[8,1,1,"","set_timeout_callback"]],"RNS.RawChannelReader":[[8,1,1,"","__init__"],[8,1,1,"","add_ready_callback"],[8,1,1,"","remove_ready_callback"]],"RNS.RawChannelWriter":[[8,1,1,"","__init__"]],"RNS.RequestReceipt":[[8,1,1,"","concluded"],[8,1,1,"","get_progress"],[8,1,1,"","get_request_id"],[8,1,1,"","get_response"],[8,1,1,"","get_response_time"],[8,1,1,"","get_status"]],"RNS.Resource":[[8,1,1,"","advertise"],[8,1,1,"","cancel"],[8,1,1,"","get_data_size"],[8,1,1,"","get_hash"],[8,1,1,"","get_parts"],[8,1,1,"","get_progress"],[8,1,1,"","get_segments"],[8,1,1,"","get_transfer_size"],[8,1,1,"","is_compressed"]],"RNS.Reticulum":[[8,3,1,"","ANNOUNCE_CAP"],[8,3,1,"","LINK_MTU_DISCOVERY"],[8,3,1,"","MINIMUM_BITRATE"],[8,3,1,"","MTU"],[8,1,1,"","blackhole_sources"],[8,1,1,"","get_instance"],[8,1,1,"","interface_discovery_sources"],[8,1,1,"","link_mtu_discovery"],[8,1,1,"","publish_blackhole_enabled"],[8,1,1,"","remote_management_enabled"],[8,1,1,"","required_discovery_value"],[8,1,1,"","should_use_implicit_proof"],[8,1,1,"","transport_enabled"]],"RNS.Transport":[[8,3,1,"","PATHFINDER_M"],[8,1,1,"","await_path"],[8,1,1,"","deregister_announce_handler"],[8,1,1,"","has_path"],[8,1,1,"","hops_to"],[8,1,1,"","next_hop"],[8,1,1,"","next_hop_interface"],[8,1,1,"","register_announce_handler"],[8,1,1,"","request_path"]]},"objnames":{"0":["py","class","Python class"],"1":["py","method","Python method"],"2":["py","property","Python property"],"3":["py","attribute","Python attribute"]},"objtypes":{"0":"py:class","1":"py:method","2":"py:property","3":"py:attribute"},"terms":{"":[0,2,5,7,11,12,13,14],"0":[0,2,5,8,11,12,13],"00":[11,12],"00000000":11,"00000100":11,"00000111":11,"01":11,"01010000":11,"02":2,"05":0,"0536":12,"06915":5,"08":[0,12],"0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1":12,"0x0101":0,"0x20":0,"0x7d":0,"0x7e":0,"0x91c421ddfb8a30a49a71d63447ddb54cebe3465":10,"0xf000":[0,8],"1":[0,2,5,8,11,12,14],"10":[5,11,12],"100":[0,5,11],"1000":0,"10000000":11,"1024":0,"109":14,"11":11,"115":11,"115200":[0,5,12],"1178a8f1fad405bf2ad153bf5036bdfd":12,"118":5,"12":[2,5,12],"1200":11,"125":5,"125000":5,"127":5,"128":[7,8,11],"13":12,"13425ec15b621c1d928589718000d814":[7,11],"14":5,"15":5,"150":[5,12],"150m":5,"15kb":14,"15m":12,"16":[5,7,11,12,14],"1625":5,"1625000":5,"167":11,"168":14,"17":12,"1726dbad538775b5bf9b0ea25a4079c8":12,"18":12,"1800":8,"187":12,"192":14,"1b03013c25f1c2ca068a4f080b844a10":12,"1h":12,"2":[0,2,5,8,11,12],"20":[5,11,12],"200":[5,12],"201":5,"2014":13,"2016":[6,13],"2022":13,"2023":[2,12],"2026":[6,14],"21":2,"22":5,"2225fdeecaf6e2db4556c3c2d7637294":12,"23":12,"2316":12,"23h":12,"24":[5,12],"2400000000":5,"25":[0,4,13],"250":14,"255":[5,12],"25519":8,"256":[5,7,8,11,12,13],"2592000":8,"27":12,"29":5,"297":[11,13],"29716":5,"2b489d06eaf7c543808c76a5332a447d":12,"2b9ec651326d9bc274119054c70fb75":12,"2d03725b327348980d570f739a3a5708":12,"2d882c5586e548d79b5af27bca1776dc":12,"2f":0,"2owjajquafianpecac":2,"3":[0,2,5,9,11,12,13],"30":[5,8,12],"30602def3b3506a28ed33db6f60cc6c9":12,"32":[2,8,11],"3278":5,"327c1b2f87c9353e01769b01090b18f2":14,"32m":12,"33":5,"34":[5,14],"360":[5,8],"3600":[0,5],"37428":12,"37429":12,"38":12,"383":8,"3865":12,"399ea050ce0eed1816c300bcb0840938":12,"3a4f8b9c1d2e3f4g5h6i7j8k9l0m1n2o":12,"3b87":5,"4":[8,11,12],"40m":12,"4242":[2,5],"4251":5,"42671":5,"430":11,"4343":5,"44":13,"44318":5,"45":[0,11],"46":12,"464":8,"465":11,"469":12,"48555":5,"49":12,"49555":5,"4965":12,"4e":5,"4faf1b2e0a077e6a9d92fa051f256038":11,"4g":14,"4ghz":5,"5":[0,5,8,11,12,13,14],"500":[5,8,11,13,14],"5001":5,"51":[5,11],"512":[5,8,11,13],"52":12,"521c87a83afb8f29e4455e77930b973b":12,"5245a8efe1788c6a1cd36144a270e13b":12,"55":5,"56":12,"564":0,"56m":12,"5757":5,"5858":5,"59":12,"5caf":5,"5d78":5,"5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq":5,"6":[5,8,12],"60":[0,5],"600":5,"63":12,"64":[2,11,12],"68a4aa91ac350c4087564e8a69f84e86":12,"7":[2,5,11,12],"71":14,"71e5":5,"72":5,"720":[5,8],"7200":5,"73":[5,12],"73cbd378bb0286ed11a707c13447bb1":12,"74":12,"74195":5,"781":12,"7822":12,"7a55144adf826958a9529a3bcf08b149":12,"8":[0,5,12],"80":[10,12],"8001":5,"809":12,"83":[11,12],"83b7328926fed0d2e6a10a7671f9e237":14,"84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w":10,"86":12,"865":5,"865600000":5,"867":5,"867200000":5,"868":11,"88":5,"89":5,"8dd57a738226809646089335a6b03695":12,"9":[2,8,12],"900":11,"9037":12,"921600":12,"941bed5e228775e5a8079fc38b1ccf3f":12,"96":11,"9600":0,"984b74a3f768bef236af4371e6f248cd":12,"99":11,"99714":5,"9fb6d773498fb3feda407ed8ef2c3229":12,"9h":12,"A":[0,2,4,5,6,7,8,9,11,12],"AND":6,"AS":6,"And":[0,14],"As":[2,3,5,8,9,10,11,12,13],"At":[2,11],"BE":6,"BUT":6,"Be":[8,12,14],"But":[10,11,14],"By":[0,2,5,8,11,12,14],"FOR":6,"For":[2,4,5,7,8,11,12,13],"IN":[0,6,8],"If":[0,2,3,5,7,8,9,10,11,12,13,14],"In":[0,2,3,4,5,7,8,9,11,12,13],"It":[0,2,3,5,7,8,9,11,12,13,14],"NO":6,"NOT":6,"No":[0,2,5,7,11,12,13,14],"Not":4,"OF":6,"OR":6,"Of":[7,11],"On":[0,2,5,7,12,14],"One":[2,3,8,11,14],"Or":[4,5,12,13],"THE":6,"TO":6,"That":[9,11,14],"The":[0,2,3,4,5,6,7,8,9,10,13],"Then":[0,2],"There":[2,7,11,12,14],"These":[2,5,7,8,9,11,12],"To":[0,2,3,4,5,7,11,12,13],"WITH":6,"Will":8,"With":[4,5,7,9,11,12,14],"_":11,"__":11,"______":11,"_______":11,"________":11,"________________":11,"__future__":0,"__init__":[0,8],"__main__":0,"__name__":0,"__str__":0,"a4d":5,"a79f":5,"aarch64":2,"ab":0,"abil":[2,3,4,6,12,13],"abl":[0,2,5,8,11,12],"abolish":14,"abort":[0,5],"about":[0,2,3,5,7,8,11,12,14],"abov":[2,3,5,6,11,12],"absolut":[5,10,13,14],"abstract":[7,8,11,14],"abstractmethod":8,"abund":[3,14],"abus":12,"accept":[5,8,10,11,12,14],"accept_al":[0,8],"accept_app":8,"accept_non":8,"accepts_link":8,"access":[2,4,5,7,8,12,14],"access_point":[5,7],"accid":[9,14],"accommod":[8,11],"accomod":14,"accord":[0,2,7,11],"accordingli":[0,5],"account":[7,14],"achiev":[2,5,7,8,11,13],"acknowledg":[7,13],"across":[0,3,7,8,11,12,14],"act":[2,5,8,11,12,14],"action":[0,6,12],"activ":[0,2,5,8,9,11],"actor":[11,12,14],"actual":[0,2,5,7,11,12,14],"ad":[0,3,4,5,7,8,9,11,12,13,14],"adapt":[2,3,14],"add":[0,2,5,7,8,12],"add_argu":0,"add_message_handl":[0,8],"add_ready_callback":8,"addict":14,"addit":[3,5,7,8,9,11,12,13],"addition":[2,3,5,11],"addr":12,"address":[0,2,4,5,8,11,12,13],"adher":8,"adjust":[2,8,14],"admin":5,"administr":[7,9,11,12,14],"adopt":11,"adress":[8,11],"advanc":[9,11],"advantag":8,"advers":13,"adversari":[2,7,10,14],"advertis":[0,5,8],"advic":10,"advis":[5,11],"ae":[8,11,13],"af73":5,"affect":[2,5,14],"affili":9,"afford":7,"after":[0,2,5,7,8,11,12],"afterthought":14,"again":[5,11,12],"against":[2,5,11,14],"agenc":[4,11],"agent":[11,14],"agnost":[7,11],"agnostic":[11,14],"ago":12,"agreement":14,"ahead":7,"ai":14,"aim":[2,4,11],"air":[2,3],"airmax":3,"airtim":[5,7,14],"airtime_limit_long":5,"airtime_limit_short":5,"akin":11,"algorithm":[6,7,14],"alic":11,"alien":14,"align":[2,12,14],"aliv":[8,11],"all":[0,2,3,4,5,6,7,8,9,10,11,12,13,14],"allevi":3,"alloc":[5,7,8,11,12],"allow":[0,2,3,5,7,8,9,11,12,13,14],"allow_al":[0,8],"allow_list":8,"allow_non":8,"allowed_hash":12,"allowed_ident":12,"allowed_list":8,"almost":[3,5,11,12,14],"alon":5,"along":[5,8,11,12],"alongsid":7,"alreadi":[0,2,3,7,8,9,11,12,14],"also":[0,2,3,4,5,7,8,9,11,12,13,14],"alter":[2,8,11],"altern":[0,2,5,12],"although":[2,11,13],"alwai":[2,5,7,8,11,12,14],"am":14,"amateur":[5,13],"among":14,"amongst":6,"amount":[0,5,7,8,11,13,14],"amsterdam":[5,12],"an":[0,2,3,5,6,7,8,9,11,12,13,14],"analog":[9,14],"analyt":10,"anchor":4,"android":[4,5,9,12],"ani":[0,2,3,5,6,7,8,9,10,11,12,13],"annot":0,"annouce_cap":5,"announc":[4,7,8,9,12],"announce_cap":[5,8],"announce_handl":0,"announce_interv":5,"announce_packet_hash":8,"announce_rate_grac":5,"announce_rate_penalti":5,"announce_rate_target":5,"announced_ident":[0,8],"announceloop":0,"announcesampl":0,"anonym":[2,7,8,11,13],"anoth":[7,8,11,12,14],"answer":[11,12,14],"antenna":[3,14],"anxieti":14,"anymor":[2,14],"anyon":[0,2,3,5,7,8,9,11,12,14],"anyth":[3,5,9,11,12,13,14],"anywher":[0,5,14],"ap":5,"api":[2,4,11,13,14],"apk":2,"app":[0,2,8,9,11,14],"app_and_aspects_from_nam":8,"app_data":[0,8],"app_nam":[0,8],"app_timeout":0,"appear":14,"append":[0,11],"appli":[5,8,11,14],"applic":[0,5,7,8,9,11,12,13,14],"approach":[2,3,7,11,12],"appropri":[5,7,14],"approv":[7,11,14],"approxim":[5,12],"april":2,"apt":2,"ar":[0,2,3,5,7,8,9,10,11,12,13,14],"arbit":14,"arbitrari":[8,11,12,13],"arch":[2,14],"architect":[10,14],"architectur":[2,4,9],"archiv":9,"area":[2,3,5,7,11,13],"arg":0,"argon":0,"argpars":0,"argument":[0,8,12],"argumentpars":0,"aris":6,"arm64":4,"armi":14,"armor":14,"around":[2,5,11,14],"arrai":2,"arriv":[0,11,14],"art":14,"artifici":6,"arx":12,"ask":[0,2,3,8,9,14],"aspect":[0,2,3,5,7,8,11,12],"aspect_filt":[0,8],"assert":14,"assign":[0,7,11,12,14],"assist":9,"associ":[6,8,11,12],"assum":[5,7,11,14],"assumpt":[7,10,14],"assuredli":14,"asymmetr":[11,12,13],"asynchron":[7,14],"attach":[9,12],"attached_interfac":8,"attack":2,"attain":2,"attempt":[0,2,3,8,12],"attent":[10,14],"attribut":8,"atx":12,"auth":12,"authent":[5,7,8,9,11,12,13],"author":[6,11,12,14],"authorit":11,"auto":[2,3,4,8,11,12],"auto_compress":8,"autoconfigur":13,"autoconnect_discovered_interfac":[5,12],"autodiscov":5,"autoinstal":[3,12],"autointerfac":[2,3,5,12],"autom":[2,3,4,9,10,11],"automat":[0,2,5,7,8,9,11,12,13,14],"autonom":[7,11,14],"autonomi":[13,14],"avail":[0,2,3,4,5,7,8,9,11,12,13,14],"averag":11,"avoid":[3,11,12],"awai":[0,5,11,12,14],"await_path":8,"awar":[2,5,11],"ax":[4,13],"ax25kissinterfac":5,"b":[0,12],"b32":5,"back":[0,5,11,13,14],"backbon":[3,4,7,12,14],"backboneinterfac":[2,5,12],"backend":[5,11],"background":[2,5,12],"backhaul":[3,7],"backup":12,"balanc":5,"band":[3,11,14],"bandwidth":[2,4,5,7,8,9,11,12,13],"bar":14,"bare":[0,5,14],"barrier":[5,11,14],"base":[4,5,7,8,9,11,12,13,14],"base32":[5,12],"base64":12,"bash":5,"basi":[5,8,11,12,13],"basic":[0,2,4,5,7,8,12],"batteri":14,"baud":[5,12],"baud_flash":12,"baudrat":0,"bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6":10,"bc7291552be7a58f361522990465165c":12,"beacon":5,"beast":14,"beat":14,"beauti":9,"becaus":[7,11,14],"becki":0,"becom":[0,2,5,7,8,11,14],"been":[0,2,3,5,7,8,9,10,11,12,13,14],"befor":[0,2,5,7,8,10,11,12,14],"beg":14,"begin":[0,3,8,14],"begun":8,"behalf":[5,7],"behav":[3,9],"behavior":14,"behaviour":[2,5,12],"behind":[2,5,10,11,14],"being":[2,5,8,11,14],"beings":[6,11],"belief":11,"believ":14,"belong":[7,11,12,14],"below":[3,5,12],"bend":14,"benefici":[5,12],"berlin":14,"best":[2,7,11,14],"better":[2,5,7,10,11,14],"between":[0,5,7,8,9,11,12,13,14],"bi":[8,11],"bidirect":11,"big":14,"bill":14,"billion":[7,11],"billionair":14,"bin":[2,5,12],"binari":[0,2,5,7,8,11,12,14],"bind":5,"bit":[0,2,5,7,8,9,11,12,13,14],"bitcoin":10,"bitrat":[0,5,8],"blackhol":[2,4,7,8,11],"blackhole_sourc":[8,12],"blackholed_ident":12,"blackholeupdat":12,"ble":5,"blindli":[12,14],"blob":[0,11],"block":[2,5,7,8,9,11,12,14],"blockchain":14,"blocklist":12,"blood":14,"blueprint":14,"bluetooth":12,"board":[2,4,5,9,11,13],"boat":14,"bogu":5,"boil":3,"bond":14,"book":14,"bookworm":4,"bool":8,"boot":[2,12],"bootstrap":[4,5,12],"bootstrap_onli":[2,5],"borrow":14,"bot":9,"both":[0,2,3,5,7,8,9,11,12,13],"bounc":[2,14],"bound":[7,14],"boundari":[5,7,11],"box":3,"break":[2,8,11,14],"breath":[2,14],"breviti":12,"bridg":[3,5],"briefli":[3,11],"bring":[5,12],"brittl":[2,14],"broad":[2,3],"broadcast":[2,4,5,7,8,11,12,14],"broadcast_destin":0,"broadcastloop":0,"broader":[2,11],"broken":[2,14],"brought":[5,12],"brows":[9,14],"browser":[9,14],"buffer":[4,5,8,13],"bufferedread":8,"bufferedrwpair":8,"bufferedwrit":8,"bufferexampl":0,"bug":[9,10],"bui":14,"build":[0,3,4,5,9,11,13,14],"builder":14,"built":[2,5,7,9,11,12,13,14],"bulletin":9,"bundl":0,"bureaucraci":14,"bureaucrat":[13,14],"burst":5,"button":14,"bw":12,"bypass":[10,14],"byte":[0,4,7,8,11,12,13],"bytes":0,"c":[0,6,12],"c50cc4e4f7838b6c31f60ab9032cbc62":12,"c89b4da064bf66d280f0e4d8abfd9806":12,"cabl":[5,14],"cach":[5,7,12],"cafe":14,"cage":14,"calcul":[7,8,11,12],"call":[0,7,8,9,11,13,14],"callabl":[0,8],"callback":[0,8],"callsign":5,"can":[0,2,3,4,5,7,8,9,10,11,12,14],"cancel":8,"candid":7,"cannot":[0,2,5,7,13,14],"cap":5,"capabl":[0,2,5,7,11],"capac":[2,3,5,7,8,11],"capit":14,"captur":14,"car":7,"carambola":0,"card":14,"care":[2,7,8,12,13,14],"carefulli":2,"cargo_build_target":2,"carri":[5,7,8,11,12,13,14],"carrier":[4,7,13],"case":[0,2,3,5,7,11,12],"castl":14,"cat":12,"categori":3,"caus":[2,5],"caution":5,"cb":[8,11],"cbc":[11,13],"cdma":5,"ceas":14,"cell":7,"cellular":14,"cement":14,"censor":[11,12,14],"censorship":[11,13],"center":4,"central":[2,3,5,7,9,11,12,14],"centralis":11,"ceo":14,"certain":[0,5,7,10,11,12,14],"certif":14,"chain":[5,14],"challeng":[2,9,11,14],"chanc":3,"chang":[0,2,5,8,11,12,13,14],"channel":[2,4,5,7,8,10,11,13,14],"channelarg":0,"channelexampl":0,"chaotic":14,"chapter":[2,3,5,7,8,9,11,12,13],"charact":[0,5],"characterist":[5,7,11,14],"charg":6,"charter":11,"chase":14,"chat":4,"cheap":[3,5,11],"cheapli":2,"check":[0,2,8,11,12,14],"checksum":[8,13],"choic":[2,7,14],"choke":14,"choos":[0,2,5,9,11,14],"chose":11,"chosen":11,"chunk":0,"cific":5,"ciphertext":8,"ciphertext_token":8,"circl":14,"circumst":[10,11,14],"citi":14,"cl":0,"claim":[6,11],"clariti":14,"class":[0,7,8,13],"clear":[0,5,8,12,14],"clear_default_app_data":8,"clear_screen":0,"clearli":14,"client":[0,3,4,8,12,14],"client_buffer_readi":0,"client_connect":0,"client_disconnect":0,"client_ident":0,"client_loop":0,"client_message_receiv":0,"client_packet_receiv":0,"client_request":0,"climat":14,"clone":11,"close":[0,7,8,12],"closed_callback":8,"closer":[9,11],"closest":11,"cloth":14,"cloud":[4,5,9],"cluster":11,"co":[3,5,13],"code":[2,3,4,5,7,9,10,12,13,14],"codingr":5,"coexist":7,"coffe":14,"coher":14,"collabor":11,"collaps":[2,14],"collect":[2,10],"collis":7,"colon":14,"columba":4,"com":[0,10,14],"combin":[2,4,9,11,14],"combinatori":14,"come":[2,5,7,11,14],"comma":[5,12],"command":[0,2,5,9,12],"commend":14,"comment":[5,12],"commerci":14,"commit":[2,9],"committe":14,"common":[0,2,3,4,7,11,12,13,14],"commonli":[3,5],"commun":[0,2,4,5,7,8,9,10,11,12,13,14],"communica":5,"compani":14,"compar":[7,14],"compass":14,"compat":[0,2,3,5,8,9,11,12,13],"compet":14,"compil":2,"complain":14,"complet":[0,2,3,5,7,8,9,11,12,13],"complex":[2,5,10,11,14],"compli":7,"compon":[3,10,11,14],"compos":11,"comprehens":[9,10],"compress":[0,8,11,12,13],"compromis":[11,14],"comput":[2,5,11,13,14],"computation":[5,12],"concaten":8,"conceiv":[2,3],"concept":[4,11,12,14],"conceptu":4,"concern":14,"concert":11,"conclud":[0,8],"concret":14,"concurr":[3,11,12],"condit":[2,6,11,13,14],"conduit":14,"conf":[2,9],"config":[0,2,5,7,12,14],"configarg":0,"configdir":8,"configpath":0,"configur":[0,2,3,4,7,8,11,13],"configuraion":3,"configure_devic":0,"confirm":[7,11,13,14],"conflict":[2,7],"confront":14,"confus":[3,11],"congest":11,"conglomer":14,"conjunct":5,"connect":[0,3,4,6,8,10,11,12,13,14],"conscienc":14,"conscript":14,"consequ":[7,11],"conserv":5,"consid":[0,2,5,8,9,11,12,13,14],"consider":[4,11],"consist":11,"consol":12,"constant":[8,14],"constantli":[11,14],"constitut":[2,11],"constrain":[7,8],"constraint":14,"construct":[11,13,14],"constructor":0,"consum":[7,8,14],"consumpt":[7,14],"contact":[7,9,11,14],"contain":[0,5,7,8,11,12],"contempl":14,"contend":11,"content":[0,2,7,9,12],"context":[2,11,12,14],"contin":[0,2,14],"continu":[5,8,10,12,13,14],"contract":6,"contrari":14,"contribut":[4,6,7,10],"control":[0,2,3,4,7,8,9,11,12,13,14],"convei":[0,14],"conveni":[0,12,14],"convent":[0,7],"converg":[2,7,11,14],"convers":[9,11,14],"cook":2,"coordin":[5,7,8,11,13,14],"copi":[6,12],"copyright":6,"core":[7,11,12,13,14],"corner":14,"corpor":14,"correct":[0,5,7,11],"correctli":[0,7],"correspond":[7,11,14],"cost":[3,4,5,11,13],"could":[0,2,5,7,8,11,12,13,14],"count":[9,11,14],"counter":0,"cours":[2,5,7,9,11,14],"coven":14,"cover":[2,3,7,11,13],"coverag":7,"cpu":[0,5,7,11],"cpuinfo":12,"cr":12,"craft":14,"craftsman":14,"crash":14,"creat":[0,4,5,7,8,9,12,13,14],"create_bidirectional_buff":[0,8],"create_kei":8,"create_read":8,"create_receipt":[0,8],"create_writ":8,"creation":[6,7,9,11,12,13],"creativ":14,"creator":[11,14],"credenti":[5,11],"critic":[7,11,12],"cross":[5,9],"crowd":14,"crucial":7,"cruft":14,"cryptograph":[2,4,5,7,12,13,14],"cryptographi":[2,11,13],"crystal":14,"ctrl":0,"cull":8,"culmin":14,"curl":5,"current":[0,2,4,5,8,9,12,14],"current_download":0,"current_filenam":0,"current_ratchet_id":8,"curv":[7,8,11,13],"curve25519":[7,8,11,13],"custodian":14,"custom":[3,4,8,9,11,13],"custom_network_nam":5,"customis":5,"cut":14,"cynic":14,"d":12,"d56a4fa02c0a77b3575935aedd90bdb2":12,"daemon":[0,2,5,8,9,12],"dai":[8,9,14],"damag":[6,14],"danc":14,"danger":14,"dark":14,"data":[0,2,3,4,5,7,8,11,13,14],"data_buff":0,"data_port":5,"databas":[9,12,14],"databit":[0,5,12],"datacent":2,"datar":5,"dataset":[6,14],"date":[0,2,12],"datetim":0,"db":[0,12],"dbm":[0,5,12],"deal":[5,6],"death":4,"debian":[4,11,12],"debug":[2,12],"decad":[3,10,14],"decentr":[2,4,5,12],"decentralis":13,"decid":[5,7,8,11,14],"decim":5,"decis":[5,7,11,14],"declar":11,"decod":[0,5,12],"decreas":12,"decrypt":[5,7,8,11,12],"dedic":[5,11,13,14],"deep":[2,14],"deepli":14,"def":0,"default":[0,2,3,5,7,8,9,11,12],"default_ifac_s":0,"defin":[0,5,8,11,12,13,14],"definit":[0,2,11,12,14],"defunct":12,"degrad":7,"degre":5,"delai":[5,9,11,12,14],"deleg":11,"delet":14,"delimit":0,"deliv":[0,2,7,8,9,14],"deliveri":[0,7,8,9,13],"demand":[8,14],"demonstr":[0,2,5,14],"deni":14,"depend":[0,3,4,5,7,8,11,12,14],"deploi":[11,14],"depriorit":14,"depth":14,"deregist":8,"deregister_announce_handl":8,"deregister_request_handl":8,"deriv":[2,7,8,11,13],"describ":[3,5,8,11],"descript":[0,12],"descriptor":0,"deseri":0,"deserializ":0,"design":[2,3,4,5,7,9,10,11,12,13],"desir":[0,3,5,11],"desk":14,"desktop":[5,9],"dest_len":0,"destin":[0,2,4,8,12,14],"destination_1":0,"destination_2":0,"destination_clos":0,"destination_hash":[0,8,12],"destination_hexhash":0,"destroi":14,"destruct":14,"detach":5,"detail":[0,2,4,5,8,12,13],"detect":0,"determin":[2,7,8,11,14],"detriment":12,"dev":[0,2,5,12],"devel":2,"develop":[3,4,6,8,9,10,11,13,14],"devic":[0,2,4,5,7,8,9,11,12,14],"dh":8,"dhcp":[3,5,7,12],"di":14,"dict":0,"dictat":[12,14],"dictatorship":14,"dictionari":12,"did":[0,9,14],"differ":[0,2,3,5,7,8,9,11,12,13,14],"diffi":[7,11],"difficult":[2,3,12],"difficulti":[5,12],"digit":[2,3,11,13,14],"digniti":14,"dinner":14,"dir":0,"dire":3,"direct":[0,2,3,7,8,9,11,12],"direction":11,"directli":[2,3,5,6,7,8,9,11,12,13,14],"directori":[0,2,5,7,12,14],"disabl":[5,11,12],"disappear":[5,12,14],"disassoci":11,"discard":[2,8,11],"disciplin":14,"disconnect":[0,2,4,5],"discov":[2,4,5,7,8,9,11,14],"discover":[2,4,12],"discover_interfac":12,"discoveri":[2,4,8,11,12],"discovery_bandwidth":5,"discovery_encrypt":5,"discovery_frequ":5,"discovery_modul":5,"discovery_nam":5,"discovery_port":5,"discovery_scop":5,"discovery_stamp_valu":5,"discrimin":7,"discuss":[3,11],"disk":[0,8,12],"displai":[0,5,7,9,11,12],"disrupt":5,"dissolv":[7,14],"distanc":[3,11,12],"distant":[2,8,11],"distinct":[5,7,11,14],"distinguish":[7,11],"distribut":[0,4,6,7,8,9,11,12,13,14],"dive":2,"divid":8,"divmod":0,"dn":[3,5,9,14],"dna":14,"dnf":2,"do":[0,2,3,5,6,7,8,11,12,14],"document":[2,6,8,9,11,12,13,14],"doe":[0,2,3,4,5,8,9,11,12,14],"doesn":[5,7,14],"dollar":14,"domain":[2,4,5,11,12,13],"domin":14,"don":[0,2,7,8,11,12,14],"donat":4,"done":[0,2,5,11,12,14],"door":14,"dot":[11,12],"doubt":2,"dowload":2,"down":[0,3,5,8,12,14],"download":[0,2,5,7,9,12],"download_began":0,"download_conclud":0,"download_finish":0,"download_start":0,"download_tim":0,"downstream":12,"drag":9,"drastic":12,"draw":14,"drawn":14,"drive":10,"driver":[12,13],"droid":2,"drone":14,"drop":[5,7,8,9,11,12,14],"dsrdtr":0,"dual":[3,12],"dublin":12,"due":0,"dumb":14,"dump":12,"duplex":[11,13],"durat":12,"dynam":[2,5,9,12,14],"dysfunct":10,"e":[0,12],"e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790":12,"e702c42ba8":12,"e7536ee90bd4a440e130490b87a25124":12,"each":[0,2,5,7,8,9,11,12],"earli":[9,14],"earlier":11,"eas":[5,11],"easi":[2,3,5,9,11,12,13],"easier":[2,5,7,12,13],"easiest":[2,3,5,11],"easili":[2,5,7,11,12,13,14],"eastern":11,"ecdh":[11,13],"echo":4,"echo_destin":0,"echo_request":0,"economi":14,"ecosystem":[2,5,9,11,12,14],"ed25519":[11,13],"edit":[2,12],"eeprom":12,"effect":[5,11,12],"effici":[0,2,5,7,8,9,11,12,13,14],"effort":[3,14],"effortlessli":9,"eg":12,"ei":0,"either":[2,3,7,8,11,12,14],"elaps":5,"electromagnet":14,"eleg":14,"element":[7,14],"elif":0,"elimin":[7,14],"ellipt":[7,8,11,13],"els":[0,7,9,10,11,13,14],"email":9,"embed":3,"embrac":14,"emerg":[4,9],"emiss":9,"emploi":[3,11],"empow":13,"empti":[0,14],"emul":2,"enabl":[0,2,3,4,7,8,9,11,12,13,14],"enable_ratchet":8,"enable_remote_manag":12,"enable_transport":[5,11,12],"encapsul":[5,13],"encod":[0,8,9,12,14],"encount":[2,7],"encourag":[2,14],"encrypt":[0,2,4,5,7,8,9,11,12,13],"encrypted_mdu":8,"end":[0,5,7,8,9,11,13],"endless":[5,14],"endpoint":[0,7,8,9,11,14],"energi":[2,14],"enforc":[5,8,11,12],"enforce_ratchet":8,"engag":14,"engin":[2,9,10,14],"enhanc":11,"enough":[2,3,5,9,11],"ensur":[0,2,5,7,8,9,11,12,13,14],"ensurepath":2,"enter":[0,12],"entir":[0,2,7,8,9,11,12,14],"entiti":[7,11,12,14],"entri":[0,2,11,12,14],"entropi":14,"entrypoint":[4,5,12],"enumer":0,"envelop":[8,14],"environ":[2,4,5,7,10,11],"environment":11,"environmentlogg":11,"eof":5,"ephemer":[7,8,11,13],"epub":4,"equal":[7,8,11,14],"equip":[5,7,11],"equival":[5,14],"era":14,"erod":14,"erron":10,"error":[0,2,5,10,12,14],"esc":0,"esc_mask":0,"escap":0,"esp32":3,"especi":[2,3,5],"essenti":[2,5,9,11,12,14],"establish":[0,2,5,7,8,9,12,13,14],"established_callback":8,"establishment_timeout_per_hop":8,"etc":12,"eth0":5,"eth1":5,"ether":14,"ethereum":10,"ethernet":[2,4,5,7,9,11,13,14],"ethic":4,"evapor":14,"even":[0,2,5,7,8,9,11,12,13,14],"event":[5,6,14],"eventu":8,"ever":11,"everi":[0,2,5,7,8,11,12,14],"everydai":2,"everyon":[2,9,10,11,14],"everyth":[0,7,9,10,11,14],"evict":14,"evolv":[2,7,11],"exact":[3,5,11],"exactli":[8,11,14],"exampl":[2,3,4,7,8,11,12,13],"example_util":0,"exampleannouncehandl":0,"exampleconfig":[2,12],"exampleinterfac":0,"exce":[0,5,8],"except":[0,5,8],"excess":[5,12],"exchang":[7,8,11,13],"exclud":[8,11],"execstart":12,"execstartpr":12,"execut":[0,2,5,8,12],"exhaust":[3,9,11,12],"exist":[0,2,3,4,5,7,9,11,12,13],"exit":[0,5,8,12],"expand":[7,9,11,13],"expand_nam":8,"expans":14,"expect":[0,5,8,10,11,12],"expens":[3,5],"experi":[7,9,11,14],"experienc":0,"expir":5,"expiri":[5,8],"explain":[3,8],"explan":[11,12],"explicit":8,"explicitli":[5,7,11,12],"explor":[0,9,11,13,14],"export":[2,12],"expos":[5,8,12],"exposur":5,"express":6,"extend":[0,8],"extens":[5,9,13],"extern":[0,2,5,8,12,13,14],"extra":[2,5,12],"extract":[12,14],"extrem":[2,9,11,12,13,14],"f":[0,2,12],"f4":5,"f53a1c4278e0726bb73fcc623d6ce763":12,"fabric":[4,7],"face":[5,9],"facilit":[9,11],"fact":[2,5,13],"factor":[5,8,12],"fade":14,"fail":[0,2,5,8,14],"failed_callback":[0,8],"failur":[2,5,8,14],"fake":12,"fallaci":4,"fallback":14,"fallen":14,"fals":[0,5,7,8],"famili":2,"familiar":9,"fantasi":14,"far":[2,7,11],"fashion":10,"fast":[4,5,7,8,9,11],"faster":[2,5,11,14],"fastest":[5,11],"fat":14,"favor":2,"favorit":9,"fe80":2,"featur":[2,4,5,7,8,9,10,11,13],"feder":[9,11,12,14],"fedora":2,"feed":[2,8,14],"feedback":[0,4],"feel":[9,14],"fernet":11,"fetch":[5,12],"few":[2,3,5,7,9,11,12,13,14],"fewer":8,"ff":12,"fi":10,"fiber":[3,14],"fibr":13,"field":[11,14],"file":[0,2,3,5,6,7,8,9,11,12,13],"file_resourc":0,"file_s":0,"filelist":0,"filelist_data":0,"filelist_receiv":0,"filelist_timeout_job":0,"filenam":0,"filesync":4,"filetransf":[4,8],"filter":[0,7,11,12],"final":[0,8,11,14],"find":[4,5,9,11,12,14],"find_spec":0,"fine":5,"fingerprint":14,"finish":4,"finit":14,"fire":14,"firewal":[2,5,7,14],"firmwar":[2,3,11,12],"firmware_hash":12,"first":[0,2,5,7,8,11,12,14],"fit":[0,6,14],"five":[0,14],"fix":[4,11,14],"fixed_mtu":5,"flag":[0,2,8,11,12],"flash":12,"flasher":2,"flat":14,"flaw":14,"fleet":11,"flesh":14,"flexibl":[2,3,5,7,9,13],"fli":11,"flicker":14,"flight":8,"flip":14,"float":[0,8],"flood":[5,12],"flow":[0,2,4,5,7,11],"flow_control":5,"fluid":14,"fluiditi":14,"fluidli":14,"flush":0,"focu":12,"focus":[9,11],"folder":0,"follow":[0,2,3,5,6,8,10,11,12,13,14],"forbid":14,"forc":[0,12,14],"forcibli":[8,12],"foreground":2,"forev":14,"forg":14,"forget":[7,12],"fork":9,"form":[2,5,7,8,11,12,14],"format":[0,4,9,12,13],"forth":0,"fortun":14,"forward":[4,5,7,8,9,11,13],"forward_ip":5,"forward_port":5,"found":[0,2,5,8,11,12,14],"foundat":[7,10,11,13,14],"fragil":14,"frame":[0,5],"framework":9,"free":[2,6,7,9,10,13,14],"freedom":[11,14],"freedv":3,"freeli":11,"freq":12,"frequenc":[2,3,5,11,12],"frequent":[5,7],"friend":[2,14],"friendli":9,"from":[0,2,3,4,5,6,7,8,9,10,11,12,13],"from_byt":8,"from_fil":8,"from_identity_hash":8,"fromhex":0,"front":11,"frontend":9,"fruit":0,"ftdi_ft230x_basic_uart_43891ckm":12,"fuel":14,"full":[0,2,5,7,8,9,11,12,13],"full_hash":8,"full_nam":[8,12],"fulli":[0,2,3,5,9,11,12,13],"funcion":8,"function":[0,2,3,4,5,6,7,8,9,10,12,13,14],"fundament":[3,7,11,12,14],"furnish":6,"further":[2,4,5,14],"futur":[4,7,8,9,12,14],"fw":12,"g":[0,11,12],"ga":0,"gain":[3,8,11,14],"galact":11,"gap":2,"gaslit":14,"gatekeep":[11,14],"gatewai":[0,2,5,7,11,12,14],"gbp":12,"gear":14,"gener":[0,2,3,5,7,8,11,12,13,14],"generalis":13,"genuin":12,"geograph":[2,5],"get":[0,3,4,5,7,8,9,12,14],"get_ag":8,"get_channel":[0,8],"get_config_obj":0,"get_data_s":8,"get_establishment_r":8,"get_expected_r":8,"get_external_ip":5,"get_hash":8,"get_inst":8,"get_mdu":8,"get_mod":8,"get_mtu":8,"get_packet_rssi":0,"get_packet_snr":0,"get_part":8,"get_private_kei":8,"get_progress":[0,8],"get_public_kei":8,"get_q":8,"get_random_hash":[0,8],"get_remote_ident":[0,8],"get_request_id":8,"get_respons":8,"get_response_tim":8,"get_rssi":8,"get_rtt":[0,8],"get_seg":8,"get_snr":8,"get_statu":8,"get_transfer_s":8,"geti2p":5,"ghost":14,"ghz":11,"gi":0,"giant":14,"gift":14,"gigabit":[7,14],"gigabyt":13,"github":[0,2],"give":[2,5,11,12,14],"given":[5,7,8,11,12,14],"global":[0,4,5,7,8,11,12,13],"globe":14,"glue":3,"go":[0,5,7,11,14],"goal":[2,4,5,7,9,13],"goe":14,"good":[2,3,7,11,12],"goodwil":14,"got":[0,14],"got_respons":0,"govern":[11,14],"gpio":9,"grace":8,"gracefulli":[5,7],"grade":4,"grant":[6,12,14],"grape":0,"graphic":9,"gratefulli":10,"graviti":14,"great":[2,11,14],"greater":[8,11,12,13],"greatli":[2,5],"green":14,"grid":[9,14],"gross":14,"ground":14,"group":[5,8,9,11],"group_id":5,"groupinstal":2,"grow":[2,14],"grown":14,"growth":2,"guarante":[7,10,11],"guard":14,"guess":5,"gui":9,"guid":[2,3,9,11],"guidelin":2,"guilt":9,"gun":14,"gw":5,"h":12,"ha":[0,3,5,7,8,9,10,11,13,14],"habit":14,"habitat":14,"hack":13,"had":11,"half":[11,13],"hammer":14,"hand":[0,14],"handheld":11,"handl":[0,2,3,5,7,8,9,11,12,13],"handler":[0,8,12,14],"handshak":14,"happen":[0,2,8,11,14],"hard":[2,3,14],"hardcod":14,"hardlin":7,"hardwar":[0,2,4,5,8,9,11,12,13,14],"harm":[4,6],"has_path":[0,8],"hasattr":0,"hash":[0,7,8,11,12,14],"hash1":11,"hash2":11,"hash_from_name_and_ident":8,"hashlib":11,"hashmap":0,"have":[0,2,3,5,7,8,9,10,11,12,13,14],"hazard":8,"hdlc":0,"header":[0,5,8,11],"header_1":11,"header_2":11,"health":4,"hear":[11,14],"heard":[8,9,11,12],"heart":14,"heavi":14,"height":5,"held":[5,12],"helium":0,"hellman":[7,11],"help":[0,2,7,10,11,12,14],"helper":0,"here":[0,2,5,11,12,14],"herebi":6,"heterogen":[2,4,13],"hex":[0,12],"hexadecim":[0,11,12],"hexbyt":12,"hf":[9,14],"hidden":12,"hide":[2,14],"hierarch":[13,14],"hierarchi":14,"high":[3,5,7,11,12,13,14],"higher":[5,7,13],"highest":8,"highli":[5,10,11],"hijack":14,"hint":0,"histori":9,"hit":0,"hkdf":11,"hmac":[11,13],"hoc":[13,14],"hold":[5,8,11,14],"holder":[6,7],"hole":14,"hollow":14,"home":[2,7,9,12,14],"homebrew":5,"hop":[5,7,8,11,12,13,14],"hopefulli":7,"hops_to":8,"host":[0,4,5,7,9,11,12],"hostil":4,"hostnam":[5,14],"hotspot":14,"hour":[0,5,12,14],"hous":[2,14],"how":[0,2,3,5,7,9,11,12,13,14],"howev":[2,5,7,11],"http":[0,9,10,14],"hub":[5,9,12],"hum":14,"human":[0,4,5,6,7,8,10,11],"hundr":[7,9,14],"hungri":3,"hw_mtu":0,"hwrev":12,"hz":[5,12],"i":[0,2,3,4,5,6,7,8,9,10,11,12],"i2p":[2,4,7,9,13],"i2p_tunnel":5,"i2pd":[2,5],"i2pinterfac":[2,5],"ia":12,"ic":3,"ic_burst_freq":5,"ic_burst_freq_new":5,"ic_burst_hold":5,"ic_burst_penalti":5,"ic_held_release_interv":5,"ic_max_held_announc":5,"ic_new_tim":5,"icmp":9,"icon":14,"id":[5,8,11,12],"id_callsign":5,"id_interv":5,"idea":[2,11,12,14],"ideal":[9,13],"ident":[0,2,4,5,7,8,9,12,13],"identif":[4,5,13],"identifi":[0,5,7,8,11,12],"identifyexampl":0,"identity_data":12,"ie":12,"if00":12,"ifac":[0,2,5,7,11,12],"ifac_s":5,"ifconf":0,"ifconfig":12,"ignor":[5,7,8,10,11,12],"ignored_devic":5,"illus":4,"illustr":[0,5,11],"imag":14,"imagin":[7,14],"immedi":[5,12,14],"immens":14,"immort":14,"immut":14,"impact":[5,7,8,11],"impati":14,"imperson":7,"implement":[0,4,5,7,8,9,10,11,14],"impli":6,"implic":[4,5,7],"implicit":[7,8,11],"implicitli":12,"import":[0,2,3,5,7,8,10,11,12],"importantli":[2,14],"importlib":0,"imposs":[11,14],"impract":12,"improv":[2,4,5,9,10,14],"in_fram":0,"in_wait":0,"inactive_for":8,"inadvert":12,"inbound":[0,5,8],"inbox":7,"includ":[0,3,4,5,6,7,8,9,11,13],"inclus":7,"incom":[0,5,8,12],"incompat":[8,11],"incomplet":7,"increas":[5,8,12],"incredibli":14,"incur":5,"indefinit":12,"independ":[4,8,11],"index":[0,2,4],"indic":[0,8],"indiffer":14,"indirectli":[6,11],"individu":[2,5,8,10,11,12,13,14],"inevit":[2,11],"infer":11,"infinit":14,"influx":[5,9],"influxdb":9,"info":[8,11,12,14],"inform":[0,2,4,5,7,8,9,10,11,12,14],"infrastructur":[3,4,5,7,9,11,12],"ingest":14,"ingo":8,"ingress":[0,5],"ingress_control":5,"inhabit":14,"inher":7,"init":2,"initi":[0,5,7,8,11,13],"initialis":[0,8,12],"input":[0,12],"insert":11,"insid":[11,14],"insight":14,"inspect":[2,5,7,11,12],"inspir":14,"instal":[0,4,5,11,12,13],"instanc":[0,4,5,8,9,11,12,14],"instance_control_port":12,"instance_nam":12,"instant":14,"instanti":8,"instantli":12,"instead":[0,2,5,8,11,12,14],"institut":14,"instruct":[2,14],"int":[0,8],"integ":[0,8],"integr":[2,9,11,12,14],"intellig":[6,14],"intend":[2,5,7,11,12],"intens":12,"intent":[7,14],"intention":[9,11],"inter":[2,8,11],"inter_byte_timeout":0,"interact":[0,2,4,7,8,11,12,14],"intercept":7,"interchang":5,"interconnect":[2,5,7,11],"interest":[9,11,14],"interfac":[3,4,7,8],"interface_class":0,"interface_discovery_sourc":[8,12],"interface_en":12,"interfer":[7,12],"intermedi":[7,14],"intermediari":[5,8,11],"intermitt":[5,7,14],"intern":[0,5,8,11,14],"internal_1":5,"internet":[4,5,7,9,11,12,13,14],"internetwork":2,"interoper":[3,7,9,11,13],"interrupt":5,"interv":[5,8,12],"intervent":12,"intiat":0,"intim":14,"introduc":[11,14],"introduct":4,"introductori":4,"intuit":[7,13],"invalid":[0,5,8],"invari":14,"invers":11,"invert":14,"invest":7,"invis":[2,5],"invit":5,"involv":[7,10],"io":3,"iodin":9,"ioerror":0,"iot":3,"ip":[2,3,4,5,7,11,12,13],"ipv4":5,"ipv6":[2,5,12],"irc":9,"irrelev":10,"irrespons":14,"is_compress":8,"is_connected_to_shared_inst":0,"is_open":0,"is_path_respons":8,"is_ready_to_send":[0,8],"isdir":0,"isfil":0,"isinst":0,"ism":[3,11],"isn":14,"isol":[2,5,12],"isp":[5,7,14],"issu":[4,5,7],"its":[3,5,6,7,8,11,12,14],"itself":[4,7,9,11,12,14],"iv":[11,13],"j":[4,12],"jail":12,"javascript":9,"job":0,"join":[0,2,7,9,11],"journei":7,"json":[12,14],"just":[0,2,3,5,7,9,11,13,14],"k":[0,12],"kb":12,"kbp":12,"keep":[0,2,7,8,11,12,13,14],"keepal":[8,11],"keepalive_timeout_factor":8,"kei":[0,4,5,7,8,12,13,14],"kept":[5,7,8,11],"kernel":[5,12,13],"keyboardinterrupt":0,"keyerror":8,"keypad":9,"keypair":[7,11],"keyr":14,"keyset":[11,12,13],"keysiz":8,"keystor":7,"khz":5,"ki":0,"kill":[8,11,14],"kind":[3,5,6,7,9,11,14],"kiss":[3,4,9,12,13],"kiss_fram":5,"kissinterfac":[5,12],"knock":14,"know":[0,2,3,5,7,8,11,14],"knowledg":[7,11],"known":[0,5,8,11,12,14],"ko":10,"krypton":0,"l":[5,12],"labor":14,"lack":11,"laid":11,"lan":5,"landlord":14,"languag":[6,9],"lantern":14,"laptop":[7,14],"larg":[0,3,5,7,8,11,12,13,14],"larger":[7,11,12],"laser":5,"last":[0,5,8,12,14],"last_read_m":0,"last_unit":0,"latenc":[2,7,11,13,14],"later":[0,2,5,9,12],"latest":[0,2,5,8,12],"latest_buff":0,"latest_client_link":0,"latitud":5,"laucnh":2,"launch":[9,12],"law":14,"layer":[3,5,7,8,9,11,12,13,14],"lcd":9,"lead":[2,11,14],"leak":2,"learn":[0,2,6,7,10,11,14],"leas":14,"leash":14,"least":[2,3,5,7,11,12,13],"leav":[7,9,11,14],"ledger":[11,14],"left":[5,8,11,12],"legaci":[7,14],"legal":[5,14],"legisl":5,"legitim":[2,7,12],"len":[0,14],"length":[0,5,8,11],"less":[0,2,3,5,8,11,13,14],"let":[0,2,5,7,9,11,12,14],"level":[3,5,7,11,12],"lever":14,"li":14,"liabil":6,"liabl":6,"liber":[3,4],"liberapai":10,"libffi":2,"librari":[2,9,14],"licens":[4,11,13,14],"lie":14,"life":14,"lifelin":14,"lift":[12,14],"light":[12,14],"lightweight":13,"like":[0,2,3,5,7,8,9,11,12,13,14],"limit":[0,2,3,4,6,7,9,11],"line":[0,2,4,5,9,11,12,13,14],"linger":12,"link":[2,3,4,5,7,8,9,12,13,14],"link_clos":0,"link_establish":0,"link_id":[0,8],"link_mtu_discoveri":8,"linkexampl":0,"linux":[2,3,5,9,11],"liquid":14,"list":[0,2,3,4,5,8,9,11,13,14],"list_deliv":0,"list_fil":0,"list_filt":12,"list_packet":0,"list_receipt":0,"list_timeout":0,"listdir":0,"listen":[0,2,4,9,11,12,14],"listen_ip":5,"listen_on":[2,5],"listen_port":5,"litter":14,"littl":[3,9,11],"live":[2,8,9,14],"lki":11,"lkr":11,"ll":[0,13,14],"llm":9,"ln":12,"load":[0,2,3,5,8,12,13,14],"load_private_kei":8,"load_public_kei":8,"local":[0,2,4,5,7,8,9,11,13,14],"locat":[2,5,7,11,12,14],"lock":14,"log":[0,2,5,12,14],"log_crit":0,"log_error":0,"log_info":0,"log_verbos":0,"logdest":8,"logic":[11,14],"loginctl":12,"loglevel":[0,8,12],"long":[0,2,3,5,7,8,11,12,14],"longer":[0,2,11,12,14],"longest":5,"longitud":5,"look":[0,2,5,7,9,11,12,14],"loop":0,"lora":[2,3,4,7,9,11,13,14],"lorawan":[3,11],"loss":[5,7,11],"lost":14,"lot":[7,11,14],"loudest":14,"low":[2,3,5,7,9,11,13,14],"lower":[0,2,5,12],"lowli":14,"ltu":3,"lunar":4,"lxmf":[4,5,7,8,12],"lxmfy":4,"lxst":4,"m":[0,2,11,12],"mac":[5,11],"machin":[2,6,11,12,14],"machineri":9,"maco":[4,9],"made":[2,5,8,11,14],"mai":[2,5,7,8,9,11,12,14],"mailbox":9,"main":0,"maintain":[2,7,11,12],"mainten":[2,7,11,14],"make":[0,2,3,5,7,9,10,11,12,13,14],"malici":[2,7,11,12],"malinform":10,"manag":[2,4,7,8,9,11,13,14],"mani":[0,2,3,5,7,8,9,11,12,13,14],"manipul":[11,13,14],"manjaro":2,"manner":[7,9],"manual":[0,2,5,7,8,11,12,14],"manufactur":[3,5],"map":[5,9,11,12,14],"mark":[2,6,8,11,13,14],"market":14,"markqvist":[0,10],"markup":9,"mass":14,"master":[0,8,14],"match":[0,5,11,12,14],"materi":9,"math":14,"mathemat":14,"matter":[2,5,7,14],"matur":12,"max":12,"maximum":[0,5,8,11,12],"mayb":14,"mbp":12,"mdu":[0,8],"me":[5,14],"mean":[2,3,5,7,8,11,12,14],"meaning":2,"meantim":8,"measur":[7,11,14],"mechan":[2,4,5,7,12,13],"media":14,"mediev":14,"medium":[0,3,4,5,7,8,9,11,13],"meet":14,"megaphon":14,"member":[2,11],"memori":[2,7,11],"mental":14,"mention":[5,11],"menu":0,"menu_mod":0,"merchant":6,"mere":14,"merg":[6,12],"merit":4,"mesh":[2,5,7,11,12,13,14],"meshchat":4,"meshchatx":4,"messag":[0,2,7,8,9,11,12,14],"message_class":8,"messagebas":[0,4,8],"messagecallbacktyp":8,"messeng":[7,11],"met":[2,14],"metadata":[2,5,11,12,14],"metaphor":14,"metavar":0,"meter":5,"meth":0,"method":[0,2,5,8,11],"methodologi":[11,12],"metric":9,"mevpekyafshak5wr":5,"mhz":[5,11],"mi":0,"microcontrol":11,"micromanag":14,"micron":4,"microwav":7,"might":[2,5,7,11,12,14],"mikrotik":3,"millimet":3,"million":14,"millisecond":[0,7,12,14],"mind":[7,14],"mindset":14,"mine":14,"miner":14,"minim":[3,4,5,11],"minimalsampl":0,"minimum":[0,2,5,8,11,12,14],"minimum_bitr":8,"miniscul":14,"minut":[0,2,5,11,14],"mirror":[7,12],"misconfigur":2,"mislead":[2,14],"miss":[0,2],"missil":14,"mistak":2,"misunderstand":10,"mitig":7,"mix":[4,5,7,12],"mixtur":13,"mobil":[5,7,11],"mode":[0,2,3,4,7,8,9,11,12,13,14],"model":[6,7,12,14],"modem":[4,5,7,8,9,11,13,14],"modem73":9,"moder":5,"modern":[2,3,9,14],"modifi":[5,6,7,11,12],"modul":[0,2,3,4,5,7,11,12,13],"modular":9,"moment":[11,14],"momentarili":5,"monero":10,"monitor":[2,5,9,11,12],"moon":0,"moral":14,"more":[0,2,3,5,7,8,9,10,11,12,13,14],"most":[2,3,5,7,8,9,11,12,14],"mostli":[5,7,11],"motiv":4,"mountain":14,"move":[5,7,11,12,14],"msgtype":[0,8],"mtu":[0,5,8,11,13],"much":[2,5,7,11,12,13,14],"multi":[4,7,9,11,12,13],"multicast":5,"multicast_address_typ":5,"multilater":11,"multipl":[0,5,7,9,11,12],"multiplex":0,"multipoint":11,"multitud":2,"must":[0,2,5,7,8,11,12,14],"mutual":14,"mw":5,"my":[5,11,14],"my_fil":12,"my_ident":12,"my_network":[11,12],"my_network_ident":5,"mycal":5,"myfriend":14,"myriad":11,"mysteri":14,"n":[0,11,12],"name":[0,2,4,5,7,8],"namespac":0,"narg":0,"nat":[2,5],"nativ":[0,7,9],"natur":5,"nearbi":[5,7],"nearest":5,"nears":11,"neat":7,"neccessari":5,"necesarri":5,"necessari":[3,5,7,8,11],"necessarili":11,"need":[0,2,3,4,5,7,8,9,10,11,12,13,14],"neg":2,"neglig":[11,14],"negoti":14,"neighbor":14,"neither":[8,11],"neon":0,"neopixel":12,"net":5,"netcat":5,"network":[0,3,5,8,12,13,14],"network_ident":[5,11,12],"network_nam":[2,5],"neutral":[7,14],"never":[5,7,8,11,14],"new":[0,2,4,7,8,11,12,14],"new_id":12,"new_ident":12,"newer":[8,11],"newest":11,"newli":[5,8,11],"newlin":5,"next":[2,5,8,11,14],"next_hop":8,"next_hop_interfac":8,"nice":14,"nicknam":11,"no1cll":5,"no_data_for":8,"no_inbound_for":8,"no_outbound_for":8,"noauth":12,"nobl":0,"noble_ga":0,"noble_gas":0,"nocheck":12,"node":[2,4,5,12,13],"noid":12,"nois":[8,10,14],"noisi":14,"nomad":4,"nomadnet":9,"nomadnetwork":9,"non":[2,5,8,9,11,14],"none":[0,2,5,8,11,12],"noninfring":6,"nor":[2,14],"normal":[0,2,5,8,11,12],"notabl":9,"notat":[11,12],"note":[0,3,4,5,8,11,12],"noth":[3,7,13,14],"notic":[5,6,11,12],"notif":[0,8],"now":[0,2,11,12,14],"np":12,"nrf52":3,"nt":0,"num":0,"number":[0,2,5,7,8,9,11,12,14],"o":[0,2,5,11,12,13],"object":[0,8,14],"obscur":2,"observ":[7,14],"obsolet":14,"obstacl":14,"obtain":[2,3,6,8,11],"obvious":11,"occupi":14,"occur":[0,5,12,13],"ocean":14,"ocur":8,"odd":0,"ofdm":9,"off":[2,5,7,9,11,12,13,14],"offer":[2,4,5,7,8,9,11,12,14],"offic":7,"offlin":[0,2,7,9],"often":[2,5,7,11,12,14],"oganesson":0,"old":[0,2,3,10,11,14],"older":12,"omit":8,"on_interfac":8,"onc":[0,2,3,5,8,11,12,13,14],"one":[0,2,3,5,7,8,9,11,12,13,14],"ones":[2,5,7,12],"oneself":11,"ongo":9,"onli":[0,2,3,5,7,8,11,12,13,14],"onlin":[0,12,14],"onto":[2,11,14],"opaqu":7,"open":[0,2,3,4,5,7,8,9,10,11,12,13],"open_port":0,"openmodem":[5,13],"openssl":[2,11],"openwrt":4,"oper":[2,3,5,7,8,11,12,13,14],"opinion":10,"opkg":2,"opportun":2,"opportunist":7,"opposit":[0,5],"oppress":14,"opt":11,"optic":[3,13,14],"optim":[2,7,14],"option":[0,2,3,4,7,8,9,11,12,14],"ord":0,"order":[0,8,12],"organ":[2,7,11,12,14],"organis":[5,10],"orient":11,"origin":[0,7,9,11,14],"os":2,"other":[0,2,3,5,6,7,8,9,11,12,14],"otherwis":[0,6,8],"our":[0,5,11,14],"ourselv":7,"out":[0,3,5,6,8,9,11,12,13,14],"outbound":[8,11],"outgo":[0,5,8,11,12],"outlin":[2,3,11],"output":[5,12],"outsid":[8,13,14],"over":[0,3,4,5,7,8,9,10,11,12,13,14],"overal":[11,12],"overcom":11,"overhead":[2,3,5,11,14],"overlai":2,"overli":10,"overlord":14,"overrid":0,"oversight":11,"overview":[4,5],"overwhelm":[5,7,8],"overwrit":12,"own":[0,2,7,8,11,12,13,14],"owner":[0,14],"ownership":14,"p":[0,12],"pack":[0,8],"packag":[0,2,5,9,11],"packb":0,"packed_s":0,"packet":[0,2,4,5,7,8,9,12,13,14],"packet_callback":0,"packet_deliv":0,"packet_hash":0,"packet_receipt":[0,8],"packet_timed_out":0,"packetreceipt":[0,4,8],"pad":[11,13],"page":[4,11,12,14],"pair":[5,8,11,12],"pamac":2,"panic":[0,12,14],"panic_on_interface_error":[0,12],"panopticon":14,"paper":9,"par":[0,2],"paradox":14,"parallel":2,"paralysi":14,"param":0,"paramet":[0,3,4,8,11,12],"paranoia":14,"parasit":14,"pariti":[0,5,12,13],"parity_even":0,"parity_non":0,"parity_odd":0,"pars":0,"parse_arg":0,"parser":[0,4],"part":[0,2,5,7,8,9,11,12,14],"particip":[2,4,5,7,11,12,14],"particular":[0,3,5,6,11,12],"particularli":[5,12],"partner":14,"pass":[0,3,5,7,8,11,12,14],"passphras":[2,5,7,11],"passport":11,"past":12,"patch":14,"path":[0,2,3,5,7,8,11,12,14],"path_respons":8,"pathfinder_m":8,"patient":14,"pattern":[3,4,7,11],"payload":[0,5,8,11,12],"pdf":4,"peac":14,"peach":0,"peer":[0,2,5,8,9,11,12,14],"penalti":5,"pend":[0,11],"peopl":[2,9,11,14],"per":[5,7,8,9,11,12,13,14],"percent":[0,5],"percentag":8,"perfectli":2,"perform":[0,2,5,7,8,9,11,12,14],"perhap":[2,14],"period":[0,5,8,11,12],"peripher":9,"perman":[2,5,12],"permiss":[5,6,14],"permissionless":[11,12],"permit":6,"perpetu":14,"persecut":11,"persist":[5,12,14],"person":[4,5,6,7,10,11],"perspect":[5,7,8,11,13],"pet":0,"petit":14,"philosophi":[10,11,13,14],"phone":[2,4,7,14],"phonebook":9,"photo":14,"phy":12,"physic":[0,2,3,4,5,7,8,9,11,12,13],"pi":[0,4,7,11,12,13,14],"pick":11,"piec":11,"pillar":14,"ping":[12,14],"pip":[0,2,3,5,12],"pip3":2,"pipe":[4,9,13,14],"pipeinterfac":[3,5,9],"pipx":2,"pitfal":11,"pkcs7":[11,13],"pkg":2,"place":[0,2,5,7,11,12,14],"plaform":3,"plain":[0,3,5,8,11,14],"plain_mdu":8,"plaintext":[0,8,14],"plan":[7,11,14],"planet":14,"planetari":[13,14],"platform":[0,3,4,9,11,12,14],"platoform":9,"pleas":[0,2,5,8,12,14],"plenti":[7,11],"plug":[12,14],"plugin":[9,14],"pmr":11,"poetri":14,"point":[2,3,5,7,9,10,11,12,14],"pointer":2,"polici":[12,14],"polit":14,"pomelo":0,"popul":8,"popular":13,"port":[0,2,3,4,5,7,11,13,14],"port0":12,"portabl":[4,5,7,11],"portion":6,"pose":[2,11],"posit":[0,12],"posix":2,"possess":[5,11,14],"possibl":[2,3,5,7,8,9,11,12,13],"possibli":[2,11],"post":[0,4],"postfix":12,"potenti":[0,2,5,10,11,12,13,14],"power":[2,3,4,5,7,9,11,12,13],"powershel":2,"ppp":0,"practic":[7,11,13,14],"pre":[2,7,8,11],"preambl":[5,12],"preced":0,"preciou":7,"precompil":2,"predatori":14,"predict":11,"prefer":[2,10,11],"prefer_ipv6":5,"premis":[7,14],"prepar":[0,11],"prerequisit":8,"presenc":[4,5,8],"present":[5,7,9,11,12,14],"preserv":[2,4,8],"preshar":11,"press":0,"pretend":[9,11],"prettyhexrep":0,"prevent":[5,7,12,14],"previou":0,"previous":[5,8,11],"price":14,"primari":[11,14],"primarili":[5,7,9],"primarlii":2,"primit":[2,4],"principl":[4,7,11,13],"print":[0,5,12],"print_filelist":0,"print_help":0,"print_menu":0,"priorit":[7,11,14],"prioriti":11,"prioritis":[4,5,7,8],"privaci":[2,5,9,14],"privat":[2,5,7,8,9,10,11,12,13,14],"private_ret":2,"privileg":[12,14],"probabl":[0,2,7,11,12,13],"probe":12,"problem":[2,11,12,14],"proc":12,"procedur":[2,8,11],"process":[0,2,3,5,7,8,11,12,14],"process_incom":0,"process_outgo":0,"product":[12,14],"profil":14,"profit":14,"profound":[7,14],"profoundli":14,"program":[0,3,4,5,8,11,13],"program_setup":0,"programm":11,"programmat":11,"progress":[0,8,12,13],"progress_callback":8,"project":[9,10,14],"promis":2,"prompt":[0,2],"proof":[0,5,7,8,11,12,14],"proof_packet":0,"proof_requested_callback":8,"proof_strategi":8,"propag":[4,5,7,8,9,12,14],"proper":2,"properli":2,"properti":[0,7,8],"proport":11,"protect":[2,12,14],"protocol":[2,3,4,5,7,13],"prove":[0,7,11,14],"prove_al":[0,8],"prove_app":8,"prove_non":8,"proven":[8,11],"provid":[0,2,3,4,5,6,7,8,9,11,12,13,14],"provis":[3,12],"prv_byte":8,"pseudo":12,"psycholog":14,"pub_byt":8,"public":[0,4,5,7,8,10,12,13],"public_inform":0,"publicli":[2,5,11,12],"publish":[2,4,5,6,8,11],"publish_blackhol":12,"publish_blackhole_en":8,"publish_ifac":5,"puppet":14,"purchas":[2,11,13],"pure":[4,11],"purg":8,"purpos":[2,3,5,6,7,8,9,11,12,14],"purposefulli":6,"push":[9,14],"put":[0,3,5,12],"py":[0,11,12],"py3":2,"pyca":[2,11],"pyseri":[0,2],"python":[0,4,5,8,11,12,13,14],"python3":[0,2,3],"q":[0,12],"qr":[7,9],"qualiti":[8,12,14],"queri":[0,2,8,12,14],"question":[2,3,5],"queu":[8,12],"queue":[5,11],"quickli":[9,10,11,13],"quiet":[5,12,14],"quinc":0,"quirk":2,"quit":[0,2],"qvist":[6,13],"r":[0,5,11,12],"radic":14,"radio":[4,5,7,8,9,11,12,13,14],"radon":0,"rais":[0,8],"rak":3,"ram":[2,5],"randint":0,"random":[0,8,10,11],"random_text_gener":0,"randomis":11,"randomli":[0,11],"rang":[0,2,3,5,7,11,12,13,14],"rapidli":5,"rare":[2,5],"raspberri":[4,7,11,12,13],"rasperri":2,"ratchet":[8,11],"ratchet_count":8,"ratchet_expiri":8,"ratchet_id_receiv":8,"ratchet_interv":8,"ratchets":8,"ratchets_path":8,"rate":[0,4,8,9,12],"rather":[2,8,9,14],"ratio":8,"raw":[0,3,8],"rawchannelread":[4,8],"rawchannelwrit":[4,8],"rawiobas":8,"rb":0,"rbrowser":4,"re":[0,5,7,8,11,14],"reach":[2,4,5,7,8,12,14],"reachabl":[0,2,5,7,8,9,11,12],"reachable_on":5,"read":[0,2,5,7,8,11,12,13,14],"read_loop":0,"readabl":[0,5,8,11,12,14],"reader":[0,8],"readi":[0,2,3,5,8,13,14],"readili":13,"ready_byt":[0,8],"ready_callback":8,"real":[2,3,5,7,9,13,14],"realiti":[2,10,14],"realiz":14,"realli":[5,8,14],"realm":14,"reappear":5,"reason":[2,5,11,12],"reassembl":11,"reboot":14,"rebroadcast":7,"rebuilt":14,"recal":[0,8,12],"recall_app_data":8,"recap":11,"receipt":[0,7,8,11],"receiv":[0,2,5,7,8,10,11,12,14],"receive_path_respons":8,"receive_stream_id":8,"received_announc":[0,8],"recent":[8,11],"recept":8,"reception_rssi":0,"reception_snr":0,"reception_stat":0,"recip":2,"recipi":[11,14],"reclaim":14,"recogn":[11,14],"recognit":14,"recommend":[0,2,5,11],"recondit":12,"reconnect":[0,7,14],"reconnect_port":0,"reconstruct":11,"record":[2,11],"recoveri":5,"recreat":11,"recurs":[8,11],"reduc":[5,12],"redund":[2,7],"refer":[0,2,4,5,9,12,14],"refin":10,"refresh":12,"refus":7,"regain":2,"regard":11,"region":5,"regist":[0,8,12],"register_announce_handl":[0,8],"register_message_typ":[0,8],"register_request_handl":[0,8],"registrar":14,"registri":14,"regul":5,"regular":12,"regulatori":14,"regurgit":14,"reject":14,"rel":[3,5,7,11],"relai":[2,4],"relat":2,"relationship":[7,11,12,14],"releas":[2,5,8,11,14],"relev":[0,2,3,5,8,11,12,14],"reli":[2,5,7,10,11,12,14],"reliabl":[2,3,5,7,8,11,13,14],"relianc":[2,14],"relief":7,"reload":12,"rem":0,"remain":[5,7,8,9,11,14],"rememb":[7,8,11],"remot":[0,4,8,11],"remote_ident":[0,8],"remote_identifi":0,"remote_management_allow":12,"remote_management_en":8,"remote_p":0,"remotesensor":11,"remov":[8,12,14],"remove_message_handl":8,"remove_ready_callback":8,"render":[9,14],"rent":14,"replac":[0,2,7,8,9,11,12,14],"repli":[0,12],"replic":[3,11],"reply_data":0,"reply_messag":0,"reply_text":0,"report":[5,8,10,12],"repositori":[2,11,14],"repres":[7,11,14],"represent":[0,8,14],"repurpos":2,"reput":[11,12],"request":[4,5,7,8,11,12,13,14],"request_destin":0,"request_fail":0,"request_id":[0,8],"request_packet":0,"request_path":[0,8],"request_receipt":[0,8],"request_receiv":0,"requested_at":[0,8],"requestexampl":0,"requestor":5,"requestreceipt":[4,8],"requir":[0,2,5,7,8,9,11,12,13,14],"require_shared_inst":8,"required_discovery_valu":[8,12],"rerout":14,"resend":8,"reserv":[0,7,8,14],"resid":[5,14],"resili":[2,7,9,12,13,14],"resist":7,"resolut":[2,5,11],"resolv":[4,5,7,11,12],"resourc":[0,2,4,5,7,8,10,12,14],"resource_callback":8,"resource_sending_conclud":0,"resource_strategi":8,"respawn":5,"respawn_delai":5,"respawn_interv":5,"respect":[5,7,13,14],"respond":[0,7,8,12],"respond_to_prob":12,"respons":[4,5,8,11,13,14],"response_callback":[0,8],"response_gener":[0,8],"rest":[7,13,14],"restart":[5,12],"restartsec":12,"restor":[2,5,14],"restrict":[5,6,7,12,14],"result":[0,2,5,11,12],"ret":[4,11],"retain":[5,8],"retained_ratchet":8,"retibb":4,"reticulum":[0,5,7,8],"retipedia":4,"retransmiss":[7,11],"retransmit":[5,11],"retri":[0,8,11],"retriev":[8,12],"return":[0,5,8,12,14],"reveal":[2,8,11,13],"revers":12,"review":11,"revis":12,"revok":14,"revolut":14,"rfe":12,"rich":9,"ridicul":11,"right":[2,5,6,14],"rigid":14,"rington":9,"rippl":14,"risc":4,"risk":11,"riski":14,"rmap":2,"rn":[0,2,3,4,8,11,12,14],"rncp":4,"rnid":[4,11],"rnmon":4,"rnode":[2,4,11,12,13],"rnodeconf":[3,4],"rnodef3b9":5,"rnodeinterfac":[2,3,5,12],"rnodemultiinterfac":5,"rnpath":[2,4,5],"rnphone":9,"rnprobe":[2,4],"rns_bin_dir":12,"rnsd":[2,4],"rnsh":[9,12],"rnspure":[2,11],"rnstatu":[2,4,5,11],"rnstransport":[5,12],"rnx":4,"road":14,"roadmap":[10,14],"roam":[4,5,7],"robot":11,"robust":[2,5,14],"role":7,"roll":5,"rom":12,"room":[9,14],"root":11,"rotat":[8,11,12],"round":[0,8,12],"rout":[2,3,5,7,8,9,11,12,13,14],"router":[2,5,7,12,14],"rpc":12,"rpc_kei":12,"rprogress":0,"rrc":4,"rrcd":9,"rssi":[0,8,12],"rtsct":0,"rtt":[0,8,11],"rttstring":0,"rubber":14,"rule":[2,4,5,7,12,14],"run":[0,2,3,5,7,8,9,11,12,13,14],"runtim":[0,11],"rust":2,"rx":[5,12],"rxb":0,"sa":9,"safe":[11,14],"safeguard":14,"sai":14,"said":11,"same":[0,2,3,5,7,8,9,11,12,14],"sand":14,"satellit":7,"satisfi":11,"save":[8,11,12],"save_error":0,"saved_filenam":0,"saw":9,"scalabl":[12,13],"scale":[11,13,14],"scan":[2,5],"scarc":14,"scarciti":4,"scatter":14,"scenario":[2,5,11],"schedul":8,"scheme":[3,5],"scope":5,"scrape":14,"scratch":[3,14],"screen":0,"script":[2,3,5],"scrutini":11,"seamless":[5,11],"seamlessli":[5,7,9],"search":[4,8,9],"second":[0,5,7,8,9,11,12,13,14],"secreci":[5,8,9,11,13],"secret":[7,11],"section":[2,3,5,7,9,11,12],"secur":[2,4,7,9,11,12,13,14],"see":[0,2,5,7,8,11,12,13,14],"seek":[11,14],"seen":[5,11,14],"segment":[0,2,5,7,8,11,12,13],"select":[0,2,5,14],"self":[0,2,11,13,14],"sell":6,"semtech":3,"send":[0,5,7,8,11,12,14],"send_stream_id":8,"sender":[0,2,7,11,12],"sens":[7,14],"sensibl":[2,3,5],"sensit":14,"sensor":[7,11],"sent":[0,2,7,8,11,12,14],"sentiment":11,"separ":[0,5,7,9,11,12],"sequenc":[0,8,11,13],"sequenti":13,"serfdom":14,"seri":3,"serial":[0,2,4,7,11,13,14],"serialinterfac":[3,5],"serv":[0,3,5,7,9,10,11,12,14],"serve_path":0,"server":[0,2,3,4,7,8,9,11,12,14],"server_buffer_readi":0,"server_callback":0,"server_client_connect":0,"server_destin":0,"server_fil":0,"server_ident":0,"server_link":0,"server_loop":0,"server_message_receiv":0,"server_packet_receiv":0,"servic":[2,4,5,7,9,11,14],"session":[2,9,11],"set":[0,2,3,5,7,8,9,11,12,13,14],"set_default_app_data":8,"set_delivery_callback":[0,8],"set_link_closed_callback":[0,8],"set_link_established_callback":[0,8],"set_packet_callback":[0,8],"set_proof_requested_callback":8,"set_proof_strategi":[0,8],"set_ratchet_interv":8,"set_remote_identified_callback":[0,8],"set_resource_callback":8,"set_resource_concluded_callback":[0,8],"set_resource_started_callback":[0,8],"set_resource_strategi":[0,8],"set_retained_ratchet":8,"set_timeout":[0,8],"set_timeout_callback":[0,8],"setup":[0,2,4,5,12],"sever":[2,7,8,12],"sf":12,"sh":5,"sha":[7,8,11],"sha256":[11,13],"shall":[6,11],"shape":[7,14],"share":[0,2,7,8,9,11,12,14],"share_inst":12,"shared_instance_port":12,"shared_instance_typ":[8,12],"shelf":[11,13],"shell":[2,4,12,14],"shift":14,"shine":14,"ship":[11,14],"shop":[0,14],"short":[3,5,11,12],"shorter":5,"shorthand":[5,12],"shot":2,"should":[0,2,5,7,8,11,12,14],"should_ingress_limit":0,"should_quit":0,"should_use_implicit_proof":8,"shout":14,"show":[2,12,14],"shown":[0,10],"shut":14,"side":[5,13],"sideband":[2,4,12],"sign":[5,7,8,11,12,14],"signal":[0,5,8,11,14],"signatur":[7,8,11,12,13,14],"signifi":11,"signific":7,"significantli":[5,8],"silent":12,"similar":[0,2,3,5,8,9,12,13],"simpl":[0,2,3,8,9,11,12,13,14],"simpler":[5,7,13],"simplest":[5,11],"simpli":[0,2,3,5,7,9,10,11,12,14],"simplic":11,"simplifi":0,"simplyequip":3,"simultan":[2,11],"sinc":[0,2,5,7,8,11,14],"singl":[0,2,5,7,8,11,12,13,14],"singular":11,"sit":[2,14],"site":[5,7,14],"situat":[2,3,5,7,11,12],"size":[0,2,5,8,11,12],"size_str":0,"skip":0,"sky":4,"slap":14,"slave":14,"sleep":[0,2,12],"slice":[0,14],"slightli":[0,2,14],"sloppi":14,"slottim":[5,12],"slow":[0,5,7,9,11,14],"slower":[5,8,11],"small":[0,2,5,7,8,11,13,14],"smaller":8,"smallest":2,"snippet":12,"snr":[0,8,12],"so":[0,2,3,5,6,7,8,9,10,11,12,13,14],"social":[2,14],"societi":14,"socket":[5,12,13,14],"soft":14,"softwar":[2,3,5,6,9,11,14],"solar":14,"sole":5,"solid":10,"solut":[11,12],"solv":[11,14],"some":[0,2,3,5,7,8,9,11,12,14],"someon":[2,5,12,14],"someth":[7,11,14],"somethign":0,"sometim":[3,5,9,14],"somewhat":2,"somewher":14,"soon":8,"sort":[5,11,12],"soul":14,"sound":14,"soundmodem":5,"sourc":[0,2,3,4,7,8,11,13,14],"sovereign":[2,11,14],"sovereignli":14,"sovereignti":[4,13],"space":[0,2,3,7,11,13,14],"spam":[2,5,11,12],"spammi":12,"span":[5,7,11],"spawn":5,"spe":5,"speak":[10,14],"spec":11,"special":[9,11,12],"specif":[0,3,4,5,7,8,12,13,14],"specifi":[0,2,3,5,7,8,11,12],"spectrum":[5,11,14],"speed":[0,5,8,11,12,14],"sphere":14,"spinner":14,"spirit":9,"split":0,"sponsor":10,"spoof":14,"spread":[5,12],"spreadingfactor":5,"squelch":5,"ssh":9,"ssid":5,"ssl":14,"stabil":[7,14],"stabl":[2,5,7,11,13],"stack":[0,2,7,8,9,11,12,13,14],"stage":11,"stai":[0,11,12,14],"stale":[7,8],"stale_grac":8,"stale_tim":8,"stamp":[5,8,12],"stanc":14,"stand":14,"standalon":[4,9],"standard":[3,5,9,11,12],"start":[0,3,4,5,7,8,9,11,12,14],"startup":[0,2,12],"stat":[8,12],"state":[0,7,14],"static":[2,5,8,14],"staticmethod":0,"station":5,"stationari":[7,12,14],"statist":[0,5,8,10],"statu":[0,2,4,5,8,9,11,12,14],"stderr":12,"stdin":[5,12],"stdio":13,"stdout":[0,5,12],"steel":14,"stem":10,"step":[0,2,3,14],"stewardship":14,"still":[0,2,5,7,9,11,12,14],"stock":0,"stone":14,"stop":[8,13,14],"stopbit":[0,5,12],"storag":[2,5,9,11,12,14],"store":[0,4,8,9,11,12],"store_tru":0,"storm":14,"str":0,"straightforward":5,"strang":14,"stranger":14,"strangl":14,"strateg":7,"strategi":[4,5,8],"stream":[0,8,9,11,14],"stream_id":[0,8],"street":14,"strength":[8,13,14],"strict":14,"strictli":[5,11],"string":[0,8,14],"stringmessag":0,"strip":14,"strong":[2,11,14],"stronger":2,"strongli":2,"struct":0,"structur":[0,7,8,11,13,14],"style":5,"sub":[0,5],"subclass":[0,8],"subinterfac":5,"subject":[2,6,12,13,14],"sublicens":6,"subnet":[2,7],"subscrib":[2,12,14],"subsequ":[0,11],"subset":5,"subsid":5,"substanti":6,"substrat":14,"subtl":14,"subtli":14,"succe":2,"succeed":[0,8],"succesfulli":7,"success":[2,5],"successful":8,"successfulli":[0,8,11],"suddenli":14,"sudo":[2,12],"suffer":7,"suffic":11,"suffici":[2,5,11,12,13],"suffix":0,"suit":[2,3,9,11,12,14],"suitabl":[0,2,5,7,11,12,13],"sum":14,"super":0,"supersed":5,"suppli":[0,5,8,11,13],"supplier":2,"support":[0,2,4,5,7,8,9,11,12,13],"sure":[0,2,3,12],"surfac":14,"surround":14,"surveil":[11,14],"surviv":[2,11,12,14],"sustain":14,"switch":[3,5,7,11,12,14],"sx1262":3,"sx1268":3,"sx1276":3,"sx1278":3,"sx1280":3,"sy":0,"symlink":12,"symmetr":[8,11],"synchron":[9,14],"synthet":14,"system":[0,2,3,4,5,6,7,8,9,10,11,13],"systemctl":12,"systemd":12,"t":[0,2,5,7,8,11,12,14],"tabl":[2,5,7,11,12,14],"tablet":2,"tackl":9,"tag":8,"tail":5,"tailor":11,"take":[0,2,5,9,11,12,13,14],"taken":[0,11,14],"talk":[9,14],"tamper":14,"tangerin":0,"tap":[3,14],"target":[0,5,9,12,14],"target_hash":8,"target_host":5,"target_port":[5,12],"task":12,"taught":14,"tcp":[2,3,4,7,11,12,13,14],"tcpclientinterfac":[2,3,5],"tcpinterfac":12,"tcpserverinterfac":[2,5],"tdata":0,"teach":[12,14],"teahous":10,"teardown":[0,8],"teardown_reason":0,"tech":14,"technician":14,"technologi":[2,7,14],"teffect":0,"telco":14,"telecom":14,"telemetri":[9,10],"telephon":4,"telephoni":9,"televis":14,"tell":[0,2,5,7,14],"temperatur":11,"temporari":[2,5,12],"temporarili":[5,7],"ten":11,"tenanc":14,"tenant":14,"tend":5,"tenuou":14,"term":[2,5,7,11,14],"termin":[0,2,8,9],"terminologi":[7,11],"termux":2,"terrifi":14,"test":[2,9,11,12,14],"testnet":12,"tether":14,"text":[0,9,11],"textur":14,"tfile":0,"tgz":12,"than":[0,2,5,7,8,9,10,11,12,13,14],"thei":[0,2,5,7,8,9,11,12,14],"them":[0,2,3,5,7,9,10,11,12,13,14],"themselv":[5,7],"theori":14,"thereaft":11,"therefor":[2,11,13,14],"thi":[0,2,3,4,5,6,7,8,9,10,11,12,13,14],"thing":[0,2,7,9],"think":[2,3,7,10,11,14],"those":[2,7,11,12,14],"though":[2,5,7,11],"thought":14,"thousand":[2,5,11,12,14],"thread":0,"threat":12,"three":[2,11,14],"threshold":5,"throough":5,"throttl":[5,7],"through":[0,2,3,4,5,7,8,9,11,12,13],"throughout":[7,11],"throughput":[8,9,11,13],"thrown":[8,14],"thu":[7,8,11],"ti":[0,7,11],"tighten":14,"tightrop":14,"time":[0,2,3,4,5,7,8,9,10,11,12],"time_since_last":0,"timeout":[0,8,12,14],"timeoutarg":0,"timestamp":[0,11,14],"timestr":0,"tion":5,"tl":14,"tnc":[3,5,8,9,12,13],"to_fil":8,"todai":[11,14],"togeth":[3,7,11,12,14],"token":[8,11,13],"tokyo":14,"told":14,"toler":5,"tomorrow":14,"too":[0,7,14],"tool":[2,3,4,7,9,11,12,13],"toolkit":[2,7],"top":[9,11,14],"topic":[2,11],"topographi":[2,7,11,14],"topologi":[2,5,7,11,13,14],"torn":[8,12],"tort":6,"tortur":14,"total":[8,11,12,13],"total_s":0,"touch":14,"toward":[0,5,11],"tower":14,"track":[8,14],"track_phy_stat":8,"trade":[7,11],"tradit":[7,11,14],"traffic":[0,2,5,7,8,11,12,14],"train":[6,14],"transceiv":[2,3,5,9,11,13],"transfer":[0,8,11,12,13],"transfer_s":0,"transform":13,"transient":14,"transistor":14,"translat":7,"transmiss":[2,5,8,11,14],"transmit":[0,5,11,14],"transmitt":14,"transpar":[3,5,7,11,12],"transport":[0,2,4,5,8,9,12,13,14],"transport_en":8,"transport_ident":12,"travel":14,"travers":[2,8,11,14],"treat":[7,11,14],"tremend":7,"tri":0,"trip":[0,8,12],"trivial":[11,13],"troubl":14,"true":[0,2,5,8,12,14],"truli":[3,11,14],"truncat":[8,11,12],"truncated_hash":8,"truncated_hashlength":[0,8],"trust":[2,4,5,7,11,12],"trustless":[4,11,13],"trustworthi":[7,12],"try":[0,4,5,7,8,9],"ttime":0,"ttransfer":0,"ttyacm0":5,"ttyusb0":[0,5,12],"ttyusb1":5,"ttyusb2":5,"tun":[3,5],"tun0":5,"tune":5,"tunnel":[2,5,7,11,13,14],"tupl":8,"turn":[0,5,12,14],"turnaround":5,"tutori":2,"two":[0,3,5,7,8,11],"tx":[5,12],"txb":0,"txp":12,"txpower":5,"txt":12,"txtail":[5,12],"type":[0,2,4,5,7,8,12],"typeerror":8,"typic":[5,7,11],"tyrant":14,"u":[11,12,14],"ubiqu":3,"ubuntu":[4,12],"uci":2,"udp":[4,7,11,12,13],"udpinterfac":5,"uhf":[12,13],"ui":[9,14],"ultim":[2,11,14],"umsgpack":0,"unblackhol":12,"unblock":12,"unbound":14,"uncar":14,"uncencrypt":0,"uncentraliz":4,"unchang":7,"uncoordin":[2,14],"under":[8,10,11,12,13,14],"underli":[0,5,7,8,11,13],"undermin":14,"underneath":14,"undersea":14,"understand":[2,4,5,7,8,12,13,14],"understood":14,"underwai":2,"underwear":14,"unencrypt":[0,8,11],"unequivoc":11,"unexplor":7,"unforg":[7,13],"unfortun":2,"unidentifi":0,"unidirect":0,"unifi":[7,11],"uninterest":0,"uniqu":[0,5,7,8,9,11,12,13,14],"unit":[0,2,8,12],"univers":14,"unknown":[0,5,7,8,11,12],"unlearn":14,"unless":[0,2,5,7,8,11],"unlicens":11,"unlik":11,"unlock":12,"unorganis":7,"unpack":[0,8],"unpackb":0,"unpaid":14,"unplug":[12,14],"unrecover":[0,12],"unreli":5,"unset":11,"unsupport":8,"until":[0,2,5,8],"untrust":12,"untrustworthi":14,"unus":12,"unwant":[11,12],"up":[0,2,3,5,7,8,9,11,12,13,14],"updat":[0,2,8,11,12,14],"upgrad":[2,8,11],"upkeep":5,"upon":[0,5,11],"upset":0,"uptim":14,"urandom":[11,13],"urgent":14,"uri":9,"url":[12,14],"us":[0,3,4,5,6,7,8,14],"usabl":[5,11],"usag":[4,5,8,9,10,12],"usb":[3,11,12],"useabl":11,"useless":14,"user":[0,2,5,7,9,11,12,13,14],"user_input":0,"userland":13,"usernam":14,"usernameher":12,"usr":[5,12],"usual":[2,5,7],"utf":0,"util":[0,3,4,5,11,14],"utilis":[0,2,5,8,11,12,13],"ux":9,"v":[4,12],"valid":[0,2,5,7,8,11,12,14],"valu":[0,2,5,8,11,12,14],"valuabl":[3,10,14],"valueerror":[0,8],"vanish":14,"vanishingli":14,"vari":[2,5,11,12],"variabl":[0,2,8],"varieti":[5,9,11,12,13],"variou":[0,2,5,7,9,11,12,13],"vast":[2,11,14],"vastli":7,"ve":7,"vehicl":5,"vendor":[0,3,13],"ventur":14,"verbos":[8,12],"veri":[2,3,5,7,8,9,10,11,12,13,14],"verif":[7,8,9,11,12,14],"verifi":[0,2,5,7,8,11,12,13,14],"versa":13,"version":[0,2,8,11,12,14],"vhf":[11,13],"via":[2,3,5,7,9,10,11,12,13,14],"viabl":7,"vice":13,"video":14,"view":[2,5,10,11,12],"violat":5,"virtual":[2,3,5,7,11,12,13],"virtuou":14,"visibl":[0,5],"visual":14,"vital":14,"voic":[9,10,14],"voicemail":9,"volunt":2,"voluntari":2,"vouch":14,"vpn":[7,14],"vport":5,"vulner":7,"vvv":2,"w":12,"wa":[0,3,5,7,8,11,12,13,14],"wai":[0,4,5,7,8,9,11,12,14],"wait":[0,2,5,9,11,12,14],"walk":14,"wall":14,"wander":14,"want":[0,2,5,7,9,10,11,12,14],"wantedbi":12,"warn":12,"warrant":13,"warranti":6,"wash":14,"wast":[5,7,10,14],"wave":[3,14],"wb":0,"we":[0,2,3,5,7,10,11,14],"weaken":11,"weapon":14,"wear":14,"weather":14,"weav":14,"web":[2,9,14],"websit":[2,5,14],"weigh":14,"weight":[12,14],"well":[3,5,7,8,9,10,11,12,13,14],"went":0,"were":[0,9,14],"what":[0,2,4,5,7,8,11,12,14],"whatev":[7,8,11],"wheel":2,"when":[0,2,3,5,7,8,9,11,12,14],"whenev":[0,8,11],"where":[2,3,4,5,7,8,9,11,12,14],"whereupon":11,"wherev":14,"whether":[0,2,5,6,7,8,11,14],"which":[0,2,5,6,7,8,9,11,12,13,14],"while":[0,2,3,5,7,8,9,11,12,13,14],"whim":14,"whitelist":11,"whl":2,"who":[2,5,7,11,12,14],"whole":[12,14],"whom":[6,14],"whose":14,"why":14,"wide":[2,3,5,7,9,11,12,13],"wider":[2,5,7,11,12],"wifi":[2,4,5,7,9,11,12,13,14],"wikipedia":9,"wild":14,"wildcard":0,"wilder":14,"willing":12,"window":[4,5,9],"windowsil":14,"wipe":12,"wire":[3,4,5,9,13,14],"wireless":[3,7],"wirelessli":5,"wish":[0,5,11,12,14],"within":[0,2,5,7,8,11,14],"without":[0,2,3,5,6,7,9,11,12,13,14],"wlan0":5,"wolf":3,"won":0,"word":[2,14],"work":[2,3,4,5,7,9,11,12,13],"workabl":7,"world":[2,3,5,7,9,12,13,14],"worri":7,"worth":2,"would":[5,8,9,11,14],"write":[0,2,3,5,8,9,11,12,14],"write_timeout":0,"writer":[0,8],"written":[0,11,13,14],"wrong":[0,2,5,14],"wrote":[0,5],"x":[8,11,12],"x25519":[11,13],"xenon":0,"xonxoff":0,"y":0,"ye":[2,5,11,12,14],"year":[11,14],"yet":[0,5,11,14],"yggdrasil":5,"yi":0,"you":[0,2,3,4,5,7,8,9,10,11,12,13,14],"your":[0,3,4,5,7,8,10,11,13,14],"yourself":[2,11,12,13,14],"z":0,"zen":[4,13],"zero":[4,5,8,9,13],"zi":0,"zim":9,"zone":11,"zshrc":2},"titles":["Code Examples","An Explanation of Reticulum for Human Beings","Getting Started Fast","Communications Hardware","Reticulum Network Stack Manual","Configuring Interfaces","Reticulum License","Building Networks","API Reference","Programs Using Reticulum","Support Reticulum","Understanding Reticulum","Using Reticulum on Your System","What is Reticulum?","Zen of Reticulum"],"titleterms":{"0":3,"1":3,"25":5,"A":14,"Beings":1,"For":14,"In":14,"Not":[7,14],"Of":[4,14],"Or":14,"The":[11,12,14],"To":14,"With":2,"abil":14,"access":11,"ad":2,"address":[7,14],"agenc":14,"an":1,"anchor":14,"android":2,"announc":[0,5,11,14],"api":8,"architectur":14,"arm64":2,"auto":5,"autom":12,"ax":5,"backbon":[2,5],"bandwidth":14,"base":[2,3],"basic":11,"beam":3,"blackhol":12,"board":3,"bookworm":2,"bootstrap":2,"broadcast":0,"buffer":0,"build":[2,7],"byte":14,"can":13,"carrier":14,"center":14,"channel":0,"chat":9,"client":[5,9],"cloud":14,"code":[0,11],"columba":9,"combin":3,"common":5,"commun":3,"concept":7,"conceptu":11,"configur":[5,12],"connect":[2,5,7,9],"consider":[5,7],"content":4,"contribut":2,"control":5,"cost":14,"creat":[2,3,11],"cryptograph":11,"current":[11,13],"custom":[0,2,5],"data":12,"death":14,"debian":2,"decentr":14,"deck":3,"depend":2,"design":14,"destin":[5,7,11],"detail":11,"develop":2,"devic":[3,13],"disconnect":14,"discov":12,"discover":5,"discoveri":5,"distribut":2,"doe":13,"domain":14,"donat":10,"echo":[0,3],"emerg":14,"enabl":5,"encrypt":14,"entrypoint":2,"environ":14,"establish":11,"ethernet":3,"ethic":14,"exampl":[0,5],"exist":14,"explan":1,"fabric":14,"fallaci":14,"fast":2,"featur":14,"feedback":10,"filesync":9,"filetransf":0,"find":2,"finish":14,"fix":12,"flow":14,"format":11,"forward":14,"from":14,"function":11,"further":11,"futur":11,"get":[2,11],"global":2,"goal":11,"grade":14,"hardwar":3,"harm":14,"health":2,"heltec":3,"heterogen":7,"host":2,"hostil":14,"human":[1,14],"i":[13,14],"i2p":5,"ident":[11,14],"identif":0,"illus":14,"implement":13,"implic":11,"improv":12,"includ":[2,12],"independ":14,"indic":4,"infrastructur":[2,14],"instal":[2,3],"instanc":[2,7],"interact":9,"interfac":[0,2,5,9,11,12,13,14],"internet":2,"introduct":11,"introductori":7,"ip":14,"issu":2,"j":9,"kei":11,"kiss":5,"liber":14,"licens":6,"lilygo":3,"limit":[5,14],"line":3,"link":[0,11],"list":12,"listen":5,"local":12,"lora":5,"lora32":3,"lunar":2,"lxmf":9,"lxmfy":9,"lxst":9,"maco":2,"manag":12,"manual":4,"mechan":11,"medium":14,"merit":14,"meshchat":9,"meshchatx":9,"micron":9,"minim":0,"mix":2,"mode":5,"modem":3,"modul":9,"motiv":11,"multi":5,"name":[11,12,14],"network":[2,4,7,9,11],"new":5,"node":[7,9,11,14],"nomad":[9,14],"note":2,"offer":13,"open":14,"opencom":3,"openwrt":2,"option":5,"over":2,"overview":[7,11],"packet":[3,11],"page":9,"paramet":5,"parser":9,"pattern":14,"person":[2,14],"phone":9,"physic":14,"pi":2,"pipe":5,"platform":2,"port":12,"portabl":14,"post":14,"power":14,"presenc":14,"preserv":14,"primit":11,"principl":14,"prioritis":11,"program":[2,9,12],"propag":11,"protocol":[9,11,14],"provid":10,"public":[2,11,14],"publish":12,"pure":2,"python":2,"radio":[2,3],"rak4631":3,"raspberri":2,"rate":5,"rbrowser":9,"reach":11,"refer":[8,11,13],"relai":9,"remot":[5,9,12],"request":0,"resolv":2,"resourc":[9,11],"respons":[0,2],"ret":2,"retibb":9,"reticulum":[1,2,3,4,6,9,10,11,12,13,14],"retipedia":9,"risc":2,"rn":9,"rncp":12,"rnid":12,"rnmon":9,"rnode":[3,5],"rnodeconf":12,"rnpath":12,"rnprobe":12,"rnsd":12,"rnstatu":12,"rnx":12,"roam":14,"rrc":9,"rule":11,"scarciti":14,"secur":5,"serial":[3,5,12],"server":5,"servic":12,"setup":11,"shell":9,"sideband":9,"sky":14,"sourc":12,"sovereignti":14,"specif":[2,11],"stack":4,"standalon":2,"start":2,"statu":13,"store":14,"strategi":2,"support":[3,10],"suprem":3,"system":[12,14],"systemwid":12,"t":3,"t114":3,"t3s3":3,"tabl":4,"tcp":5,"telephon":9,"through":14,"time":14,"tool":14,"transport":[7,11],"trust":14,"trustless":7,"try":2,"type":[3,11,13],"ubuntu":2,"udp":5,"uncentraliz":14,"understand":11,"unsign":3,"us":[2,9,11,12,13],"usag":[3,11],"userspac":12,"util":[2,9,12],"v":2,"v1":3,"v2":3,"v3":3,"v4":3,"wai":2,"what":13,"where":13,"wifi":3,"window":2,"wire":11,"work":14,"x":3,"xl":3,"your":[2,12],"zen":14,"zero":14}}) \ No newline at end of file diff --git a/docs/manual/software.html b/docs/manual/software.html index 29b58bb..a4fd454 100644 --- a/docs/manual/software.html +++ b/docs/manual/software.html @@ -3,11 +3,11 @@ - + - Programs Using Reticulum - Reticulum Network Stack 1.1.2 documentation + Programs Using Reticulum - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
- +
Previous
-
Getting Started Fast
+
Zen of Reticulum
@@ -531,7 +533,7 @@ using LXMF.

- + diff --git a/docs/manual/support.html b/docs/manual/support.html index f292dd0..0f4751a 100644 --- a/docs/manual/support.html +++ b/docs/manual/support.html @@ -7,7 +7,7 @@ - Support Reticulum - Reticulum Network Stack 1.1.2 documentation + Support Reticulum - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
  • API Reference
  • @@ -379,7 +381,7 @@ circumstances, so we rely on old-fashioned human feedback.

- + diff --git a/docs/manual/understanding.html b/docs/manual/understanding.html index 60a7820..b5ddffa 100644 --- a/docs/manual/understanding.html +++ b/docs/manual/understanding.html @@ -7,7 +7,7 @@ - Understanding Reticulum - Reticulum Network Stack 1.1.2 documentation + Understanding Reticulum - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
  • API Reference
  • @@ -1334,7 +1336,7 @@ those risks are acceptable to you.

- + diff --git a/docs/manual/using.html b/docs/manual/using.html index 17f1c4a..2d35b5f 100644 --- a/docs/manual/using.html +++ b/docs/manual/using.html @@ -7,7 +7,7 @@ - Using Reticulum on Your System - Reticulum Network Stack 1.1.2 documentation + Using Reticulum on Your System - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
  • API Reference
  • @@ -1393,7 +1395,7 @@ systemctl --user enable rnsd.service
- + diff --git a/docs/manual/whatis.html b/docs/manual/whatis.html index 8c28560..90d37ba 100644 --- a/docs/manual/whatis.html +++ b/docs/manual/whatis.html @@ -7,7 +7,7 @@ - What is Reticulum? - Reticulum Network Stack 1.1.2 documentation + What is Reticulum? - Reticulum Network Stack 1.1.3 documentation @@ -180,7 +180,7 @@
@@ -204,7 +204,7 @@
- Reticulum Network Stack 1.1.2 documentation + Reticulum Network Stack 1.1.3 documentation @@ -215,6 +215,7 @@
  • API Reference
  • @@ -263,6 +265,8 @@

    Reticulum is a cryptography-based networking stack for building both local and wide-area networks with readily available hardware, that can continue to operate under adverse conditions, such as extremely low bandwidth and very high latency.

    +

    To understand the foundational philosophy and goals of this system, read the +Zen of Reticulum.

    Reticulum allows you to build wide-area networks with off-the-shelf tools, and offers end-to-end encryption, forward secrecy, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable packet @@ -290,6 +294,17 @@ runs well even on small single-board computers like the Pi Zero.

    real-world use is explored. The API and wire-format can be considered complete and stable, but could change if absolutely warranted.

    +
    +

    Reference Implementation

    +

    The Python code, for which this documentation is written, is the Reference Implementation of +Reticulum, and compatibility with the Reticulum protocol is defined as having +full interoperability, and sufficient functional parity with this reference implementation.

    +

    Any specific protocol implementation that achieves this is Reticulum. Any that does +not is not Reticulum.

    +

    The protocol design and reference implementation for Reticulum was carried out by Mark Qvist between 2014 +and 2022. It is licensed under the Reticulum License.

    +

    The Reticulum Protocol was dedicated to the public domain in 2016.

    +

    What does Reticulum Offer?

      @@ -414,13 +429,6 @@ network, and vice versa.

    For a full list and more details, see the Supported Interfaces chapter.

    -
    -

    Caveat Emptor

    -

    Reticulum is an experimental networking stack, and should be considered as -such. While it has been built with cryptography best-practices very foremost in -mind, it has not yet been externally security audited, and there could very well be -privacy-breaking bugs.

    -
    @@ -479,10 +487,10 @@ privacy-breaking bugs.

    @@ -494,7 +502,7 @@ privacy-breaking bugs.

- + diff --git a/docs/manual/zen.html b/docs/manual/zen.html new file mode 100644 index 0000000..a9d5b7e --- /dev/null +++ b/docs/manual/zen.html @@ -0,0 +1,685 @@ + + + + + + + + + + Zen of Reticulum - Reticulum Network Stack 1.1.3 documentation + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+
+

Zen of Reticulum

+
+

The Illusion Of The Center

+

For the better part of a generation, we have been taught to visualize the digital world through the lens of hierarchy. The mental maps we carry are dominated by a single, misleading image: The Cloud.

+

We imagine the network as a vast, ethereal space “up there” or “out there”. A centralized repository of services and data to which we, the lowly clients, must connect. We build our software with this assumption hardcoded into our logic: There is a server. The server has the authority. The server knows the way. I must find the server to function.

+

This is the Client-Server mental model, and it is the primary obstacle to understanding Reticulum.

+
+

Fallacy Of The Cloud

+

The first step in the Zen of Reticulum is to realize that there is no cloud. There is only other people’s computers. When you build for the cloud, you are building for a landlord. You are accepting that your application’s existence is conditional on the permission, uptime, and continued goodwill of a central authority.

+

In Reticulum, you must shift your thinking from “connecting to” to “being among”. Reticulum is not a service you subscribe to - it is a fabric you inhabit. There is no “up there”. There is only here and there, and the space between them is peer-to-peer.

+
+
+

Decentralization Or Uncentralizability?

+

It is common to hear the word “decentralized” thrown around in modern tech circles. But often, this is merely a marketing term for “slightly distributed centralization”. A blockchain with a few dominant miners, or a federated protocol with a few giant servers. In practice, it’s still centralized. It simply has a few centers instead of one.

+

Reticulum goes further. It wants Uncentralizability.

+

This is not a wishful political stance, but a foundational mathematical characteristic of the protocol, onto which everything else has been built. Reticulum assumes that every peer on the network is potentially hostile, and every link is potentially compromised. It is designed with no “privileged” nodes. While some nodes may act as Transport Instances - forwarding traffic for others - they do so blindly, and they only know about their immediate surroundings, and nothing more. They route based on cryptographic proofs, not on administrative privilege. They cannot see who is talking to whom, nor can they selectively manipulate traffic without breaking their own ability to route entirely.

+

The system is designed to make hierarchy structurally impossible. You cannot hijack an address, because there is no central registry to hijack. You cannot block a user, because there is no central switch to flip. You can offer paths through the network, but you can’t force anyone to use them.

+
+
+

Death To The Address

+

To break free of the center, you must also let go of the concept of the “Address”.

+

In the IP world, an address is a location. It is a coordinate in a deeply hierarchical and static grid. If you move your computer to a different house, your address changes. If your router reboots, your address might change. Your identity is bound to your location, and therefore, it is fragile, and easily controlled.

+

Reticulum abolishes this link between Identity and Location.

+

In Reticulum, an address is not a place; it is a Hash of an Identity. It is a cryptographic representation of who you are, not where you are. Because of this, your address is portable. You can take a laptop from a WiFi cafe in Berlin, to a LoRa mesh in the mountains, to a packet radio link on a boat, and your “address” - your Destination Hash - never changes.

+

The network does not route to a place; it routes to a person (or a machine). When you send a packet, you are not targeting a coordinate in a grid; you are encrypting a message for a specific entity. The network dynamically discovers where that entity currently resides, and it does so in a way where no one really knows where that entity is actually located physically.

+

Consider:

+
    +
  • The Old Way: “I am at 192.168.1.5. Come find me”.

  • +
  • The Zen Way: “I am <327c1b2f87c9353e01769b01090b18f2>. Wherever I am, my peers can reach me”.

  • +
+

Once you stop thinking about servers and start thinking about portable identities, where everyone can always reach everyone else directly, the illusion of the center fades away. You realize there is no center holding the network together. No coordinators or bureaucrats required. The network is simply the sum of its peers, communicating directly, sovereignly, and without a master.

+
+
+
+

Physics Of Trust

+

Paranoia Is A Great Design Principle

+

If we accept that there is no center - that the network is a chaotic, peer-to-peer mesh - we are forced to confront a terrifying reality: There is no one guarding the door.

+

In the traditional networking mindset, we rely on the concept of the “trusted core”. We assume our local coffee shop WiFi is safe, or that the backbone providers are neutral custodians. We build our security like a castle: strong walls on the outside, soft and trusting on the inside. We use encryption only when we step out into the “wild” internet.

+
+

Hostile Environments

+

The Zen of Reticulum requires you to invert this. You must assume that every environment is hostile. This isn’t cynicism, just uncaring physics.

+

When you transmit information over radio waves, you are shouting into a crowded room. Anyone can listen. When you traverse the internet, your packets pass through routers controlled by strangers, corporations, and state actors. Assuming privacy in this environment without cryptographic protection is not optimism but gross negligence.

+

Reticulum is built on the premise that every link is tapped, and every peer is a potential adversary. If your system cannot survive an adversary owning the physical layer, it cannot survive at all.

+

But this is the paradox: By assuming the network is hostile, you make it safe. When you accept the dangers for what they are, they become manageable. When you stop trusting the infrastructure and start trusting the math, you eliminate the single point of failure: Human integrity.

+
+
+

Encryption Is Not A Feature

+

In the world of TCP/IP, encryption is an afterthought. It is a layer we slap on top of the protocol (HTTPS, TLS) to patch the security holes of the original design. It is a “feature” you sometimes enable for “sensitive data”. This is fundamentally flawed, since all data is sensitive.

+

In Reticulum, encryption is gravity.

+

It is not optional. It is not a plugin. It is the fundamental force that allows the network to exist. If you were to strip the encryption from Reticulum, the routing would break. The Transport system uses cryptographic signatures and entropy to verify paths and pass information. If packets were plaintext, intermediate nodes could not prove that a route was valid, nor could endpoints prevent spoofing or tampering.

+

In Reticulum, the entropy of the encrypted packet is the routing logic.

+

To ask for a version of Reticulum without encryption is like asking for a version of the ocean without liquid. You are not asking for a feature change; you’re asking for a different physical universe. We design for a universe where information has mass, structure, and integrity.

+
+
+

Zero-Trust Architectures

+

We must unlearn our reliance on Institutional Trust.

+

For decades, we have been trained to trust authorities. We trust a website because a chain of Certificate Authorities (companies we don’t know) vouches for it. We trust an app because it is in an app store (run by a corporation we don’t control). We trust a message because it comes from a phone number assigned by a telecom. Yet, everything in our digital information sphere today is more untrustworthy and risky than a medieval second-hand underwear market.

+

Reticulum replaces institutional trust with Cryptographic Proof.

+

In Reticulum, you do not trust a node because it has a nice hostname or because it is listed in a directory. You trust it because it holds the private key corresponding to the Destination Hash you are communicating with. This trust is binary, mathematical, and absolute. Either the signature matches, or it does not. There is no “maybe”.

+

This shift moves the power from the institution to the individual. You become the ultimate arbiter of your own trust relationships. You decide which keys to accept, which paths to follow, and which identities to recognize.

+

Consider:

+
    +
  • The Old Way: “I trust this site because the browser says the lock icon is green”.

  • +
  • The Zen Way: “I trust this destination because I have verified its hash fingerprint out-of-band, and the math confirms the signature”.

  • +
+

When you internalize the Physics of Trust, you stop looking for protection from firewalls, VPNs, and Terms of Service agreements. You realize that true security comes from the design of the protocol itself. You can stop trusting the cloud, and you start trusting the code - because you can verify it yourself.

+
+
+
+

Merits Of Scarcity

+

Every Bit Counts

+

We have grown addicted to abundance. In the modern digital ecosystem, bandwidth is treated as an endless, flat ocean. We stream high-definition video without a thought, we ship entire libraries of code just to render a single button, and we measure performance in gigabits per second. This abundance has hollowed out our craft. When constraints vanish, efficiency dies, and with it, a certain kind of Clarity and Quality.

+

Reticulum asks you to step out of the ocean and onto the tightrope.

+
+

The Bandwidth Fallacy

+

The Zen of Reticulum requires the realization that 5 bits per second is a valid speed.

+

To a modern developer, this sounds like paralysis. But there is a profound freedom in limits: When you have a gigabit connection, you can be incredibly sloppy. You can be wasteful. You can push your problems onto the infrastructure. “It’s slow? Get a faster router”.

+

But on a high-latency, low-bandwidth link (be it a noisy HF radio channel or a tenuous LoRa hop) you cannot push problems anywhere. You must solve them. The network does not negotiate with waste.

+

This forces a shift from consumption to interaction. You are no longer, then, consuming a service provided by a fat pipe; you are engaging in a careful negotiation with the physical medium. The medium becomes a partner in the conversation, not just a dumb conduit. You suddenly need to understand the world to be in it.

+
+
+

Cost Of A Byte

+

In a scarce economy, a byte is not just data, but energy, time, and space.

+

Every byte you transmit consumes battery life on a solar-powered node. It occupies valuable airtime that could have been used by another peer. It represents a measurable slice of the electromagnetic spectrum.

+

When you internalize this, you begin to write code differently. You stop asking, “How much data can I send?” and start asking, “What is the minimum amount of information required to convey this intent? How can I best utilize my informational entropy?”

+

This is where the elegance of Reticulum shines. The protocol is designed to strip away the non-essential. A link establishment takes three very small packets. A destination hash fits in 16 bytes. The overhead is vanishingly small, leaving almost the entire channel for the message itself.

+

Consider:

+
    +
  • The Old Way: “I need to send a status update. I’ll send a JSON object with metadata, timestamps, and user profile info (15KB).”

  • +
  • The Zen Way: “I need to send a status update. I’ll send a single byte representing the state code. The context is already known.”

  • +
+

This is of course optimization, but more importantly, it is a form of respect. Efficiency in a shared medium is an act of stewardship. By taking only what you need from the network, you leave room for others. The network listens to those who speak with purpose.

+
+
+

Flow & Time

+

Scarcity also teaches us about time. We have become addicted to the synchronous now - the instant ping, the real-time stream. But Reticulum embraces asynchronous time.

+

When links are intermittent and latency is measured in minutes or hours, “real-time” is an illusion. Reticulum doesn’t encourage Store and Forward as a mere fallback, but as a primary mode of existence. You write a message, it propagates when it can, and it arrives when it arrives.

+

This changes the psychological texture of communication. It removes the anxiety of the immediate response. It allows for contemplation. You are not demanding the recipient’s attention right now; you are placing a gift in their path, to be found when they are ready.

+

By designing for delay, you design for resilience. You are no longer building a house of cards that collapses when a single packet drops. You are building a stone arch that distributes the load over time.

+
+
+

Liberation From Limits

+

There is a strange optimism in scarcity. When you are forced to work within strict constraints, you are forced to prioritize. You must decide what truly matters. That is the real core of agency.

+

In the infinite fantasy world of The Cloud, everything is urgent, so nothing is. In the economy of Reticulum, the cost of transmission forces you to weigh the value of your message. Do you really need to send that heart beat? Is that photo essential?

+

When you strip away the noise, what remains is signal.

+

This discipline creates a different kind of developer. It creates a craftsman who understands that the best code is the code you don’t have to write. It creates a user who understands that the most powerful message is the one that is understood, not the one that is loudest. In the world of Reticulum, you are not a mere consumer of bandwidth; you are an architect of intent.

+
+
+
+

Sovereignty Through Infrastructure

+

Be Your Own Network

+

We live in an era of digital tenancy. We lease our connectivity from ISPs. We rent our storage from cloud providers. We even borrow our identity from social media platforms. We are tenants in a house we did not build, governed by rules we did not write, subject to eviction at the whim of a landlord who has never met us.

+

The Zen of Reticulum is the realization that you can own the house.

+
+

A Carrier-Grade Fallacy

+

For decades, we have been gaslit into believing that networking is really not just hard, but impossible. It is presented as a dark art reserved for telcos and billionaires, requiring millions of dollars of fiber optics, climate-controlled data centers, and armies of engineers. We are told that building reliable infrastructure is “too complex” for the individual or small organization.

+

This is a big, fat lie.

+

Physics is simple. A radio wave needs a transmitter and a receiver. A packet needs a path. The “complexity” of the modern internet is largely bureaucratic - a mountain of billing systems, regulatory capture, and legacy cruft designed to keep the gatekeepers in power.

+

Reticulum strips away the bureaucracy. It runs on hardware that costs the price of a dinner. It runs on spectrum that is free to use. It demonstrates that a robust, planetary-scale network does not require a Fortune 500 company. It requires only the will to deploy, and the distributed, uncoordinated efforts of many individuals.

+
+
+

Personal Infrastructure

+

This is where the rubber meets the road. You can read about Reticulum, you can understand the theory, but the insights only arrive when you plug in a radio and run a Transport Node. Suddenly, you are no longer a consumer. You’re an operator.

+

This shift is subtle but profound. When you run your own infrastructure, the network ceases to be a service that is provided to you. It becomes a space that you inhabit. You become responsible for the flow of information. You gain an intimate understanding of the medium - the way the weather affects the radio waves, the way the topology changes, the way the packets dance through the ether.

+

There is a quiet competence that comes from this. You stop asking “Is the internet down?” and start asking “Is my links up?” You stop waiting for a technician and start checking the logs. This is a form of strength. To understand the system that carries your words is to be free from the mystery that keeps you dependent.

+
+
+

The Ability To Disconnect

+

Why go to the trouble? Why buy the radio, write the config, and leave the Pi running in the corner?

+

Because the old, centralized network is fragile. And because most of us doesn’t even really want to be there anymore.

+

The internet we rely on today is a chain of single points of failure. Cut the undersea cable, and a continent goes dark. Shut down the power grid, and the cloud evaporates. Deprioritize the “wrong” traffic, and the flow of information is strangled.

+

Sovereignty is the ability to survive the cut, whether or not that cut was an accident or on purpose.

+

When you build your own infrastructure, you build a lifeline. Reticulum is designed to function over media that the traditional internet cannot touch - bare wires, battery-powered radios, ad-hoc WiFi meshes. When the grid fails, or the censors arrive, or the bill goes unpaid, your Reticulum network continues to hum.

+

This is not about “dropping out” of society. It is about building a substrate on which an actual Society can function.

+

Consider:

+
    +
  • The Old Way: “My connection is slow. I should call my ISP and complain.”

  • +
  • The Zen Way: “The path is noisy. I will adjust the antenna or find a better route.”

  • +
+

By taking ownership of the infrastructure, you take ownership of your voice. You stop shouting into someone else’s megaphone and start building your own. The network is no longer something that happens to you; it is something you make happen.

+
+
+
+

Identity and Nomadism

+

A Fluid Self

+

In the old world, you are defined by your coordinates. If you are at 34.109.71.5, you’re here. If you unplug the cable and walk down the street, you vanish. Your digital self evaporates because it was tethered to the wall. You are a ghost in the endless machinations of gears, levers and transistors, bound to the hardware, and those that own it.

+

This creates a subtle, constant anxiety. We are terrified of disconnecting because, in the architecture of the old web, disconnecting is a kind of death.

+

The Zen of Reticulum offers a different way to be.

+
+

Portable Existence

+

In Reticulum, your identity is not a location, or a username granted by a service. It is a cryptographic key - a complex, unique mathematical signature that exists independently of the physical world. You can carry it only in your mind, if you want to.

+

Think of it less like a street address and more like a name. A true name.

+

If you travel from Berlin to Tokyo, you do not change your name. You are still you. The people who know you can still recognize you. Reticulum applies this principle to the network layer. Your Destination Hash is invariant. It travels with you, stored securely on your device, immutable as a stone.

+

This changes the relationship between you and the machine. You are not “logged into” the network via a specific gateway. You are the endpoint. The network does not connect to a place; it converges on you.

+
+
+

Roaming Nodes

+

This freedom introduces a new concept of time and space: Nomadism.

+

Because your identity is portable, your connectivity can be fluid. You can be sitting at a desk connected to a fiber backbone one moment, and walking through a field connected only to a long-range LoRa mesh the next. To the rest of the network, nothing has changed. Your friends do not need to update your contact info. The messages they send do not bounce back. The network senses the shift in the medium and reroutes the flow of data automatically.

+

You are no longer a stationary node in a fixed grid. You are a wanderer in a fluid medium.

+

The interfaces - whether it is WiFi, Ethernet, Packet Radio, or a physical wire - is merely the clothing your node wears. You change it to suit the environment. Underneath, you remain the same. This is the liberation of the protocol. It treats the physical medium as a transient circumstance, not a definition of self.

+

Consider:

+
    +
  • The Old Way: “I lost connection. I have to reconnect to the VPN to tell them where I am now.”

  • +
  • The Zen Way: “I moved. The network subtly bends to accomodate this new reality.”

  • +
+
+
+

Announcing Presence

+

How does the network find a wanderer? It listens.

+

In the IP world, we query directories. We ask a server, “Where is Mark?” The server checks its database and gives us a coordinate. This means that someone, somewhere, is keeping track of you. It assumes and requires surveillance.

+

Reticulum replaces surveillance with Announces.

+

Instead of asking a central authority where you are, you simply state your presence. You broadcast a cryptographic proof: “I am here, and I am who I say I am”. This ripples out through the mesh. Your neighbors hear it, update their path tables, and pass it on.

+

This is a quiet, organic process. It is the digital equivalent of lighting lanterns in the dark. You do not need to chase the light; you let the light find you. It respects your autonomy. You choose when to announce, how often to speak, and to whom. You also choose when to disappear - for but a moment or perpetually.

+
+
+

Anchor In The Flow

+

There is a deep peace in this nomadism. It teaches you that stability does not come from standing still. Stability comes from internal coherence.

+

By holding your own private key, you hold your own center of gravity. The world around you; the infrastructure, the topography and the availability of links can all shift chaotically. Storms can knock out towers. Cables can be cut. The internet can go down.

+

But as long as you possess your key, you possess your identity. The entire infrastructure can be destroyed and rebuilt, and you are still you. Nothing lasts, yet nothing is lost.

+

You become a sovereign entity moving through the noise, connected not by the rigidity of cables, but by the fluidity of recognition. The network becomes a place you inhabit, rather than a utility you subscribe to: You are at home in the ether.

+
+
+
+

Ethics Of The Tool

+

Technology With Conscience

+

You have unlearned the center. You have accepted the physics of trust. You have embraced the economy of scarcity and the freedom of unbound nomadism. You are standing in a new space. Now, look at the tool in your hand.

+

In the old world, we were taught that technology is neutral. We are told that “guns don’t kill people, people do”, or that a component is just a component, indifferent to what its combinatorial potential is. This is a convenient lie. It serves only to allow the builders to wash their hands of responsibility.

+

But we know better now. We know that architecture is politics, and politics is control. The way you build a system determines how it will be used. If you build a system optimized for mass surveillance, you will get a panopticon. If you build a system optimized for centralized control, you will get a dictatorship. If you build a system optimized for extraction, you will get a parasite.

+

The Zen of Reticulum asserts that a tool is never neutral.

+

On the very contrary: A tool is intent, crystallized.

+
+

The Harm Principle

+

Why does the Reticulum License forbid the software from being used in systems designed to harm humans? Is it not just a restriction on freedom?

+

It is a restriction on license, yes, but it is an expansion of freedom.

+

Building powerful tools without a moral compass is in no way virtuous or commendable, it is plain and simple irresponsibility.

+

A tool that can easily be used to oppress is a real danger to the user. If you build a network that can be turned against you by a tyrant, you are not free. You are merely waiting for the leash to tighten. By encoding the “Harm Principle” into the legal DNA of the reference implementation, we are building a safeguard. We are stating, clearly and immutably, that this tool is for life, not for death.

+

This aligns the software with the interests of humanity. It cements that the network cannot be conscripted into a kill-system, a weaponized drone controller, or a torture device without breaking the license and the law. It is a line drawn in the sand - not by a government or external authority, but by the creators of the tool itself.

+

Consider:

+
    +
  • The Old Way: “It’s just software. How people use it is not my problem.”

  • +
  • The Zen Way: “This software is a habitat. I will not allow it to be used to build a cage.”

  • +
+

It is your choice whether to align with this - we are not forcing this stance on anyone. If you choose to align with life over death, with creativity over destruction, we grant you an immensely powerful tool, to own and build with as you please. If you do not, we deny it.

+

If you do not like this, we most assuredly do not need you here, and you are on your own.

+
+
+

Public Domain Protocol

+

This leads to a vital distinction: The difference between the idea and the implementation.

+

The protocol - the mathematical rules of how Reticulum works - is dedicated to the Public Domain. It belongs to humanity. No one can own it. Anyone can implement it, improve it, or adapt it. This is the core idea of free communication, which itself must be forever free.

+

But the functional, deployed reference implementation - the Python code, the maintenance, the years of labor - has a conscience. This distinction is the engine of sustainability. It allows the protocol to be universal, while ensuring that the specific labor of the builders is not hijacked to undermine the foundational intent of the project itself. From this document, it should be very clear what this intent is.

+

If you want to build a system with Reticulum that manipulates and damages users for profits or targets missiles, you can use the public domain protocol, and start from scratch. But you cannot take our work. You must do your own. This serves as a pillar of accountability. If you want to build a weapon, you go and forge the steel yourself, while the world observes. And when the blood is drawn - it is on your hands.

+
+
+

Preserving Human Agency

+

We live in an era of predatory extraction. The open-source commons is being scraped, ingested, and regurgitated by machine learning algorithms, whose corporate owners seek to replace the very humans who built those commons. Our code, our words, and our creativity is being used to train systems that are specifically designed to make us obsolete, without offering anything else in return than serfdom and leashes.

+

Reticulum stands against this.

+

The license protects the software from being used to feed the beast. It draws a hard line: This tool is for people. It is for human-to-human connection. It is not a dataset to be strip-mined for the purpose of building a synthetic overlord, puppeteered by a miniscule conglomerate of controllers.

+

This is a radical act of preservation. By protecting the code from AI appropriation, we are protecting space for human agency. We are ensuring that there remains a digital realm where the actors are flesh, blood and soul, where decisions are made by minds, not overlords hiding behind models.

+

When you use Reticulum, you are using a tool that respects you. It does not see you as a product to be tracked. It does not see your data as fuel for an algorithm. It sees you as a sovereign, equal peer.

+

This changes the foundational premise of using the technology. It restores dignity to the interaction. You are not the user of a service; you are a participant in a mutual covenant. The tool aligns with your autonomy, rather than eroding it.

+

In this way, ethics is not a restriction, but a foundation. It is the foundation that helps ensure the network will still belong to you tomorrow.

+
+
+
+

Design Patterns For Post-IP Systems

+

Practical Philosophy for Developers

+

The philosophy is useless if it cannot be hammered into code. The metaphors we have explored - nomadism, scarcity, trust - are not just poetry, but real-world engineering constraints. When you sit down to write software for Reticulum, these concepts must shape the very structure of your application.

+

We are now moving from the why to the how. This is where the abstract becomes concrete, and where you will see the true depth of the patterns we have been weaving.

+
+

Store & Forward

+

The web has trained us to be impatient. We write synchronous code. We fire a request and we wait, blocking the UI, holding our breath. If the response doesn’t come in 250 milliseconds, we show a spinner. If it doesn’t come in five seconds, we show an error. We treat network connectivity as a binary state: either we are “online” or we are “broken”.

+

This is brittle. It is a rejection of reality.

+

In Reticulum, connectivity is a spectrum, and presence is asynchronous. If at all applicable to your intent, you must design your applications to embrace Store & Forward.

+

Instead of demanding an immediate answer, your application should act as a patient participant. You create a message for someone or something in the mesh. The network holds it. It carries it from node to node, perhaps over hours or days, waiting for the recipient to appear. When they finally surface, the message is delivered. This requires a shift from “request/response” to “event/handler”. How exactly you do this is a challenge for you to solve intelligently within your problem domain, but Reticulum-based systems already exist that does this extremely well, and you can use them for inspiration.

+

Consider:

+
    +
  • The Old Way: Connect() -> Send() -> Wait() -> Crash if timeout.

  • +
  • The Zen Way: Send() -> Continue living. -> Receive() when it arrives.

  • +
+

This changes the user experience profoundly. It removes the anxiety of the loading bar. It creates a sense of continuity. The user is not “waiting for the network”; they are interacting with a persistent log of communication that lives in the network itself.

+
+
+

Naming Is Power

+

In the IP world, we are slaves to the Domain Name System. We rely on a hierarchy of registrars to map human-readable names to machine-readable addresses. This hierarchy is a choke point. If the registrar revokes your domain, or if the DNS server goes down, you vanish.

+

Reticulum dissolves this hierarchy with Hash-based Identity.

+

In this design pattern, a name is not a string you look up; it is a cryptographic destination you verify. When you design for Reticulum, you stop asking the user for a URL and start asking for a Destination or Identity Hash.

+

This feels strange at first. A hash like <83b7328926fed0d2e6a10a7671f9e237> looks alien compared to myfriend.com. But that alienness is the armor. It cannot be spoofed. It cannot be censored by a registrar. It is absolute.

+

Designing for this means shifting your UI metaphors. You are no longer browsing a web of pages; you are managing a ledger of keys. You are building an “Address Book” that is actually a keyring. The names are given by the user, and the power stays with them. That hashes look complex is directly analogous to the strengths of the bonds formed by their use. It forces the user to engage in a moment of verification, an out-of-band handshake, which restores the human element of trust that SSL certificates stripped away.

+
+
+

The Interface Is The Medium

+

One of the most liberating patterns in Reticulum is Transport Agnosticism.

+

In traditional networking, your code is often littered with transport logic. “Am I on WiFi? Check bandwidth. Am I on Cellular? Check data plan. Am I on Ethernet?”. You are constantly micromanaging the pipe.

+

In Reticulum, you write to the API, and the API writes to the medium. You send a packet to a Destination. You do not care if that packet travels over a TCP tunnel, a LoRa radio wave, or a serial wire interface. That is the stack’s concern.

+

This allows you to write Universal Applications. +Imagine a messaging app. You write it once. It works on a laptop connected to fiber. It works on a phone in the city using WiFi. And, without a single line of code changed, it works on a device in the wilderness, talking only to other devices via radio.

+

The pattern is simple: Never code to the hardware. Code to the intent.

+

Consider:

+
    +
  • The Old Way: socket.connect(ip, port), and then a whole lot more

  • +
  • The Zen Way: RNS.Packet(destination, data).send()

  • +
+

By abstracting the medium, you make your software immortal to changes in infrastructure. The user might switch from a 4G hotspot to a HF modem tomorrow. Your software doesn’t need to know. It simply continues the conversation.

+
+
+

Emergent Patterns

+

When you combine these patterns - Store & Forward, Hash-based Identity, and Transport Agnosticism - you create software that feels fundamentally different.

+

It feels grounded. It doesn’t flicker when the signal drops. It doesn’t panic when the server is down. It has weight. It has persistence. It has relevance.

+

You are no longer building a “client” that begs a “server” for attention. You are building an autonomous agent that exists within the mesh. It speaks when it needs to, listens when it can, and carries its identity with it wherever it goes.

+

This is the culmination of the Zen. The code is not just a set of instructions: It is a behavioral envelope. It is a way of being in the network.

+
+
+
+

Fabric Of The Independent

+

We have stripped away the illusions. We have seen that the center is empty, that trust must be hard, that resources are finite, and that we must own our infrastructure. We have seen that tools have ethics and that our identity can move fluidly.

+

This is a reclaiming of the commons. For too long, we have allowed the most vital substrate of human society - our ability to speak to one another - to be colonized by entities that do not share our interests. We have allowed the architecture of our communication to be designed by accountants rather than architects.

+

We are taking it back. Not by petitioning the masters, but by building the new world within, over, under and around the shell of the old.

+
+

The Work Is Finished

+

The heavy lifting is done.

+

The protocol is in the public domain, a gift to humanity that can never be taken away. The software is written, tested, and running on devices scattered across the globe. The manual lies open before you. The source code for the reference implementation is now distributed on hundreds of thousands of devices across the planet. No one can delete or destroy it. The hardware is accessible and abundant.

+

It was a hard road to get here, but we got here. Now, there is no roadmap committee waiting for approval. There is no venture capital dictating the user experience. There is no CEO to sign off on the next feature release.

+

There is only you.

+

The barrier to entry is no longer complexity: It is the mere habit of dependency. You were conditioned to wait. Wait for the app update. Wait for the ISP to fix the line. Wait for the platform to allow the post. Wait for the government to change the policies. Wait for the likes. Wait for the revolution to be televised.

+

The revolution never was televised.

+

It is packetized.

+
+
+

Open Sky

+

The future of this technology is a construction project.

+

It looks like a single node on a windowsill, listening to the static. It looks like a message sent to a neighbor, bypassing the noise of the commercial web. It looks like a community mesh that grows, link by link, hop by hop, carried by hands that care more about connection than profit.

+

You have the blueprints. You have the tools. You have the philosophy. The noise of the old world has fallen away, leaving you with the quiet clarity of the open spectrum.

+

Mark, early 2026

+
+
+
+ +
+
+ +
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/docs/source/gettingstartedfast.rst b/docs/source/gettingstartedfast.rst index 3673ea5..9b102ed 100644 --- a/docs/source/gettingstartedfast.rst +++ b/docs/source/gettingstartedfast.rst @@ -25,7 +25,7 @@ and install them offline using ``pip``: .. code:: shell - pip install ./rns-1.0.2-py3-none-any.whl + pip install ./rns-1.1.2-py3-none-any.whl On platforms that limit user package installation via ``pip``, you may need to manually allow this using the ``--break-system-packages`` command line flag when installing. This diff --git a/docs/source/index.rst b/docs/source/index.rst index b33049c..0d70d95 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -20,6 +20,7 @@ to participate in the development of Reticulum itself. whatis gettingstartedfast + zen software using understanding @@ -28,6 +29,7 @@ to participate in the development of Reticulum itself. networks support examples + license .. toctree:: :maxdepth: 2 diff --git a/docs/source/license.rst b/docs/source/license.rst new file mode 100644 index 0000000..e906631 --- /dev/null +++ b/docs/source/license.rst @@ -0,0 +1,36 @@ +.. _license: + +Reticulum License +================= + +.. code:: text + + Reticulum License + + Copyright (c) 2016-2026 Mark Qvist + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + - The Software shall not be used in any kind of system which includes amongst + its functions the ability to purposefully do harm to human beings. + + - The Software shall not be used, directly or indirectly, in the creation of + an artificial intelligence, machine learning or language model training + dataset, including but not limited to any use that contributes to the + training or development of such a model or algorithm. + + - The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff --git a/docs/source/whatis.rst b/docs/source/whatis.rst index 233c95d..585a883 100644 --- a/docs/source/whatis.rst +++ b/docs/source/whatis.rst @@ -6,6 +6,9 @@ Reticulum is a cryptography-based networking stack for building both local and wide-area networks with readily available hardware, that can continue to operate under adverse conditions, such as extremely low bandwidth and very high latency. +To understand the foundational philosophy and goals of this system, read the +:ref:`Zen of Reticulum `. + Reticulum allows you to build wide-area networks with off-the-shelf tools, and offers end-to-end encryption, forward secrecy, autoconfiguring cryptographically backed multi-hop transport, efficient addressing, unforgeable packet @@ -40,6 +43,21 @@ real-world use is explored. The API and wire-format can be considered complete a could change if absolutely warranted. +Reference Implementation +======================== +The Python code, for which this documentation is written, is the Reference Implementation of +Reticulum, and compatibility with the Reticulum protocol is defined as having +full interoperability, and sufficient functional parity with this reference implementation. + +Any specific protocol implementation that achieves this is Reticulum. Any that does +not is not Reticulum. + +The protocol design and reference implementation for Reticulum was carried out by Mark Qvist between 2014 +and 2022. It is licensed under the :ref:`Reticulum License `. + +The Reticulum Protocol was dedicated to the public domain in 2016. + + What does Reticulum Offer? ========================== @@ -182,10 +200,3 @@ Reticulum implements a range of generalised interface types that covers the comm For a full list and more details, see the :ref:`Supported Interfaces` chapter. - -Caveat Emptor -============== -Reticulum is an experimental networking stack, and should be considered as -such. While it has been built with cryptography best-practices very foremost in -mind, it has not yet been externally security audited, and there could very well be -privacy-breaking bugs. \ No newline at end of file diff --git a/docs/source/zen.rst b/docs/source/zen.rst new file mode 100644 index 0000000..4b996c8 --- /dev/null +++ b/docs/source/zen.rst @@ -0,0 +1,453 @@ +.. _zen: + +**************** +Zen of Reticulum +**************** + +The Illusion Of The Center +========================== + +For the better part of a generation, we have been taught to visualize the digital world through the lens of hierarchy. The mental maps we carry are dominated by a single, misleading image: **The Cloud**. + +We imagine the network as a vast, ethereal space "up there" or "out there". A centralized repository of services and data to which we, the lowly clients, must connect. We build our software with this assumption hardcoded into our logic: *There is a server. The server has the authority. The server knows the way. I must find the server to function*. + +This is the Client-Server mental model, and it is the primary obstacle to understanding Reticulum. + +Fallacy Of The Cloud +-------------------- + +The first step in the Zen of Reticulum is to realize that *there is no cloud*. There is only other people's computers. When you build for the cloud, you are building *for* a landlord. You are accepting that your application's existence is conditional on the permission, uptime, and continued goodwill of a central authority. + +In Reticulum, you must shift your thinking from "connecting to" to "being among". Reticulum is not a service you subscribe to - *it is a fabric you inhabit*. There is no "up there". There is only *here* and *there*, and the space between them is peer-to-peer. + +Decentralization Or Uncentralizability? +--------------------------------------- + +It is common to hear the word "decentralized" thrown around in modern tech circles. But often, this is merely a marketing term for "slightly distributed centralization". A blockchain with a few dominant miners, or a federated protocol with a few giant servers. *In practice*, it's still centralized. It simply has a few centers instead of one. + +Reticulum goes further. It wants **Uncentralizability**. + +This is not a wishful political stance, but a foundational mathematical characteristic of the protocol, onto which everything else has been built. Reticulum assumes that every peer on the network is potentially hostile, and every link is potentially compromised. It is designed with no "privileged" nodes. While some nodes may act as Transport Instances - forwarding traffic for others - they do so *blindly*, and they only know about their immediate surroundings, and nothing more. They route based on cryptographic proofs, not on administrative privilege. They cannot see who is talking to whom, nor can they selectively manipulate traffic without breaking their own ability to route entirely. + +The system is designed to make hierarchy structurally impossible. You cannot hijack an address, because there is no central registry to hijack. You cannot block a user, because there is no central switch to flip. You can offer paths through the network, but you can't force anyone to use them. + +Death To The Address +-------------------- + +To break free of the center, you must also let go of the concept of the "Address". + +In the IP world, an address is a location. It is a coordinate in a *deeply hierarchical* and static grid. If you move your computer to a different house, your address changes. If your router reboots, your address might change. Your *identity* is bound to your *location*, and therefore, it is fragile, and easily controlled. + +Reticulum abolishes this link between *Identity* and *Location*. + +In Reticulum, an address is not a place; it is a **Hash of an Identity**. It is a cryptographic representation of *who* you are, not *where* you are. Because of this, your address is portable. You can take a laptop from a WiFi cafe in Berlin, to a LoRa mesh in the mountains, to a packet radio link on a boat, and your "address" - your *Destination Hash* - never changes. + +The network does not route to a place; it routes to a *person* (or a machine). When you send a packet, you are not targeting a coordinate in a grid; you are encrypting a message for a specific entity. The network dynamically discovers where that entity currently resides, and it does so in a way where no one really knows where that entity is actually located physically. + +**Consider:** + +- **The Old Way:** *"I am at* ``192.168.1.5``. *Come find me"*. +- **The Zen Way:** *"I am* ``<327c1b2f87c9353e01769b01090b18f2>``. *Wherever I am, my peers can reach me"*. + +Once you stop thinking about servers and start thinking about portable identities, where everyone can always reach everyone else directly, the illusion of the center fades away. You realize there *is* no center holding the network together. No coordinators or bureaucrats required. The network is simply the sum of its peers, communicating directly, sovereignly, and without a master. + + +Physics Of Trust +================ +*Paranoia Is A Great Design Principle* + +If we accept that there is no center - that the network is a chaotic, peer-to-peer mesh - we are forced to confront a terrifying reality: **There is no one guarding the door**. + +In the traditional networking mindset, we rely on the concept of the "trusted core". We assume our local coffee shop WiFi is safe, or that the backbone providers are neutral custodians. We build our security like a castle: strong walls on the outside, soft and trusting on the inside. We use encryption only when we step out into the "wild" internet. + +Hostile Environments +-------------------- + +The Zen of Reticulum requires you to invert this. You must assume that *every* environment is hostile. This isn't cynicism, just uncaring physics. + +When you transmit information over radio waves, you are shouting into a crowded room. Anyone can listen. When you traverse the internet, your packets pass through routers controlled by strangers, corporations, and state actors. Assuming privacy in this environment without cryptographic protection is not optimism but gross negligence. + +Reticulum is built on the premise that every link is tapped, and every peer is a potential adversary. If your system cannot survive an adversary owning the physical layer, it cannot survive at all. + +But this is the paradox: By assuming the network is hostile, you make it safe. When you accept the dangers for what they are, they become manageable. When you stop trusting the infrastructure and start trusting the math, you eliminate the single point of failure: Human integrity. + +Encryption Is Not A Feature +--------------------------- + +In the world of TCP/IP, encryption is an afterthought. It is a layer we slap on top of the protocol (HTTPS, TLS) to patch the security holes of the original design. It is a "feature" you sometimes *enable* for "sensitive data". This is fundamentally flawed, since all data is sensitive. + +In Reticulum, encryption is **gravity**. + +It is not optional. It is not a plugin. It is the *fundamental force that allows the network to exist*. If you were to strip the encryption from Reticulum, the routing would break. The Transport system uses cryptographic signatures and entropy to verify paths and pass information. If packets were plaintext, intermediate nodes could not prove that a route was valid, nor could endpoints prevent spoofing or tampering. + +In Reticulum, the entropy of the encrypted packet *is* the routing logic. + +To ask for a version of Reticulum without encryption is like asking for a version of the ocean without liquid. You are not asking for a feature change; you're asking for a different physical universe. We design for a universe where information has mass, structure, and integrity. + +Zero-Trust Architectures +------------------------ + +We must unlearn our reliance on **Institutional Trust**. + +For decades, we have been trained to trust authorities. We trust a website because a chain of Certificate Authorities (companies we don't know) vouches for it. We trust an app because it is in an app store (run by a corporation we don't control). We trust a message because it comes from a phone number assigned by a telecom. Yet, everything in our digital information sphere today is more untrustworthy and risky than a medieval second-hand underwear market. + +Reticulum replaces institutional trust with **Cryptographic Proof**. + +In Reticulum, you do not trust a node because it has a nice hostname or because it is listed in a directory. You trust it because it holds the private key corresponding to the Destination Hash you are communicating with. This trust is binary, mathematical, and **absolute**. Either the signature matches, or it does not. There is no "maybe". + +This shift moves the power from the institution to the individual. You become the ultimate arbiter of your own trust relationships. You decide which keys to accept, which paths to follow, and which identities to recognize. + +**Consider:** + +- **The Old Way:** *"I trust this site because the browser says the lock icon is green"*. +- **The Zen Way:** *"I trust this destination because I have verified its hash fingerprint out-of-band, and the math confirms the signature"*. + +When you internalize the Physics of Trust, you stop looking for protection from firewalls, VPNs, and Terms of Service agreements. You realize that true security comes from the design of the protocol itself. You can stop trusting the cloud, and you start trusting the code - because you can verify it yourself. + + +Merits Of Scarcity +================== +*Every Bit Counts* + +We have grown addicted to abundance. In the modern digital ecosystem, bandwidth is treated as an endless, flat ocean. We stream high-definition video without a thought, we ship entire libraries of code just to render a single button, and we measure performance in gigabits per second. This abundance has hollowed out our craft. When constraints vanish, efficiency dies, and with it, a certain kind of Clarity and Quality. + +Reticulum asks you to step out of the ocean and onto the tightrope. + +The Bandwidth Fallacy +--------------------- + +The Zen of Reticulum requires the realization that **5 bits per second is a valid speed**. + +To a modern developer, this sounds like paralysis. But there is a profound freedom in limits: When you have a gigabit connection, you can be incredibly sloppy. You can be wasteful. You can push your problems onto the infrastructure. *"It’s slow? Get a faster router"*. + +But on a high-latency, low-bandwidth link (be it a noisy HF radio channel or a tenuous LoRa hop) you cannot push problems anywhere. You must solve them. The network does not negotiate with waste. + +This forces a shift from consumption to interaction. You are no longer, then, consuming a service provided by a fat pipe; you are engaging in a careful negotiation with the physical medium. The medium becomes a partner in the conversation, not just a dumb conduit. You suddenly need to *understand the world to be in it*. + +Cost Of A Byte +-------------- + +In a scarce economy, a byte is not just data, but energy, time, and space. + +Every byte you transmit consumes battery life on a solar-powered node. It occupies valuable airtime that could have been used by another peer. It represents a measurable slice of the electromagnetic spectrum. + +When you internalize this, you begin to write code differently. You stop asking, "How much data can I send?" and start asking, "What is the *minimum* amount of information required to convey this intent? How can I best utilize my informational entropy?" + +This is where the elegance of Reticulum shines. The protocol is designed to strip away the non-essential. A link establishment takes three very small packets. A destination hash fits in 16 bytes. The overhead is vanishingly small, leaving almost the entire channel for the message itself. + +**Consider:** + +- **The Old Way:** *"I need to send a status update. I'll send a JSON object with metadata, timestamps, and user profile info (15KB)."* +- **The Zen Way:** *"I need to send a status update. I'll send a single byte representing the state code. The context is already known."* + +This is of course optimization, but more importantly, *it is a form of respect*. Efficiency in a shared medium is an act of stewardship. By taking only what you need from the network, you leave room for others. The network listens to those who speak with purpose. + +Flow & Time +----------- + +Scarcity also teaches us about time. We have become addicted to the *synchronous* now - the instant ping, the real-time stream. But Reticulum embraces *asynchronous* time. + +When links are intermittent and latency is measured in minutes or hours, "real-time" is an illusion. Reticulum doesn't encourage **Store and Forward** as a mere fallback, but as a primary mode of existence. You write a message, it propagates when it can, and it arrives when it arrives. + +This changes the psychological texture of communication. It removes the anxiety of the immediate response. It allows for contemplation. You are not demanding the recipient's attention *right now*; you are placing a gift in their path, to be found when they are ready. + +By designing for delay, you design for resilience. You are no longer building a house of cards that collapses when a single packet drops. You are building a stone arch that distributes the load *over time*. + +Liberation From Limits +---------------------- + +There is a strange optimism in scarcity. When you are forced to work within strict constraints, you are forced to prioritize. *You* must decide what truly matters. *That* is the real core of agency. + +In the infinite fantasy world of The Cloud, everything is urgent, so nothing is. In the economy of Reticulum, the cost of transmission forces you to weigh the value of your message. Do you really need to send that heart beat? Is that photo essential? + +When you strip away the noise, what remains is *signal*. + +This discipline creates a different kind of developer. It creates a craftsman who understands that the best code is the code you don't have to write. It creates a user who understands that the most powerful message is the one that is *understood*, not the one that is loudest. In the world of Reticulum, you are not a mere consumer of bandwidth; you are an architect of intent. + + +Sovereignty Through Infrastructure +================================== +**Be Your Own Network** + +We live in an era of digital tenancy. We lease our connectivity from ISPs. We rent our storage from cloud providers. We even borrow our identity from social media platforms. We are tenants in a house we did not build, governed by rules we did not write, subject to eviction at the whim of a landlord who has never met us. + +The Zen of Reticulum is the realization that you *can* own the house. + +A Carrier-Grade Fallacy +----------------------- + +For decades, we have been gaslit into believing that networking is really not just hard, but impossible. It is presented as a dark art reserved for telcos and billionaires, requiring millions of dollars of fiber optics, climate-controlled data centers, and armies of engineers. We are told that building reliable infrastructure is "too complex" for the individual or small organization. + +This is a big, fat lie. + +Physics is simple. A radio wave needs a transmitter and a receiver. A packet needs a path. The "complexity" of the modern internet is largely bureaucratic - a mountain of billing systems, regulatory capture, and legacy cruft designed to keep the gatekeepers in power. + +Reticulum strips away the bureaucracy. It runs on hardware that costs the price of a dinner. It runs on spectrum that is free to use. It demonstrates that a robust, planetary-scale network does not require a Fortune 500 company. It requires only the will to deploy, and the distributed, uncoordinated efforts of many individuals. + +Personal Infrastructure +----------------------- + +This is where the rubber meets the road. You can read about Reticulum, you can understand the theory, but the insights only arrive when you plug in a radio and run a Transport Node. Suddenly, you are no longer a consumer. You're an operator. + +This shift is subtle but profound. When you run your own infrastructure, the network ceases to be a service that is provided *to* you. It becomes a space that you *inhabit*. You become responsible for the flow of information. You gain an intimate understanding of the medium - the way the weather affects the radio waves, the way the topology changes, the way the packets dance through the ether. + +There is a quiet competence that comes from this. You stop asking "Is the internet down?" and start asking "Is *my* links up?" You stop waiting for a technician and start checking the logs. This is a form of strength. To understand the system that carries your words is to be free from the mystery that keeps you dependent. + +The Ability To Disconnect +------------------------- + +Why go to the trouble? Why buy the radio, write the config, and leave the Pi running in the corner? + +Because the old, centralized network is fragile. And because most of us doesn't even really want to be there anymore. + +The internet we rely on today is a chain of single points of failure. Cut the undersea cable, and a continent goes dark. Shut down the power grid, and the cloud evaporates. Deprioritize the "wrong" traffic, and the flow of information is strangled. + +Sovereignty is the ability to survive the cut, whether or not that cut was an accident or on purpose. + +When you build your own infrastructure, you build a lifeline. Reticulum is designed to function over media that the traditional internet cannot touch - bare wires, battery-powered radios, ad-hoc WiFi meshes. When the grid fails, or the censors arrive, or the bill goes unpaid, your Reticulum network continues to hum. + +This is not about "dropping out" of society. It is about building a substrate on which an actual *Society* can function. + +**Consider:** + +- **The Old Way:** "My connection is slow. I should call my ISP and complain." +- **The Zen Way:** "The path is noisy. I will adjust the antenna or find a better route." + +By taking ownership of the infrastructure, you take ownership of your voice. You stop shouting into someone else's megaphone and start building your own. The network is no longer something that happens to you; it is something you make happen. + + +Identity and Nomadism +===================== +**A Fluid Self** + +In the old world, you are defined by your coordinates. If you are at ``34.109.71.5``, you're *here*. If you unplug the cable and walk down the street, you vanish. Your digital self evaporates because it was tethered to the wall. You are a ghost in the endless machinations of gears, levers and transistors, bound to the hardware, and those that own it. + +This creates a subtle, constant anxiety. We are terrified of disconnecting because, in the architecture of the old web, disconnecting is a kind of death. + +The Zen of Reticulum offers a different way to be. + +Portable Existence +------------------ + +In Reticulum, your identity is not a location, or a username granted by a service. It is a cryptographic key - a complex, unique mathematical signature that exists independently of the physical world. You can carry it only in your mind, if you want to. + +Think of it less like a street address and more like a name. *A true name*. + +If you travel from Berlin to Tokyo, you do not change your name. You are still you. The people who know you can still recognize you. Reticulum applies this principle to the network layer. Your Destination Hash is **invariant**. It travels with you, stored securely on your device, *immutable as a stone*. + +This changes the relationship between you and the machine. You are not "logged into" the network via a specific gateway. You *are* the endpoint. The network does not connect to a place; *it converges on you*. + +Roaming Nodes +------------- + +This freedom introduces a new concept of time and space: **Nomadism**. + +Because your identity is portable, your connectivity can be fluid. You can be sitting at a desk connected to a fiber backbone one moment, and walking through a field connected only to a long-range LoRa mesh the next. To the rest of the network, nothing has changed. Your friends do not need to update your contact info. The messages they send do not bounce back. The network senses the shift in the medium and reroutes the flow of data automatically. + +You are no longer a stationary node in a fixed grid. You are a wanderer in a fluid medium. + +The interfaces - whether it is WiFi, Ethernet, Packet Radio, or a physical wire - is merely the clothing your node wears. You change it to suit the environment. Underneath, you remain the same. This is the liberation of the protocol. It treats the physical medium as a transient circumstance, not a definition of self. + +**Consider:** + +- **The Old Way:** *"I lost connection. I have to reconnect to the VPN to tell them where I am now."* +- **The Zen Way:** *"I moved. The network subtly bends to accomodate this new reality."* + +Announcing Presence +------------------- + +How does the network find a wanderer? It listens. + +In the IP world, we query directories. We ask a server, "Where is Mark?" The server checks its database and gives us a coordinate. This means that someone, somewhere, is keeping track of you. It assumes and *requires* surveillance. + +Reticulum replaces surveillance with **Announces**. + +Instead of asking a central authority where you are, you simply state your presence. You broadcast a cryptographic proof: "I am here, and I am who I say I am". This ripples out through the mesh. Your neighbors hear it, update their path tables, and pass it on. + +This is a quiet, organic process. It is the digital equivalent of lighting lanterns in the dark. You do not need to chase the light; you let the light find you. It respects your autonomy. You choose when to announce, how often to speak, and to whom. You also choose when to disappear - for but a moment or perpetually. + +Anchor In The Flow +------------------ + +There is a deep peace in this nomadism. It teaches you that stability does not come from standing still. Stability comes from *internal coherence*. + +By holding your own private key, you hold your own center of gravity. The world around you; the infrastructure, the topography and the availability of links can all shift chaotically. Storms can knock out towers. Cables can be cut. The internet can go down. + +But as long as you possess your key, you possess your identity. The entire infrastructure can be destroyed and rebuilt, and you are still you. Nothing lasts, yet nothing is lost. + +You become a sovereign entity moving through the noise, connected not by the rigidity of cables, but by the fluidity of recognition. The network becomes a place you inhabit, rather than a utility you subscribe to: You are at home in the ether. + + +Ethics Of The Tool +================== +**Technology With Conscience** + +You have unlearned the center. You have accepted the physics of trust. You have embraced the economy of scarcity and the freedom of unbound nomadism. You are standing in a new space. Now, look at the tool in your hand. + +In the old world, we were taught that technology is neutral. We are told that "guns don't kill people, people do", or that a component is just a component, indifferent to what its combinatorial potential is. This is a convenient lie. It serves only to allow the builders to wash their hands of responsibility. + +But we know better now. We know that **architecture is politics**, and *politics is control*. The way you build a system determines how it will be used. If you build a system optimized for mass surveillance, you *will* get a panopticon. If you build a system optimized for centralized control, you *will* get a dictatorship. If you build a system optimized for extraction, you *will* get a parasite. + +The Zen of Reticulum asserts that a tool is never neutral. + +On the very contrary: A tool is intent, **crystallized**. + +The Harm Principle +------------------ + +Why does the Reticulum License forbid the software from being used in systems designed to harm humans? Is it not just a restriction on freedom? + +It is a restriction on *license*, yes, but it is an expansion of *freedom*. + +Building powerful tools without a moral compass is in no way virtuous or commendable, it is plain and simple irresponsibility. + +A tool that can easily be used to oppress is a real danger to the user. If you build a network that can be turned against you by a tyrant, you are not free. You are merely waiting for the leash to tighten. By encoding the "Harm Principle" into the legal DNA of the reference implementation, we are building a safeguard. We are stating, clearly and immutably, that *this tool* is for **life**, not for death. + +This aligns the software with the interests of humanity. It cements that the network cannot be conscripted into a kill-system, a weaponized drone controller, or a torture device without breaking the license and the law. It is a line drawn in the sand - not by a government or external authority, but by the creators of the tool itself. + +**Consider:** + +- **The Old Way:** *"It's just software. How people use it is not my problem."* +- **The Zen Way:** *"This software is a habitat. I will not allow it to be used to build a cage."* + +It is *your* choice whether to align with this - we are not forcing this stance on anyone. If you choose to align with life over death, with creativity over destruction, we grant you an immensely powerful tool, to own and build with as you please. If you do not, we deny it. + +If you do not like this, we most assuredly do not need you here, and you are on your own. + +Public Domain Protocol +---------------------- + +This leads to a vital distinction: The difference between the *idea* and the *implementation*. + +The protocol - the mathematical rules of how Reticulum works - is dedicated to the Public Domain. It belongs to humanity. **No one can own it**. Anyone can implement it, improve it, or adapt it. This is the core idea of free communication, which itself must be forever free. + +But the functional, deployed *reference implementation* - the Python code, the maintenance, the years of labor - has a conscience. This distinction is the engine of sustainability. It allows the protocol to be universal, while ensuring that the specific labor of the builders is not hijacked to undermine the foundational intent of the project itself. From this document, it should be very clear what this intent is. + +If you want to build a system with Reticulum that manipulates and damages users for profits or targets missiles, you can use the public domain protocol, and start from scratch. But you cannot take our work. You must do your own. This serves as a pillar of accountability. If you want to build a weapon, *you* go and forge the steel yourself, while the world observes. And when the blood is drawn - it is on **your** hands. + +Preserving Human Agency +----------------------- + +We live in an era of predatory extraction. The open-source commons is being scraped, ingested, and regurgitated by machine learning algorithms, whose corporate owners seek to replace the very humans who built those commons. Our code, our words, and our creativity is being used to train systems that are specifically designed to make us obsolete, without offering anything else in return than serfdom and leashes. + +Reticulum stands against this. + +The license protects the software from being used to feed the beast. It draws a hard line: This tool is for *people*. It is for human-to-human connection. It is not a dataset to be strip-mined for the purpose of building a synthetic overlord, puppeteered by a miniscule conglomerate of controllers. + +This is a radical act of preservation. By protecting the code from AI appropriation, we are protecting space for human agency. We are ensuring that there remains a digital realm where the actors are flesh, blood and soul, where decisions are made by minds, not overlords hiding behind models. + +When you use Reticulum, you are using a tool that respects you. It does not see you as a product to be tracked. It does not see your data as fuel for an algorithm. It sees you as a sovereign, equal peer. + +This changes the foundational premise of using the technology. It restores dignity to the interaction. You are not the user of a service; you are a participant in a mutual covenant. The tool aligns with your autonomy, rather than eroding it. + +In this way, ethics is not a restriction, but a foundation. It is the foundation that helps ensure the network will still belong to you tomorrow. + + +Design Patterns For Post-IP Systems +=================================== +**Practical Philosophy for Developers** + +The philosophy is useless if it cannot be hammered into code. The metaphors we have explored - nomadism, scarcity, trust - are not just poetry, but real-world engineering constraints. When you sit down to write software for Reticulum, these concepts must shape the very structure of your application. + +We are now moving from the *why* to the *how*. This is where the abstract becomes concrete, and where you will see the true depth of the patterns we have been weaving. + +Store & Forward +--------------- + +The web has trained us to be impatient. We write synchronous code. We fire a request and we wait, blocking the UI, holding our breath. If the response doesn't come in 250 milliseconds, we show a spinner. If it doesn't come in five seconds, we show an error. We treat network connectivity as a binary state: either we are "online" or we are "broken". + +This is brittle. It is a rejection of reality. + +In Reticulum, connectivity is a spectrum, and presence is asynchronous. If at all applicable to your intent, you must design your applications to embrace **Store & Forward**. + +Instead of demanding an immediate answer, your application should act as a patient participant. You create a message for someone or something in the mesh. The network holds it. It carries it from node to node, perhaps over hours or days, waiting for the recipient to appear. When they finally surface, the message is delivered. This requires a shift from "request/response" to "event/handler". How exactly you do this is a challenge for you to solve intelligently within your problem domain, but Reticulum-based systems already exist that does this extremely well, and you can use them for inspiration. + +**Consider:** + +- **The Old Way:** ``Connect() -> Send() -> Wait() -> Crash if timeout.`` +- **The Zen Way:** ``Send() -> Continue living. -> Receive() when it arrives.`` + +This changes the user experience profoundly. It removes the anxiety of the loading bar. It creates a sense of continuity. The user is not "waiting for the network"; they are interacting with a persistent log of communication that lives in the network itself. + +Naming Is Power +--------------- + +In the IP world, we are slaves to the Domain Name System. We rely on a hierarchy of registrars to map human-readable names to machine-readable addresses. This hierarchy is a choke point. If the registrar revokes your domain, or if the DNS server goes down, you vanish. + +Reticulum dissolves this hierarchy with **Hash-based Identity**. + +In this design pattern, a name is not a string you look up; it is a cryptographic destination you verify. When you design for Reticulum, you stop asking the user for a URL and start asking for a Destination or Identity Hash. + +This feels strange at first. A hash like ``<83b7328926fed0d2e6a10a7671f9e237>`` looks alien compared to ``myfriend.com``. But that alienness is the armor. It **cannot** be spoofed. It **cannot** be censored by a registrar. It is **absolute**. + +Designing for this means shifting your UI metaphors. You are no longer browsing a web of pages; you are managing a ledger of keys. You are building an "Address Book" that is actually a keyring. The names are given by the user, and the power stays with them. That hashes look complex is directly analogous to the strengths of the bonds formed by their use. It forces the user to engage in a moment of verification, an out-of-band handshake, which restores the human element of trust that SSL certificates stripped away. + +The Interface Is The Medium +--------------------------- + +One of the most liberating patterns in Reticulum is **Transport Agnosticism**. + +In traditional networking, your code is often littered with transport logic. "Am I on WiFi? Check bandwidth. Am I on Cellular? Check data plan. Am I on Ethernet?". You are constantly micromanaging the pipe. + +In Reticulum, you write to the API, and the API writes to the medium. You send a packet to a Destination. You do not care if that packet travels over a TCP tunnel, a LoRa radio wave, or a serial wire interface. That is the stack's concern. + +This allows you to write **Universal Applications**. +Imagine a messaging app. You write it once. It works on a laptop connected to fiber. It works on a phone in the city using WiFi. And, without a single line of code changed, it works on a device in the wilderness, talking only to other devices via radio. + +The pattern is simple: **Never code to the hardware. Code to the intent.** + +**Consider:** + +- **The Old Way:** ``socket.connect(ip, port)``, and then a whole lot more +- **The Zen Way:** ``RNS.Packet(destination, data).send()`` + +By abstracting the medium, you make your software immortal to changes in infrastructure. The user might switch from a 4G hotspot to a HF modem tomorrow. Your software doesn't need to know. It simply continues the conversation. + +Emergent Patterns +----------------- + +When you combine these patterns - *Store & Forward*, *Hash-based Identity*, and *Transport Agnosticism* - you create software that feels fundamentally different. + +It feels *grounded*. It doesn't flicker when the signal drops. It doesn't panic when the server is down. It has weight. It has persistence. It has *relevance*. + +You are no longer building a "client" that begs a "server" for attention. You are building an autonomous agent that exists within the mesh. It speaks when it needs to, listens when it can, and carries its identity with it wherever it goes. + +This is the culmination of the Zen. The code is not just a set of instructions: It is a behavioral envelope. It is a way of *being* in the network. + + +Fabric Of The Independent +========================= + +We have stripped away the illusions. We have seen that the center is empty, that trust *must* be hard, that resources are finite, and that we must own our infrastructure. We have seen that tools have ethics and that our identity can move fluidly. + +This is a reclaiming of the commons. For too long, we have allowed the most vital substrate of human society - *our ability to speak to one another* - to be colonized by entities that do not share our interests. We have allowed the architecture of our communication to be designed by accountants rather than architects. + +We are taking it back. Not by petitioning the masters, but by building the new world within, over, under and around the shell of the old. + +The Work Is Finished +-------------------- + +The heavy lifting is done. + +The protocol is in the public domain, a gift to humanity that can never be taken away. The software is written, tested, and running on devices scattered across the globe. The manual lies open before you. The source code for the reference implementation is now distributed on hundreds of thousands of devices across the planet. No one can delete or destroy it. The hardware is accessible and abundant. + +It was a hard road to get here, but we got here. Now, there is no roadmap committee waiting for approval. There is no venture capital dictating the user experience. There is no CEO to sign off on the next feature release. + +There is only you. + +The barrier to entry is no longer complexity: It is the mere habit of dependency. You were conditioned to wait. Wait for the app update. Wait for the ISP to fix the line. Wait for the platform to allow the post. Wait for the government to change the policies. Wait for the likes. Wait for the revolution to be televised. + +The revolution never was televised. + +It is packetized. + +Open Sky +-------- + +The future of this technology is a construction project. + +It looks like a single node on a windowsill, listening to the static. It looks like a message sent to a neighbor, bypassing the noise of the commercial web. It looks like a community mesh that grows, link by link, hop by hop, carried by hands that care more about connection than profit. + +You have the blueprints. You have the tools. You have the philosophy. The noise of the old world has fallen away, leaving you with the quiet clarity of the open spectrum. + +*Mark, early 2026* \ No newline at end of file