From f83435c69702ed01b82902baedf4df46fae95bc5 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Mon, 18 May 2026 17:13:31 +0200 Subject: [PATCH] Updated rngit documentation --- docs/manual/_sources/git.rst.txt | 298 +++++++++++++++++++++++++++++-- docs/manual/git.html | 233 ++++++++++++++++++++++-- docs/manual/index.html | 11 ++ docs/manual/objects.inv | Bin 3068 -> 3108 bytes docs/manual/searchindex.js | 2 +- docs/markdown/git.md | 278 ++++++++++++++++++++++++++-- docs/markdown/index.md | 7 + docs/source/git.rst | 298 +++++++++++++++++++++++++++++-- 8 files changed, 1057 insertions(+), 70 deletions(-) diff --git a/docs/manual/_sources/git.rst.txt b/docs/manual/_sources/git.rst.txt index 6ba2f285..51faf555 100644 --- a/docs/manual/_sources/git.rst.txt +++ b/docs/manual/_sources/git.rst.txt @@ -10,7 +10,7 @@ The system consists of two parts: The ``rngit`` node that hosts repositories, an If you set a branch to track a Reticulum remote as the default upstream, you can simply use ``git`` as you normally would; all commands work transparently and as expected. -.. warning:: +.. important:: **The rngit program is a new addition to RNS!** This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible `permission system`_ for allowing many users to interact with many different repositories on a single node, ``rngit`` has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public. .. _permission system: #permissions @@ -321,8 +321,6 @@ These parameters are used by the sync system and can be queried using standard G 1716230400 - - Repository Structure ==================== @@ -511,6 +509,75 @@ Permission Configuration Locations - Repository permissions: ``//.allowed`` - Document permissions: ``/.work/.allowed`` + +Remote Permission Management +============================ + +While permissions can be configured directly on the node by editing configuration files and ``.allowed`` files, ``rngit`` also supports remote permission management through the ``rngit perms`` command. This allows administrators to modify access controls for groups and repositories over Reticulum, without requiring shell access to the hosting node. + +To use remote permission management, you must have ``admin`` permission on the target group or repository. The command opens your configured ``$EDITOR`` to modify permissions, using the same syntax and format as local ``.allowed`` files. When you save and exit the editor, the modified permissions are transmitted to the remote node and applied immediately. + +Managing Group Permissions +-------------------------- + +To view or modify permissions for an entire repository group, specify the group URL (ending with the group name): + +.. code:: text + + $ rngit perms rns://50824b711717f97c2fb1166ceddd5ea9/public + +This retrieves the current permission configuration from the ``public.allowed`` file and opens it in your editor. Any changes you make are validated for syntax correctness. Invalid permission rules will be rejected with an error message indicating the problematic line. + +Managing Repository Permissions +------------------------------- + +To manage permissions for a specific repository, include the repository name in the URL: + +.. code:: text + + $ rngit perms rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo + +This operates on the ``myrepo.allowed`` file next to the repository. Repository-level permissions take precedence over group-level permissions, allowing fine-grained access control for individual repositories within a group. + +Permission Validation +--------------------- + +When modifying permissions remotely, ``rngit`` validates that: + +- Each permission line follows the correct ``permission:target`` syntax +- Permission types are valid (r, w, rw, c, s, rel, i, p, adm) +- Target specifications are valid (identity hashes, ``all``, or ``none``) +- Identity hashes, when specified, are the correct length (32 hexadecimal characters) + +If validation fails, the editor will reopen with an error message describing the issue, allowing you to correct the problem before resubmitting. + +.. caution:: + Remote permission modification requires administrative access (the ``adm`` permission), which grants full control over the repository or group. The permission change request is transmitted over the encrypted Reticulum link, and the remote node verifies your identity cryptographically before applying changes. However, be aware that granting ``adm`` permissions to remote identities effectively delegates full control, including the ability to revoke your own access or modify permissions in ways you may not anticipate. + +**All Command-Line Options (rngit perms)** + +.. code:: text + + usage: rngit perms [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] + [-i PATH] [-v] [-q] [--version] + remote + + Reticulum Git Permission Manager + + positional arguments: + remote URL of remote group or repository + + options: + -h, --help show this help message and exit + --config CONFIG path to alternative config directory + --rnsconfig RNSCONFIG + path to alternative Reticulum config directory + -i, --identity PATH path to identity + -v, --verbose + -q, --quiet + --version show program's version number and exit + + Identity & Destination Aliases ============================== @@ -679,6 +746,175 @@ A complete node configuration might look like this: unicode_icons = no +Verified Releases +================= + +The ``rngit`` release system provides cryptographic provenance and integrity guarantees through automatic signing of release artifacts and signed release manifests. When you create a release, ``rngit`` generates an Ed25519 signature for each artifact and embeds these signatures in a cryptographically signed release manifest (``.rsm`` file). This allows anyone who obtains the release to verify its authenticity and integrity, regardless of how the files were distributed. + +.. _git-release-obtain: + +Obtaining Verified Releases +--------------------------- + +The ``rngit`` system lets you obtain releases securely and in a verified manner, by validating cryptographically signed release manifests in the ``.rsm`` format during the retrieval process. Once a release has been published with ``rngit``, anyone that has read access to it can obtain the release with the ``rngit release`` command, for example: + +.. code:: text + + $ rngit release rns://remote_node/group/some_program fetch latest:all + +This command will connect to the remote, retrieve the latest release manifest, verify it's signature and integrity (you can optionally specify a required signer identity with ``--signer``), and then download and sequentially verify all artifacts included in the release. + +If verification succeeds, the retrieved artifact files, along with the release manifest will be saved in the current working directory. From the above example, you would end up with a number of downloaded files, and a version- and package specific release manifest, such as ``some_program_1.5.2.rsm``. + +.. important:: + Keeping the retrieved release manifest is a **very** good idea! It allows you to easily obtain future releases and updates to the software directly, while verifying they came from the same publisher. + +**Obtaining & Updating Releases Using RSM Manifests** + +One of the key features of the ``rngit`` release system is the ability to fetch and verify new releases using only a signed release manifest. This is particularly valuable for distributing software over Reticulum. Once someone has an ``.rsm`` manifest of your package, they can use it to continually retrieve and update the software. + +To fetch a release using a manifest: + +.. code:: text + + $ rngit release some_program_1.5.2.rsm fetch latest:all + +This command: + +1. Validates the manifest signature to confirm authenticity +2. Extracts the origin node and repository path from the signed manifest +3. Connects to the origin node over Reticulum +4. Gets the *latest* release manifest from the developer +5. Verifies it against the existing manifest +6. Fetches each artifact listed in the manifest +7. Verifies each downloaded file against the signature embedded in the manifest + +If any artifact fails signature verification, the fetch aborts with an error, preventing the installation of corrupted or tampered files. + +**Specifying Required Signers** + +You can require that releases be signed by specific identities. When fetching a release, use the ``--signer`` option to specify the identity hash of the required signer: + +.. code:: text + + $ rngit release rns://remote_node/public/myrepo fetch latest:all --signer 21a8daa6d9c3d3b8aab6e94b6bcb0e33 + +If the release was not signed by the specified identity, the fetch will abort before any files are downloaded. Likewise, if any downloaded artifacts were not signed by the required identity, the process will abort at the first invalid signature. This provides strong guarantees about the provenance of the software you are installing. + +The signer check also works when fetching from a local manifest: + +.. code:: text + + $ rngit release manifest.rsm fetch latest:all --signer 21a8daa6d9c3d3b8aab6e94b6bcb0e33 + +**Selective & Partial Fetches** + +You can fetch individual artifacts from a release by specifying the artifact name instead of ``all``: + +.. code:: text + + $ rngit release rns://remote_node/public/myrepo fetch 1.2.0:myapp-1.2.0.tar.gz + +This downloads only the specified artifact and verifies its signature against the manifest. If a file already exists locally, ``rngit`` verifies it against the manifest signature and skips the download if valid, making it safe to run the command multiple times. When fetching releases, ``rngit release`` will only download files that are missing or invalid according to the manifest. This means that partially completed release fetches can be continued later, if interrupted. + +**Offline Verification** + +Because the release manifest contains embedded signatures, you can verify the integrity of release artifacts offline, without connecting to the repository node. The ``rnid`` and ``rngit`` utilities can validate artifact signatures against ``.rsg`` and manifest files. + +**For individual files:** + +Ensure the ``.rsg`` signature is located in the same directory as the release artifact, then run: + +.. code:: text + + $ rnid -V myapp-1.2.0.tar.gz + +This validates that the artifact file matches the signature created during the release process. Combined with the manifest's own signature, this provides end-to-end verification from the original release creation to the final installation. + +**For a complete release:** + +Ensure the release manifest is located in the same directory as the release artifacts, then run: + +.. code:: text + + $ rngit release myapp-1.2.0.rsm --offline + +This will load the manifest, and verify all files currently on-disk, but will not attempt to fetch the latest release manifest from the origin, or update local files to match it. + +.. _git-release-create: + +Creating Signed Releases +------------------------ + +Reticulum and the ``rngit`` system makes it easy to create signed releases that your users can verify and update securely. When you create a release using ``rngit``, the program automatically: + +1. Generates an Ed25519 signature for each artifact file using your identity's signing key +2. Creates ``.rsg`` signature files alongside each artifact in your distribution directory +3. Constructs a signed release manifest (``manifest.rsm``) containing metadata, an artifact list, and embedded signatures +4. Transmits both artifacts, signatures and manifest to the remote node specified as release origin + +As an example, to create and publish a release from all files in the folder named ``dist``, simply run: + +.. code:: text + + $ rngit release rns://my_node/group/myrepo create 1.2.0:./dist + +Everything is automatically signed and uploaded to your node, and the release manifest will now include the following signed attestation information: + +- Package name and version +- The release notes for this release +- Release timestamp and commit hash +- Origin node identity and repository path +- Complete list of artifacts +- Embedded signatures for each artifact + +That's it, there's nothing more to it than one command. Users can now securely obtain your release using ``rngit release fetch``. + +**Release Manifest Format** + +Release manifests use the ``.rsm`` format (a general-purpose, structured signed message format) and are themselves cryptographically signed documents. The manifest format embeds the signing identity's public key and a detached signature that covers the entire manifest content. This creates a chain of trust: the manifest signature proves the manifest's authenticity, and the embedded artifact signatures prove each file's integrity. + +When a release is created, the manifest is stored as ``manifest.rsm`` in the release artifacts directory. You can also generate a local release manifest without uploading by using the ``--local`` flag: + +.. code:: text + + $ rngit release rns://f2d31b2e080e5d4e358d32822ee4a3b7/public/myrepo create 1.2.0:./dist --local + +This creates the ``.rsg`` signature files and ``manifest.rsm`` in your local distribution directory without connecting to the remote node, allowing you to inspect or distribute the signed release through alternative channels. + +**Signature File Format** + +Individual artifact signatures use the Reticulum Signature (``.rsg``) format and contain: + +- The Ed25519 signature of the file +- The signing identity's public key +- Optional metadata, such as timestamps or notes + +These signature files are created automatically during the release process and can be used independently of the manifest for verification purposes. The ``rnid`` utility can create and validate RSG signatures for any file, making this signature format useful beyond the ``rngit`` release system. + +**Good Practices for Signature Distribution** + +While release manifests in the ``.rsm`` format *include* embedded ``.rsg`` signatures for every listed artifact, it is dependent on the situation and requirements whether individual ``.rsg`` signatures are distributed as well. It is generally a good idea to do so, since they are very light-weight, and provide an easy and convenient way to validate and authenticate *individual* files, as opposed to entire releases. + +When distributing software through multiple channels (direct download, mirror networks, physical media), including the ``.rsm`` manifest allows recipients to verify authenticity regardless of how they obtained the files. This is particularly valuable in low-connectivity environments where Reticulum may be the only available communication channel, as the manifest ensures that software updates can be verified even when received via store-and-forward mechanisms or physical media transport. + +**Integration with Package Management** + +While this functionality is still under development, the signed release manifest format is designed to be consumed by package management systems and automated deployment tools. Because the manifest is cryptographically signed and contains all necessary metadata and integrity checks, it can serve as a trusted source of truth for software distribution, even when fetched over untrusted channels or stored for long periods. + +**Release Encryption** + +While API primitives and command-line tools are currently not implemented for this, the release, distribution and verification system has been designed to also support *encrypted* releases, which can be distributed securely to authorized recipients. + +**Verified Package Format** + +The current system is being expanded to also include an ``.rvp`` package format, which can contain packaged releases including all relevant artifacts, metadata, manifest and signatures. + +**Automated Mirror Discovery** + +The ``rngit`` release system is designed to support automated mirror discovery and distribution package retrieval over Reticulum networks. Since everything is cryptographically signed and verified, it is possible to create automated mirror and distribution networks, where users can obtain software and information from local sources, without risking malicious modifications to the software they rely on. This functionality is currently in development. + + Release Management ================== @@ -693,11 +929,11 @@ To create a release, specify the tag name and path to artifacts: .. code:: text - $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create v1.2.0:./dist + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create 1.2.0:./dist This will: -1. Verify that the tag ``v1.2.0`` exists in the repository +1. Verify that the tag ``1.2.0`` exists in the repository 2. Open your editor to write release notes 3. Upload all files from the ``./dist`` directory 4. Publish the release @@ -728,9 +964,9 @@ To view all releases for a repository: Tag Status Created Objs Notes ------------------------------------------------------------------ - v1.2.0 published 2025-01-15 14:32 3 Another release - v1.1.0 published 2024-12-03 09:15 2 Bug fix release - v1.0.0 published 2024-10-20 16:45 2 Initial release + 1.2.0 published 2025-01-15 14:32 3 Another release + 1.1.0 published 2024-12-03 09:15 2 Bug fix release + 1.0.0 published 2024-10-20 16:45 2 Initial release **Viewing Release Details** @@ -738,9 +974,9 @@ To see full information about a specific release: .. code:: text - $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo view v1.2.0 + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo view 1.2.0 - Release : 0.9.2 + Release : 1.2.0 Status : published Created : 2026-05-04 23:53:09 Thanks : 5 @@ -756,16 +992,37 @@ To see full information about a specific release: - myapp-1.2.0.zip (1.6 MB) - checksums.txt (256 B) + +**Fetching Releases** + +To fetch a release, specify the remote URL, version and artifacts: + +.. code:: text + + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo fetch latest:all + +This process is described in greater detail in the :ref:`Obtaining Verified Releases` section. + +**Creating Releases** + +To fetch a release, specify the remote URL, version and artifacts: + +.. code:: text + + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create 1.3.9:artifacts_dir + +This process is described in greater detail in the :ref:`Creating Signed Releases` section. + **Deleting Releases** To remove a release: .. code:: text - $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo delete v1.2.0 + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo delete 1.2.0 - Are you sure you want to delete release 'v1.2.0'? [y/N]: y - Release v1.2.0 deleted + Are you sure you want to delete release '1.2.0'? [y/N]: y + Release 1.2.0 deleted **Requirements & Validation** @@ -793,15 +1050,16 @@ When the Nomad Network page node is enabled, releases are displayed on a dedicat .. code:: text - usage: rngit release [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] - [-i PATH] [-v] [-q] [--version] - [repository] [operation] [target] + usage: python -m RNS.Utilities.rngit.server [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] + [-i PATH] [-s PATH] [-n name] [-L] + [-o] [-v] [-q] [--version] + [repository] [operation] [target] Reticulum Git Release Manager positional arguments: - repository URL of remote repository - operation list, view, create or delete + repository URL of remote repository, or path to RSM manifest + operation list, view, fetch, create, latest or delete target tag and path to release artifacts directory options: @@ -810,6 +1068,10 @@ When the Nomad Network page node is enabled, releases are displayed on a dedicat --rnsconfig RNSCONFIG path to alternative Reticulum config directory -i, --identity PATH path to release identity + -s, --signer PATH path to signing identity, if different from release identity + -n, --name name package name if different from repo name + -L, --local generate release locally, but don't upload + -o, --offline verify manifest locally, but don't fetch updates -v, --verbose -q, --quiet --version show program's version number and exit diff --git a/docs/manual/git.html b/docs/manual/git.html index d82de03e..0c607ddd 100644 --- a/docs/manual/git.html +++ b/docs/manual/git.html @@ -266,8 +266,8 @@

A set of utilities for distributed collaborative software development and publishing are included in RNS.

The system consists of two parts: The rngit node that hosts repositories, and the git-remote-rns helper that enables Git to communicate with rngit nodes. As soon as you have RNS installed on your system, you can transparently use Git with Reticulum-hosted repositories just like any other type of remote. Git over Reticulum uses URLs in the following format: rns://DESTINATION_HASH/group/repo.

If you set a branch to track a Reticulum remote as the default upstream, you can simply use git as you normally would; all commands work transparently and as expected.

-
-

Warning

+
+

Important

The rngit program is a new addition to RNS! This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible permission system for allowing many users to interact with many different repositories on a single node, rngit has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public.

@@ -676,6 +676,63 @@ w:none
+
+

Remote Permission Management

+

While permissions can be configured directly on the node by editing configuration files and .allowed files, rngit also supports remote permission management through the rngit perms command. This allows administrators to modify access controls for groups and repositories over Reticulum, without requiring shell access to the hosting node.

+

To use remote permission management, you must have admin permission on the target group or repository. The command opens your configured $EDITOR to modify permissions, using the same syntax and format as local .allowed files. When you save and exit the editor, the modified permissions are transmitted to the remote node and applied immediately.

+
+

Managing Group Permissions

+

To view or modify permissions for an entire repository group, specify the group URL (ending with the group name):

+
$ rngit perms rns://50824b711717f97c2fb1166ceddd5ea9/public
+
+
+

This retrieves the current permission configuration from the public.allowed file and opens it in your editor. Any changes you make are validated for syntax correctness. Invalid permission rules will be rejected with an error message indicating the problematic line.

+
+
+

Managing Repository Permissions

+

To manage permissions for a specific repository, include the repository name in the URL:

+
$ rngit perms rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo
+
+
+

This operates on the myrepo.allowed file next to the repository. Repository-level permissions take precedence over group-level permissions, allowing fine-grained access control for individual repositories within a group.

+
+
+

Permission Validation

+

When modifying permissions remotely, rngit validates that:

+
    +
  • Each permission line follows the correct permission:target syntax

  • +
  • Permission types are valid (r, w, rw, c, s, rel, i, p, adm)

  • +
  • Target specifications are valid (identity hashes, all, or none)

  • +
  • Identity hashes, when specified, are the correct length (32 hexadecimal characters)

  • +
+

If validation fails, the editor will reopen with an error message describing the issue, allowing you to correct the problem before resubmitting.

+
+

Caution

+

Remote permission modification requires administrative access (the adm permission), which grants full control over the repository or group. The permission change request is transmitted over the encrypted Reticulum link, and the remote node verifies your identity cryptographically before applying changes. However, be aware that granting adm permissions to remote identities effectively delegates full control, including the ability to revoke your own access or modify permissions in ways you may not anticipate.

+
+

All Command-Line Options (rngit perms)

+
usage: rngit perms [-h] [--config CONFIG] [--rnsconfig RNSCONFIG]
+                   [-i PATH] [-v] [-q] [--version]
+                   remote
+
+Reticulum Git Permission Manager
+
+positional arguments:
+  remote                URL of remote group or repository
+
+options:
+  -h, --help            show this help message and exit
+  --config CONFIG       path to alternative config directory
+  --rnsconfig RNSCONFIG
+                        path to alternative Reticulum config directory
+  -i, --identity PATH   path to identity
+  -v, --verbose
+  -q, --quiet
+  --version             show program's version number and exit
+
+
+
+

Identity & Destination Aliases

To make permission and remote destination management easier, you can locally define aliases for commonly used identity and destination hashes. Identity aliases used in permissions resolution can be defined in the [aliases] section of the ~/.rngit/config file, while destination aliases are defined in the [aliases] section of the ~/.rngit/client_config file.

@@ -813,6 +870,120 @@ unicode_icons = yes
+
+

Verified Releases

+

The rngit release system provides cryptographic provenance and integrity guarantees through automatic signing of release artifacts and signed release manifests. When you create a release, rngit generates an Ed25519 signature for each artifact and embeds these signatures in a cryptographically signed release manifest (.rsm file). This allows anyone who obtains the release to verify its authenticity and integrity, regardless of how the files were distributed.

+
+

Obtaining Verified Releases

+

The rngit system lets you obtain releases securely and in a verified manner, by validating cryptographically signed release manifests in the .rsm format during the retrieval process. Once a release has been published with rngit, anyone that has read access to it can obtain the release with the rngit release command, for example:

+
$ rngit release rns://remote_node/group/some_program fetch latest:all
+
+
+

This command will connect to the remote, retrieve the latest release manifest, verify it’s signature and integrity (you can optionally specify a required signer identity with --signer), and then download and sequentially verify all artifacts included in the release.

+

If verification succeeds, the retrieved artifact files, along with the release manifest will be saved in the current working directory. From the above example, you would end up with a number of downloaded files, and a version- and package specific release manifest, such as some_program_1.5.2.rsm.

+
+

Important

+

Keeping the retrieved release manifest is a very good idea! It allows you to easily obtain future releases and updates to the software directly, while verifying they came from the same publisher.

+
+

Obtaining & Updating Releases Using RSM Manifests

+

One of the key features of the rngit release system is the ability to fetch and verify new releases using only a signed release manifest. This is particularly valuable for distributing software over Reticulum. Once someone has an .rsm manifest of your package, they can use it to continually retrieve and update the software.

+

To fetch a release using a manifest:

+
$ rngit release some_program_1.5.2.rsm fetch latest:all
+
+
+

This command:

+
    +
  1. Validates the manifest signature to confirm authenticity

  2. +
  3. Extracts the origin node and repository path from the signed manifest

  4. +
  5. Connects to the origin node over Reticulum

  6. +
  7. Gets the latest release manifest from the developer

  8. +
  9. Verifies it against the existing manifest

  10. +
  11. Fetches each artifact listed in the manifest

  12. +
  13. Verifies each downloaded file against the signature embedded in the manifest

  14. +
+

If any artifact fails signature verification, the fetch aborts with an error, preventing the installation of corrupted or tampered files.

+

Specifying Required Signers

+

You can require that releases be signed by specific identities. When fetching a release, use the --signer option to specify the identity hash of the required signer:

+
$ rngit release rns://remote_node/public/myrepo fetch latest:all --signer 21a8daa6d9c3d3b8aab6e94b6bcb0e33
+
+
+

If the release was not signed by the specified identity, the fetch will abort before any files are downloaded. Likewise, if any downloaded artifacts were not signed by the required identity, the process will abort at the first invalid signature. This provides strong guarantees about the provenance of the software you are installing.

+

The signer check also works when fetching from a local manifest:

+
$ rngit release manifest.rsm fetch latest:all --signer 21a8daa6d9c3d3b8aab6e94b6bcb0e33
+
+
+

Selective & Partial Fetches

+

You can fetch individual artifacts from a release by specifying the artifact name instead of all:

+
$ rngit release rns://remote_node/public/myrepo fetch 1.2.0:myapp-1.2.0.tar.gz
+
+
+

This downloads only the specified artifact and verifies its signature against the manifest. If a file already exists locally, rngit verifies it against the manifest signature and skips the download if valid, making it safe to run the command multiple times. When fetching releases, rngit release will only download files that are missing or invalid according to the manifest. This means that partially completed release fetches can be continued later, if interrupted.

+

Offline Verification

+

Because the release manifest contains embedded signatures, you can verify the integrity of release artifacts offline, without connecting to the repository node. The rnid and rngit utilities can validate artifact signatures against .rsg and manifest files.

+

For individual files:

+

Ensure the .rsg signature is located in the same directory as the release artifact, then run:

+
$ rnid -V myapp-1.2.0.tar.gz
+
+
+

This validates that the artifact file matches the signature created during the release process. Combined with the manifest’s own signature, this provides end-to-end verification from the original release creation to the final installation.

+

For a complete release:

+

Ensure the release manifest is located in the same directory as the release artifacts, then run:

+
$ rngit release myapp-1.2.0.rsm --offline
+
+
+

This will load the manifest, and verify all files currently on-disk, but will not attempt to fetch the latest release manifest from the origin, or update local files to match it.

+
+
+

Creating Signed Releases

+

Reticulum and the rngit system makes it easy to create signed releases that your users can verify and update securely. When you create a release using rngit, the program automatically:

+
    +
  1. Generates an Ed25519 signature for each artifact file using your identity’s signing key

  2. +
  3. Creates .rsg signature files alongside each artifact in your distribution directory

  4. +
  5. Constructs a signed release manifest (manifest.rsm) containing metadata, an artifact list, and embedded signatures

  6. +
  7. Transmits both artifacts, signatures and manifest to the remote node specified as release origin

  8. +
+

As an example, to create and publish a release from all files in the folder named dist, simply run:

+
$ rngit release rns://my_node/group/myrepo create 1.2.0:./dist
+
+
+

Everything is automatically signed and uploaded to your node, and the release manifest will now include the following signed attestation information:

+
    +
  • Package name and version

  • +
  • The release notes for this release

  • +
  • Release timestamp and commit hash

  • +
  • Origin node identity and repository path

  • +
  • Complete list of artifacts

  • +
  • Embedded signatures for each artifact

  • +
+

That’s it, there’s nothing more to it than one command. Users can now securely obtain your release using rngit release fetch.

+

Release Manifest Format

+

Release manifests use the .rsm format (a general-purpose, structured signed message format) and are themselves cryptographically signed documents. The manifest format embeds the signing identity’s public key and a detached signature that covers the entire manifest content. This creates a chain of trust: the manifest signature proves the manifest’s authenticity, and the embedded artifact signatures prove each file’s integrity.

+

When a release is created, the manifest is stored as manifest.rsm in the release artifacts directory. You can also generate a local release manifest without uploading by using the --local flag:

+
$ rngit release rns://f2d31b2e080e5d4e358d32822ee4a3b7/public/myrepo create 1.2.0:./dist --local
+
+
+

This creates the .rsg signature files and manifest.rsm in your local distribution directory without connecting to the remote node, allowing you to inspect or distribute the signed release through alternative channels.

+

Signature File Format

+

Individual artifact signatures use the Reticulum Signature (.rsg) format and contain:

+
    +
  • The Ed25519 signature of the file

  • +
  • The signing identity’s public key

  • +
  • Optional metadata, such as timestamps or notes

  • +
+

These signature files are created automatically during the release process and can be used independently of the manifest for verification purposes. The rnid utility can create and validate RSG signatures for any file, making this signature format useful beyond the rngit release system.

+

Good Practices for Signature Distribution

+

While release manifests in the .rsm format include embedded .rsg signatures for every listed artifact, it is dependent on the situation and requirements whether individual .rsg signatures are distributed as well. It is generally a good idea to do so, since they are very light-weight, and provide an easy and convenient way to validate and authenticate individual files, as opposed to entire releases.

+

When distributing software through multiple channels (direct download, mirror networks, physical media), including the .rsm manifest allows recipients to verify authenticity regardless of how they obtained the files. This is particularly valuable in low-connectivity environments where Reticulum may be the only available communication channel, as the manifest ensures that software updates can be verified even when received via store-and-forward mechanisms or physical media transport.

+

Integration with Package Management

+

While this functionality is still under development, the signed release manifest format is designed to be consumed by package management systems and automated deployment tools. Because the manifest is cryptographically signed and contains all necessary metadata and integrity checks, it can serve as a trusted source of truth for software distribution, even when fetched over untrusted channels or stored for long periods.

+

Release Encryption

+

While API primitives and command-line tools are currently not implemented for this, the release, distribution and verification system has been designed to also support encrypted releases, which can be distributed securely to authorized recipients.

+

Verified Package Format

+

The current system is being expanded to also include an .rvp package format, which can contain packaged releases including all relevant artifacts, metadata, manifest and signatures.

+

Automated Mirror Discovery

+

The rngit release system is designed to support automated mirror discovery and distribution package retrieval over Reticulum networks. Since everything is cryptographically signed and verified, it is possible to create automated mirror and distribution networks, where users can obtain software and information from local sources, without risking malicious modifications to the software they rely on. This functionality is currently in development.

+
+

Release Management

In addition to hosting Git repositories, rngit provides a complete release management system. This allows you to publish versioned releases with associated artifacts, release notes and metadata. Releases are managed through the rngit release subcommand, and are also viewable through the Nomad Network page interface.

@@ -820,12 +991,12 @@ unicode_icons = yes

The Release Workflow

Creating a release involves specifying a Git tag and a directory containing build artifacts or other files to distribute. The rngit client will open your configured $EDITOR to compose release notes, then upload all artifacts to the remote repository node.

To create a release, specify the tag name and path to artifacts:

-
$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create v1.2.0:./dist
+
$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create 1.2.0:./dist
 

This will:

    -
  1. Verify that the tag v1.2.0 exists in the repository

  2. +
  3. Verify that the tag 1.2.0 exists in the repository

  4. Open your editor to write release notes

  5. Upload all files from the ./dist directory

  6. Publish the release

  7. @@ -850,16 +1021,16 @@ unicode_icons = yes Tag Status Created Objs Notes ------------------------------------------------------------------ -v1.2.0 published 2025-01-15 14:32 3 Another release -v1.1.0 published 2024-12-03 09:15 2 Bug fix release -v1.0.0 published 2024-10-20 16:45 2 Initial release +1.2.0 published 2025-01-15 14:32 3 Another release +1.1.0 published 2024-12-03 09:15 2 Bug fix release +1.0.0 published 2024-10-20 16:45 2 Initial release

Viewing Release Details

To see full information about a specific release:

-
$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo view v1.2.0
+
$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo view 1.2.0
 
-Release : 0.9.2
+Release : 1.2.0
 Status  : published
 Created : 2026-05-04 23:53:09
 Thanks  : 5
@@ -876,12 +1047,24 @@ Artifacts (4)
   - checksums.txt (256 B)
 
+

Fetching Releases

+

To fetch a release, specify the remote URL, version and artifacts:

+
$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo fetch latest:all
+
+
+

This process is described in greater detail in the Obtaining Verified Releases section.

+

Creating Releases

+

To fetch a release, specify the remote URL, version and artifacts:

+
$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create 1.3.9:artifacts_dir
+
+
+

This process is described in greater detail in the Creating Signed Releases section.

Deleting Releases

To remove a release:

-
$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo delete v1.2.0
+
$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo delete 1.2.0
 
-Are you sure you want to delete release 'v1.2.0'? [y/N]: y
-Release v1.2.0 deleted
+Are you sure you want to delete release '1.2.0'? [y/N]: y
+Release 1.2.0 deleted
 

Requirements & Validation

@@ -902,15 +1085,16 @@ rel:none # Deny everyone

Nomad Network Interface

When the Nomad Network page node is enabled, releases are displayed on a dedicated releases page for each repository. Each release is listed with its tag, creation date, artifact count and a preview of the release notes. Clicking a release shows the full details including formatted release notes and a listing of all artifacts with their sizes.

All Command-Line Options (rngit release)

-
usage: rngit release [-h] [--config CONFIG] [--rnsconfig RNSCONFIG]
-                     [-i PATH] [-v] [-q] [--version]
-                     [repository] [operation] [target]
+
usage: python -m RNS.Utilities.rngit.server [-h] [--config CONFIG] [--rnsconfig RNSCONFIG]
+                                            [-i PATH] [-s PATH] [-n name] [-L]
+                                            [-o] [-v] [-q] [--version]
+                                            [repository] [operation] [target]
 
 Reticulum Git Release Manager
 
 positional arguments:
-  repository            URL of remote repository
-  operation             list, view, create or delete
+  repository            URL of remote repository, or path to RSM manifest
+  operation             list, view, fetch, create, latest or delete
   target                tag and path to release artifacts directory
 
 options:
@@ -919,6 +1103,10 @@ options:
   --rnsconfig RNSCONFIG
                         path to alternative Reticulum config directory
   -i, --identity PATH   path to release identity
+  -s, --signer PATH     path to signing identity, if different from release identity
+  -n, --name name       package name if different from repo name
+  -L, --local           generate release locally, but don't upload
+  -o, --offline         verify manifest locally, but don't fetch updates
   -v, --verbose
   -q, --quiet
   --version             show program's version number and exit
@@ -1192,6 +1380,12 @@ options:
 
  • Permission Configuration Locations
  • +
  • Remote Permission Management +
  • Identity & Destination Aliases
  • Serving Pages Over Nomad Network
  • +
  • Verified Releases +
  • Release Management
  • +
  • Remote Permission Management +
  • Identity & Destination Aliases
  • Serving Pages Over Nomad Network
  • +
  • Verified Releases +
  • Release Management
    • The Release Workflow
    • Release Storage & Structure
    • diff --git a/docs/manual/objects.inv b/docs/manual/objects.inv index 559f1c30a7ed603975bed4fb6d33efb55bb080e5..b6a174fbece3ff4045e18656213c9f96e8abd90a 100644 GIT binary patch delta 2960 zcmV;B3vcxN7o-@Fj0Q_@<2Vw&k&-EYv_;B&>a7GjEjg20P0 zW9W=McoamV2A&dD%=Y4O>M@)IV>sd<7qB#=DbD!C9GKxVVPG*m5q?SW7!5KU(+~VR z>|twzwH$Je7#?!qx~L?1#Eg>!32!yy|;KhZ1#c*ah{Q5 z&as&yC4RNpFWv96mk|`m_i@U9nHQ1dotfCa0ZtN{gM>9MO+D}u53v-&1@lfBjlBfL z)py16&zO5@Mn2Sv*}_A_!ZDc2M+?s-0Zur7;nu@P6b1LF z|GV6VffeuFHiAQh4G*4y6A~8U!1GZQ9g+V&hAagf{BsvYM(L?E&b{gsT#SR0EhsiUm9i|4eAcmpF6c&3;%8T zwp;yeJ*-NWcR;=6U)z;``(}&YyNAtUwqHJa&$He0%X0H||7^?Q=NY`Nc~oGtq&8_v zV=PjG#uP#Fc;T4Y!%if^cBnjxJkxltQ6ut46PrV*^G885h}AGrYn8_&jTU&E(f|{! ziS^1r69{p41jH&AX{>F8n~s?i&!EypBBxldA4GlvlQJ6b1rn-%K?D|JR?)WrEO-0a z{AIO!UN1L$Z@*eEUk`h4yL7$h*R2iFx8-s>ds*3yu0eX_r`clv>e_HL&C{PZ3Yi+l zmDPZYeN1FLyLr;ll&sTQ(b%RBsIZI?D*#I}V|l63$y_6-6MarT zum>%jF({!$n6|}` z&hJFi#EmWTfD9xmmbxThZFA9}kAJQPAznY_%ByYiZb@#FbPJ(y$6> z3O9I+b45+wG~(AFhB03uV51nGohyKyc*kmH@^bE+TMr~H0Q)d!_E>qg6+ueNE>>Zu zOT$TwA^F^Y1-4S*`YoR^Wa>ehCEWAIj91)j$vdfg)GqIY?qO znzSEG9YxSHY+g1JULFIJU^D?sX~OWG@WRX9!&~eMsYmomH7?_3QS_WK&nq4~d~vqRLa#EWyc4!__o?bWW0XMKP#gx0 zr1_Z>u_BdKK2Vff8kdDMj{+};#6sdUB0f>qadtFC+(>C=HJ5z}GKc_LcDkMIpPyEn z$EEA74YyJS?isRwD^-GR3iOGDjSvs5=2-uK5~2K>!{$!8B7y`oV)&4z%;VG!l;B^G z@Mt;?RmBQB{BN>TS+SYe3Z-PCKBHqi_%lLBs3|5_Ma%PF6WO5lVUmfwKIk+N79q_@ zFh*o(_}O;lxaC6$f@ChvHjd)l#bgwDC}$y>scygok)cmzclF_-9Y}q(Xatg;W2Ibw zS=5>dmwDPmTF2Hw=_93FoZqD>NzM~!m=f`g=tswyAQyv6p4EZj2{B%B%xm ze<4T^c%nZ=Yf!4UOgod3(y(JjQQ*T+w{i1QOapuOS{tU?(h8I_PU9;6+y)oI&PrD{ zng;tJy^URhgccW9on-}m8}?L_)Np-&p>PwrQm58_5mGd`8wuJ#armmm!8RmD16Ey2 zAq^@I`fq|%-^rZ+z@M^b)dpn+G@yP52)-6zXQ>`(`JTAdS-l4EM6)o5(yB3%ekg~U zB_N+hNCjo6b*jQy+ zeBnF^-#?QkmXyNq{1r;QN?{?|W26!R_PK(|aD*YOPvj?=SJ4acy3miD6Hw2UFxKFp zM}A9#*W$Gx`Hr*VzNMlGQ5Jln4A-YyJ}Vs~j`KvhJ9D1ZOO5QAeS@HIkt-Bbq~`Mk zHdJ;=DG?pBVW51LP-k0w@8K+eD~5;4UDSMPo>Dp52J=svy^D4C-<>r|a@c4^gA_%R za}KetIQVTm*`?SQkpUdC;Bhw4Xb6RL%hu4Ud|KK$IgxXoiCNV`VI`&`zqlZ3 zDc2&aB>=}2?givLqfvt`=X8)n$Y^C6=wDy{JBa>k3PRsjyIntrI4M1U(gY9j%uBgm z7MW^>IJ!BeMp1TfqH`J|daTR#(~&Rf5XU)2%#5$>Y^JYlQ@q!F{4@+qP<)U;yN01mYtO9W#E4558?NVt+R*- zMC+>@%!C8<5c#l|BM%1m&f&4XcOd%Xgf;S)den~iFY<8%p@*qsiXy6w0_W|iL(=>1fn8x(%xdv3k#SXZCrp|z#+Y2<~NmE_j z(bV;AwmGdPRr;`B)+o1&fKsaPW~Q(zQIH-PZLUvkg zPT>`EP!d3l{UE+pIu}j(ZI(kJ@=17DtNR#6nIATR@|iU5PQKp)^nuY6Zx?3eGqr@` zb^^r=#wyHO4Wq<=dhF9+5Hap5hqOXtboofBs@``HeS_A3m4R!}9NaGxN7F&+MQX^# z3pwziA$x`6N|W5B6A>xIRk5_jqTMAdhPVTZ4s~;Mg<1Rz5uJPdws#Ocz_tc+bI~z1 z>5qsJ{{*7)x22trDT^Pr)kp;?{V~2U3cKFJRMiV9_+v2!#e0znX zEc^5|#zW59Nr_d-sF^h#*f?*XgtIHAFQJp_y0W@|a%}0ss-4h;OlpvM`B0ozsE2BZ zo-5jc5j0{_A6{8x(pjhjc7T2QM}ih?2?;r|1% GmBG1d6R_6+ delta 2920 zcmV-u3zzhy82lHIj0R0_<2Vw%k&-EYX^WKm)M@FxN3vL~Vv(}D*-hv9>4Y;Uz5MA% zh%x66C&TanCqABrJdXbLZ)fu0YG4OH=@2S#lj)+*MTn9FM=nOeuto=eMeRpMxQ&{^ zH`M$LBaXcz2}p*0PH2K6@2H0wV;<6A&^AgX)5Ejled>V>@zhAle+_1@#h9XhAn;<$ z7&>DQ9tF{;hNpxTqrG^XdJHGQ7>zi{1ue~JiZgyOCuaCe7+6dXgkMrTrUx00=?DHD z_OP|VS~fXH3=cVQ9V$g0G2e_BUIHc7@#8e(}8AdyCh@W-p`==NUQX z9Gi8d>1 zm@|9&sQ%;RL^J=6W`Ct({>M!D8FMeq$cLISTY89CIEGXCXyLgezzHXR+`9RQqTrtH z|1P&-V8wfvjnEKb!-HqwgoK4S@O%_SN94bc5levw|J)^!QFo`KIU)%RW$apGw_mN7uZO+2UAo@$>()l-+j6;`y{zn7*CgHY(`>PSb!{}7=IPHH1*XPv zmJ|;4r-8|`NqH8)}yqBf-)txP@hAnAg$TlnyFQ8sEb(sS1SLYeV9KCmoReG^& z5;pQs!O7i;9aEiuTbSc%VA%k-Yv899S{!;nG`6V&DlTKhiolZ07%zKtGVc-W6MarT zum>fbF)5)%n6~AR(k+EIKFr&FB z&hKQ?#EMUc|6i&fa^ z%5V~6NIrLek*&IL{g%&|GW8(M67G3p+AD6hYb_SB60gRPmShY}4^3R^Q~&$4oV*&31Iv#2udiLf_I7{KgJLl|si z<5YClbcu4}=TROT`Iy2^XPeFIVY66zi<#*;N=1HIZN7Qy{lR-&?G~@!m&PZ|mBf0r zS*;IiZ@${Qv;ESZzdu-WdMtHqWtG6T#4&=b5Yh+!8d0y$*@r$!v7J8L2<(;sdyH8d18KVTshT<@2 zq|DEph#9G@@`0k<(zq<7c@%g#Bo-2<5%Gz-jr(3E0mIn`ize8;LivhVNWr+3N6onO|U`j!z2^DKIk+7i;!jn zj1d`XezsjXZuwA>AeoD^jiWesF=<5}%2_}&RSlRhGW4nJu0C9}BdM)1MoK2plX`CXclX&6}4nP3&E3ZJH`eD^kuljjQ-`n_PgMmEPHC z8SIDjHg^dK4Hs9Pt4EL0Lf!sNW%iuLamysz(~%6Sq3E*C3u~7UrKJ)Q;DnPag;9?m!+Nq~Q~SCD)v1y|zFhwiGX_uf4wCg&U$pmATe5#r!~Eb(NQVqYvr@Pb0e*}(2zbV%1pjb4>cOFJhga?Ud` zs#^T1U^?82TbWkpT4J@R>$u{Q7{qx-qlQ|}>7ao`m*gG4a~lOI5!a)TTIxH z&IW%v_0Qdl$$lX*5w2R-eJ5pt~CZdZ8}5Au@^ch!ZoZbph?wVmKpc&{=j8)vLh$ z)F0yS7h7i$5s21THJFKi2J}NDpO+n^yBs>phOkk%oJB;+@6|$xXoYHkcvFK^C;R< zXqKm)+Cfx;;?C0T zZKS@<*c7DeqRdXOZ3MN|KIIt?+vRhwR#`bcNk&_aqR6CwM_&c5#Z^ae1e*w~G`OYm zjxVL($ji84Emhcj!x!y51+}HzU2VN;W~(NqTzv0t=F)2oZmFm=RTJT&Qvi;*9S83C`YFNn5WR_y3M zj7GN*KOhl*Q9TX8f3}+1(WIREG-9e|HS$TtamqrsEvh#Q?7}#XjVw^^Id+)mX-BWT z-7`^A*p|kXGt(;?<+e}X9X#Z$os?LWjG9@~frax1op5%=@FjIp-4Ryze67B)Y9%x& zlNx1SJ`|@F>Y-|)=U#N61H8ar|ML{8)n_}hWky8Zt>{DYG^8vZMxf8*vk Sp$6)%lu+nM2mF7CwvgP8FsEz) diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index ae3cbbde..4c2411aa 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"A Carrier-Grade Fallacy":[[15,"a-carrier-grade-fallacy"]],"API Reference":[[9,null]],"ARM64":[[2,"arm64"]],"AX.25 KISS Interface":[[6,"ax-25-kiss-interface"]],"Accessing Repository Pages":[[3,"accessing-repository-pages"]],"Adding Radio Interfaces":[[2,"adding-radio-interfaces"]],"An Explanation of Reticulum for Human Beings":[[1,null]],"Anchor In The Flow":[[15,"anchor-in-the-flow"]],"Android":[[2,"android"]],"Announce":[[0,"announce"]],"Announce Propagation Rules":[[12,"announce-propagation-rules"]],"Announce Rate Control":[[6,"announce-rate-control"]],"Announcing Presence":[[15,"announcing-presence"]],"Auto Interface":[[6,"auto-interface"]],"Automated List Sourcing":[[13,"automated-list-sourcing"]],"Automatic Mirror Synchronization":[[3,"automatic-mirror-synchronization"]],"Backbone Interface":[[6,"backbone-interface"]],"Blackhole Management":[[13,"blackhole-management"]],"Bootstrapping Connectivity":[[2,"bootstrapping-connectivity"]],"Broadcast":[[0,"broadcast"]],"Buffer":[[0,"buffer"]],"Build Personal Infrastructure":[[2,"build-personal-infrastructure"]],"Building Networks":[[8,null]],"Channel":[[0,"channel"]],"Code Examples":[[0,null]],"Combining Hardware Types":[[4,"combining-hardware-types"]],"Command-Line Interaction":[[3,"command-line-interaction"]],"Common Interface Options":[[6,"common-interface-options"]],"Communications Hardware":[[4,null]],"Concepts & Overview":[[8,"concepts-overview"]],"Conceptual Overview":[[12,"conceptual-overview"]],"Configuration":[[3,"configuration"]],"Configuration & Data":[[13,"configuration-data"]],"Configuration Example":[[3,"configuration-example"]],"Configuration Methods":[[3,"configuration-methods"]],"Configuring Interfaces":[[6,null]],"Connect to the Distributed Backbone":[[2,"connect-to-the-distributed-backbone"]],"Connecting Remotes":[[6,"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":[[15,"cost-of-a-byte"]],"Creating Empty Repositories":[[3,"creating-empty-repositories"]],"Creating RNodes":[[4,"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":[[12,"creating-and-using-a-network-identity"]],"Creator Permissions":[[3,"creator-permissions"]],"Cryptographic Primitives":[[12,"cryptographic-primitives"]],"Current Status":[[14,"current-status"]],"Current Usage":[[12,"current-usage"]],"Custom Interfaces":[[0,"custom-interfaces"],[6,"custom-interfaces"]],"Customizing Templates":[[3,"customizing-templates"]],"Death To The Address":[[15,"death-to-the-address"]],"Debian Bookworm":[[2,"debian-bookworm"]],"Decentralization Or Uncentralizability?":[[15,"decentralization-or-uncentralizability"]],"Design Patterns For Post-IP Systems":[[15,"design-patterns-for-post-ip-systems"]],"Destination Naming":[[12,"destination-naming"]],"Destinations":[[12,"destinations"]],"Destinations, Not Addresses":[[8,"destinations-not-addresses"]],"Develop a Program with Reticulum":[[2,"develop-a-program-with-reticulum"]],"Discoverable Interfaces":[[6,"discoverable-interfaces"]],"Discovering Interfaces":[[13,"discovering-interfaces"]],"Discovery Parameters":[[6,"discovery-parameters"]],"Donations":[[11,"donations"]],"Echo":[[0,"echo"]],"Emergent Patterns":[[15,"emergent-patterns"]],"Enabling Discovery":[[6,"enabling-discovery"]],"Enabling the Git Page Node":[[3,"enabling-the-git-page-node"]],"Encryption Is Not A Feature":[[15,"encryption-is-not-a-feature"]],"Ethernet-based Hardware":[[4,"ethernet-based-hardware"]],"Ethics Of The Tool":[[15,"ethics-of-the-tool"]],"Example Configuration":[[6,"example-configuration"]],"Fabric Of The Independent":[[15,"fabric-of-the-independent"]],"Fallacy Of The Cloud":[[15,"fallacy-of-the-cloud"]],"Filetransfer":[[0,"filetransfer"]],"Finding Your Way":[[2,"finding-your-way"]],"Fixed Serial Port Names":[[13,"fixed-serial-port-names"]],"Flow & Time":[[15,"flow-time"]],"Forking Repositories":[[3,"forking-repositories"]],"Formatting & Syntax Highlighting":[[3,"formatting-syntax-highlighting"]],"Future Implications":[[12,"future-implications"]],"Getting Further":[[12,"getting-further"]],"Getting Started Fast":[[2,null]],"Git Configuration Parameters":[[3,"git-configuration-parameters"]],"Git Over Reticulum":[[3,null]],"Goals":[[12,"goals"]],"Heltec LoRa32 v2.0":[[4,"heltec-lora32-v2-0"]],"Heltec LoRa32 v3.0":[[4,"heltec-lora32-v3-0"]],"Heltec LoRa32 v4.0":[[4,"heltec-lora32-v4-0"]],"Heltec T114":[[4,"heltec-t114"]],"Heterogeneous Connectivity":[[8,"heterogeneous-connectivity"]],"Hostile Environments":[[15,"hostile-environments"]],"Hosting Public Entrypoints":[[2,"hosting-public-entrypoints"]],"I2P Interface":[[6,"i2p-interface"]],"Identification":[[0,"example-identify"]],"Identities":[[12,"understanding-identities"]],"Identity & Destination Aliases":[[3,"identity-destination-aliases"]],"Identity and Nomadism":[[15,"identity-and-nomadism"]],"Improving System Configuration":[[13,"improving-system-configuration"]],"Included Utility Programs":[[13,"included-utility-programs"]],"Indices and Tables":[[5,"indices-and-tables"]],"Installation":[[4,"installation"]],"Interface Access Codes":[[12,"interface-access-codes"]],"Interface Modes":[[6,"interface-modes"],[6,"interfaces-modes"]],"Interface Modules & Connectivity Resources":[[10,"interface-modules-connectivity-resources"]],"Interface Types and Devices":[[14,"interface-types-and-devices"]],"Introduction & Basic Functionality":[[12,"introduction-basic-functionality"]],"Introductory Considerations":[[8,"introductory-considerations"]],"KISS Interface":[[6,"kiss-interface"]],"LXMF":[[10,"lxmf"]],"LXMF Interactive Client":[[10,"lxmf-interactive-client"]],"LXMFy":[[10,"lxmfy"]],"LXST":[[10,"id16"]],"LXST Phone":[[10,"lxst-phone"]],"Liberation From Limits":[[15,"liberation-from-limits"]],"LilyGO LoRa32 v1.0":[[4,"lilygo-lora32-v1-0"]],"LilyGO LoRa32 v2.0":[[4,"lilygo-lora32-v2-0"]],"LilyGO LoRa32 v2.1":[[4,"lilygo-lora32-v2-1"]],"LilyGO T-Beam":[[4,"lilygo-t-beam"]],"LilyGO T-Beam Supreme":[[4,"lilygo-t-beam-supreme"]],"LilyGO T-Deck":[[4,"lilygo-t-deck"]],"LilyGO T-Echo":[[4,"lilygo-t-echo"]],"LilyGO T3S3":[[4,"lilygo-t3s3"]],"Link":[[0,"link"]],"Link Establishment in Detail":[[12,"link-establishment-in-detail"]],"Listeners":[[6,"listeners"]],"Local Blackhole Management":[[13,"local-blackhole-management"]],"MacOS":[[2,"macos"]],"Managing Work Document Permissions":[[3,"managing-work-document-permissions"]],"Manual Synchronization":[[3,"manual-synchronization"]],"Merits Of Scarcity":[[15,"merits-of-scarcity"]],"MeshChatX":[[10,"meshchatx"]],"Micron Parser JS":[[10,"micron-parser-js"]],"Minimal":[[0,"minimal"]],"Mirroring Repositories":[[3,"mirroring-repositories"]],"Mixing Strategies":[[2,"mixing-strategies"]],"Motivation":[[12,"motivation"]],"Naming Is Power":[[15,"naming-is-power"]],"Network Health & Responsibility":[[2,"network-health-responsibility"]],"Network Identities":[[12,"network-identities"]],"New Destination Rate Limiting":[[6,"new-destination-rate-limiting"]],"Node Types":[[12,"node-types"]],"Nomad Network":[[10,"nomad-network"]],"Open Sky":[[15,"open-sky"]],"OpenCom XL":[[4,"opencom-xl"]],"OpenWRT":[[2,"openwrt"]],"Packet Prioritisation":[[12,"packet-prioritisation"]],"Packet Radio Modems":[[4,"packet-radio-modems"]],"Path Request Burst Control":[[6,"path-request-burst-control"]],"Permission Configuration Locations":[[3,"permission-configuration-locations"]],"Permission Examples":[[3,"permission-examples"]],"Permission Hierarchy":[[3,"permission-hierarchy"]],"Permission Short Forms":[[3,"permission-short-forms"]],"Permission Types":[[3,"permission-types"]],"Permissions":[[3,"permissions"]],"Personal Infrastructure":[[15,"personal-infrastructure"]],"Physics Of Trust":[[15,"physics-of-trust"]],"Pipe Interface":[[6,"pipe-interface"]],"Platform-Specific Install Notes":[[2,"platform-specific-install-notes"]],"Portable Existence":[[15,"portable-existence"]],"Preserving Human Agency":[[15,"preserving-human-agency"]],"Programs & Utilities":[[10,"programs-utilities"]],"Programs Using Reticulum":[[10,null]],"Proposing Work Documents":[[3,"proposing-work-documents"]],"Protocol Specifics":[[12,"protocol-specifics"]],"Protocols":[[10,"protocols"]],"Provide Feedback":[[11,"provide-feedback"]],"Public Domain Protocol":[[15,"public-domain-protocol"]],"Public Key Announcements":[[12,"public-key-announcements"]],"Publishing Blackhole Lists":[[13,"publishing-blackhole-lists"]],"Pure-Python Reticulum":[[2,"pure-python-reticulum"]],"RAK4631-based Boards":[[4,"rak4631-based-boards"]],"RBrowser":[[10,"rbrowser"]],"RISC-V":[[2,"risc-v"]],"RNMon":[[10,"rnmon"]],"RNS FileSync":[[10,"rns-filesync"]],"RNS Page Node":[[10,"rns-page-node"]],"RNode":[[4,"rnode"]],"RNode LoRa Interface":[[6,"rnode-lora-interface"]],"RNode Multi Interface":[[6,"rnode-multi-interface"]],"RRC":[[10,"rrc"]],"Raspberry Pi":[[2,"raspberry-pi"]],"Reaching the Destination":[[12,"reaching-the-destination"]],"Reference Implementation":[[14,"reference-implementation"]],"Reference Setup":[[12,"reference-setup"]],"Release Management":[[3,"release-management"]],"Release Storage & Structure":[[3,"release-storage-structure"]],"Remote Management":[[13,"remote-management"]],"Remote Shell":[[10,"remote-shell"]],"Repository Creation & Management":[[3,"repository-creation-management"]],"Repository Statistics":[[3,"repository-statistics"]],"Repository Structure":[[3,"repository-structure"]],"Requests & Responses":[[0,"requests-responses"]],"Resolving Dependency & Installation Issues":[[2,"resolving-dependency-installation-issues"]],"Resources":[[12,"resources"]],"RetiBBS":[[10,"retibbs"]],"Reticulum License":[[7,null]],"Reticulum Network Stack Manual":[[5,null]],"Reticulum Network Telephone":[[10,"reticulum-network-telephone"]],"Reticulum Relay Chat":[[10,"reticulum-relay-chat"]],"Reticulum Transport":[[12,"reticulum-transport"]],"Reticulum as a System Service":[[13,"reticulum-as-a-system-service"]],"Retipedia":[[10,"retipedia"]],"Roaming Nodes":[[15,"roaming-nodes"]],"Security Considerations":[[6,"security-considerations"]],"Serial Interface":[[6,"serial-interface"]],"Serial Lines & Devices":[[4,"serial-lines-devices"]],"Serving Pages Over Nomad Network":[[3,"serving-pages-over-nomad-network"]],"Sideband":[[10,"sideband"]],"Sovereignty Through Infrastructure":[[15,"sovereignty-through-infrastructure"]],"Standalone Reticulum Installation":[[2,"standalone-reticulum-installation"]],"State Management":[[3,"state-management"]],"Store & Forward":[[15,"store-forward"]],"Support Reticulum":[[11,null]],"Supported Boards and Devices":[[4,"supported-boards-and-devices"]],"Systemwide Service":[[13,"systemwide-service"]],"TCP Client Interface":[[6,"tcp-client-interface"]],"TCP Server Interface":[[6,"tcp-server-interface"]],"Table Of Contents":[[5,"table-of-contents"]],"The Ability To Disconnect":[[15,"the-ability-to-disconnect"]],"The Announce Mechanism in Detail":[[12,"the-announce-mechanism-in-detail"]],"The Bandwidth Fallacy":[[15,"the-bandwidth-fallacy"]],"The Harm Principle":[[15,"the-harm-principle"]],"The Illusion Of The Center":[[15,"the-illusion-of-the-center"]],"The Interface Is The Medium":[[15,"the-interface-is-the-medium"]],"The Release Workflow":[[3,"the-release-workflow"]],"The Work Is Finished":[[15,"the-work-is-finished"]],"The rncp Utility":[[13,"the-rncp-utility"]],"The rngit Utility":[[3,"the-rngit-utility"],[13,"the-rngit-utility"]],"The rnid Utility":[[13,"the-rnid-utility"]],"The rnodeconf Utility":[[13,"the-rnodeconf-utility"]],"The rnpath Utility":[[13,"the-rnpath-utility"]],"The rnprobe Utility":[[13,"the-rnprobe-utility"]],"The rnsd Utility":[[13,"the-rnsd-utility"]],"The rnsh Utility":[[13,"the-rnsh-utility"]],"The rnstatus Utility":[[13,"the-rnstatus-utility"]],"The rnx Utility":[[13,"the-rnx-utility"]],"Transport Nodes and Instances":[[8,"transport-nodes-and-instances"]],"Trustless Networking":[[8,"trustless-networking"]],"Try Using a Reticulum-based Program":[[2,"try-using-a-reticulum-based-program"]],"UDP Interface":[[6,"udp-interface"]],"Ubuntu Lunar":[[2,"ubuntu-lunar"]],"Understanding Reticulum":[[12,null]],"Unsigned RNode v2.x":[[4,"unsigned-rnode-v2-x"]],"Usage with Reticulum":[[4,"usage-with-reticulum"]],"Userspace Service":[[13,"userspace-service"]],"Using Reticulum on Your System":[[13,null]],"Using the Included Utilities":[[2,"using-the-included-utilities"]],"What does Reticulum Offer?":[[14,"what-does-reticulum-offer"]],"What is Reticulum?":[[14,null]],"Where can Reticulum be Used?":[[14,"where-can-reticulum-be-used"]],"WiFi-based Hardware":[[4,"wifi-based-hardware"]],"Windows":[[2,"windows"]],"Wire Format":[[12,"wire-format"]],"Work Document Permissions":[[3,"work-document-permissions"]],"Work Documents":[[3,"work-documents"]],"Working With Work Documents":[[3,"working-with-work-documents"]],"Zen of Reticulum":[[15,null]],"Zero-Trust Architectures":[[15,"zero-trust-architectures"]]},"docnames":["examples","forhumans","gettingstartedfast","git","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","git.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)":[[9,"RNS.RawChannelReader.__init__",false]],"__init__() (rns.rawchannelwriter method)":[[9,"RNS.RawChannelWriter.__init__",false]],"accepts_links() (rns.destination method)":[[9,"RNS.Destination.accepts_links",false]],"add_message_handler() (rns.channel.channel method)":[[9,"RNS.Channel.Channel.add_message_handler",false]],"add_ready_callback() (rns.rawchannelreader method)":[[9,"RNS.RawChannelReader.add_ready_callback",false]],"advertise() (rns.resource method)":[[9,"RNS.Resource.advertise",false]],"announce() (rns.destination method)":[[9,"RNS.Destination.announce",false]],"announce_cap (rns.reticulum attribute)":[[9,"RNS.Reticulum.ANNOUNCE_CAP",false]],"app_and_aspects_from_name() (rns.destination static method)":[[9,"RNS.Destination.app_and_aspects_from_name",false]],"await_path() (rns.transport static method)":[[9,"RNS.Transport.await_path",false]],"blackhole_sources() (rns.reticulum static method)":[[9,"RNS.Reticulum.blackhole_sources",false]],"buffer (class in rns)":[[9,"RNS.Buffer",false]],"cancel() (rns.resource method)":[[9,"RNS.Resource.cancel",false]],"channel (class in rns.channel)":[[9,"RNS.Channel.Channel",false]],"clear_default_app_data() (rns.destination method)":[[9,"RNS.Destination.clear_default_app_data",false]],"concluded() (rns.requestreceipt method)":[[9,"RNS.RequestReceipt.concluded",false]],"create_bidirectional_buffer() (rns.buffer static method)":[[9,"RNS.Buffer.create_bidirectional_buffer",false]],"create_keys() (rns.destination method)":[[9,"RNS.Destination.create_keys",false]],"create_reader() (rns.buffer static method)":[[9,"RNS.Buffer.create_reader",false]],"create_writer() (rns.buffer static method)":[[9,"RNS.Buffer.create_writer",false]],"current_ratchet_id() (rns.identity static method)":[[9,"RNS.Identity.current_ratchet_id",false]],"curve (rns.identity attribute)":[[9,"RNS.Identity.CURVE",false]],"curve (rns.link attribute)":[[9,"RNS.Link.CURVE",false]],"decrypt() (rns.destination method)":[[9,"RNS.Destination.decrypt",false]],"decrypt() (rns.identity method)":[[9,"RNS.Identity.decrypt",false]],"deregister_announce_handler() (rns.transport static method)":[[9,"RNS.Transport.deregister_announce_handler",false]],"deregister_request_handler() (rns.destination method)":[[9,"RNS.Destination.deregister_request_handler",false]],"destination (class in rns)":[[9,"RNS.Destination",false]],"discovered_interfaces() (rns.reticulum static method)":[[9,"RNS.Reticulum.discovered_interfaces",false]],"enable_ratchets() (rns.destination method)":[[9,"RNS.Destination.enable_ratchets",false]],"encrypt() (rns.destination method)":[[9,"RNS.Destination.encrypt",false]],"encrypt() (rns.identity method)":[[9,"RNS.Identity.encrypt",false]],"encrypted_mdu (rns.packet attribute)":[[9,"RNS.Packet.ENCRYPTED_MDU",false]],"enforce_ratchets() (rns.destination method)":[[9,"RNS.Destination.enforce_ratchets",false]],"establishment_timeout_per_hop (rns.link attribute)":[[9,"RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP",false]],"expand_name() (rns.destination static method)":[[9,"RNS.Destination.expand_name",false]],"from_bytes() (rns.identity static method)":[[9,"RNS.Identity.from_bytes",false]],"from_file() (rns.identity static method)":[[9,"RNS.Identity.from_file",false]],"full_hash() (rns.identity static method)":[[9,"RNS.Identity.full_hash",false]],"get_age() (rns.link method)":[[9,"RNS.Link.get_age",false]],"get_channel() (rns.link method)":[[9,"RNS.Link.get_channel",false]],"get_data_size() (rns.resource method)":[[9,"RNS.Resource.get_data_size",false]],"get_establishment_rate() (rns.link method)":[[9,"RNS.Link.get_establishment_rate",false]],"get_expected_rate() (rns.link method)":[[9,"RNS.Link.get_expected_rate",false]],"get_hash() (rns.resource method)":[[9,"RNS.Resource.get_hash",false]],"get_instance() (rns.reticulum static method)":[[9,"RNS.Reticulum.get_instance",false]],"get_mdu() (rns.link method)":[[9,"RNS.Link.get_mdu",false]],"get_mode() (rns.link method)":[[9,"RNS.Link.get_mode",false]],"get_mtu() (rns.link method)":[[9,"RNS.Link.get_mtu",false]],"get_parts() (rns.resource method)":[[9,"RNS.Resource.get_parts",false]],"get_private_key() (rns.destination method)":[[9,"RNS.Destination.get_private_key",false]],"get_private_key() (rns.identity method)":[[9,"RNS.Identity.get_private_key",false]],"get_progress() (rns.requestreceipt method)":[[9,"RNS.RequestReceipt.get_progress",false]],"get_progress() (rns.resource method)":[[9,"RNS.Resource.get_progress",false]],"get_public_key() (rns.identity method)":[[9,"RNS.Identity.get_public_key",false]],"get_q() (rns.link method)":[[9,"RNS.Link.get_q",false]],"get_q() (rns.packet method)":[[9,"RNS.Packet.get_q",false]],"get_random_hash() (rns.identity static method)":[[9,"RNS.Identity.get_random_hash",false]],"get_remote_identity() (rns.link method)":[[9,"RNS.Link.get_remote_identity",false]],"get_request_id() (rns.requestreceipt method)":[[9,"RNS.RequestReceipt.get_request_id",false]],"get_response() (rns.requestreceipt method)":[[9,"RNS.RequestReceipt.get_response",false]],"get_response_time() (rns.requestreceipt method)":[[9,"RNS.RequestReceipt.get_response_time",false]],"get_rssi() (rns.link method)":[[9,"RNS.Link.get_rssi",false]],"get_rssi() (rns.packet method)":[[9,"RNS.Packet.get_rssi",false]],"get_rtt() (rns.packetreceipt method)":[[9,"RNS.PacketReceipt.get_rtt",false]],"get_segments() (rns.resource method)":[[9,"RNS.Resource.get_segments",false]],"get_snr() (rns.link method)":[[9,"RNS.Link.get_snr",false]],"get_snr() (rns.packet method)":[[9,"RNS.Packet.get_snr",false]],"get_status() (rns.packetreceipt method)":[[9,"RNS.PacketReceipt.get_status",false]],"get_status() (rns.requestreceipt method)":[[9,"RNS.RequestReceipt.get_status",false]],"get_transfer_size() (rns.resource method)":[[9,"RNS.Resource.get_transfer_size",false]],"has_path() (rns.transport static method)":[[9,"RNS.Transport.has_path",false]],"hash() (rns.destination static method)":[[9,"RNS.Destination.hash",false]],"hash_from_name_and_identity() (rns.destination static method)":[[9,"RNS.Destination.hash_from_name_and_identity",false]],"hops_to() (rns.transport static method)":[[9,"RNS.Transport.hops_to",false]],"identify() (rns.link method)":[[9,"RNS.Link.identify",false]],"identity (class in rns)":[[9,"RNS.Identity",false]],"inactive_for() (rns.link method)":[[9,"RNS.Link.inactive_for",false]],"interface_discovery_sources() (rns.reticulum static method)":[[9,"RNS.Reticulum.interface_discovery_sources",false]],"is_compressed() (rns.resource method)":[[9,"RNS.Resource.is_compressed",false]],"is_ready_to_send() (rns.channel.channel method)":[[9,"RNS.Channel.Channel.is_ready_to_send",false]],"keepalive (rns.link attribute)":[[9,"RNS.Link.KEEPALIVE",false]],"keepalive_timeout_factor (rns.link attribute)":[[9,"RNS.Link.KEEPALIVE_TIMEOUT_FACTOR",false]],"keysize (rns.identity attribute)":[[9,"RNS.Identity.KEYSIZE",false]],"link (class in rns)":[[9,"RNS.Link",false]],"link_mtu_discovery (rns.reticulum attribute)":[[9,"RNS.Reticulum.LINK_MTU_DISCOVERY",false]],"link_mtu_discovery() (rns.reticulum static method)":[[9,"RNS.Reticulum.link_mtu_discovery",false]],"load_private_key() (rns.destination method)":[[9,"RNS.Destination.load_private_key",false]],"load_private_key() (rns.identity method)":[[9,"RNS.Identity.load_private_key",false]],"load_public_key() (rns.identity method)":[[9,"RNS.Identity.load_public_key",false]],"mdu (rns.channel.channel property)":[[9,"RNS.Channel.Channel.mdu",false]],"messagebase (class in rns)":[[9,"RNS.MessageBase",false]],"minimum_bitrate (rns.reticulum attribute)":[[9,"RNS.Reticulum.MINIMUM_BITRATE",false]],"msgtype (rns.messagebase attribute)":[[9,"RNS.MessageBase.MSGTYPE",false]],"mtu (rns.reticulum attribute)":[[9,"RNS.Reticulum.MTU",false]],"next_hop() (rns.transport static method)":[[9,"RNS.Transport.next_hop",false]],"next_hop_interface() (rns.transport static method)":[[9,"RNS.Transport.next_hop_interface",false]],"no_data_for() (rns.link method)":[[9,"RNS.Link.no_data_for",false]],"no_inbound_for() (rns.link method)":[[9,"RNS.Link.no_inbound_for",false]],"no_outbound_for() (rns.link method)":[[9,"RNS.Link.no_outbound_for",false]],"pack() (rns.messagebase method)":[[9,"RNS.MessageBase.pack",false]],"packet (class in rns)":[[9,"RNS.Packet",false]],"packetreceipt (class in rns)":[[9,"RNS.PacketReceipt",false]],"pathfinder_m (rns.transport attribute)":[[9,"RNS.Transport.PATHFINDER_M",false]],"plain_mdu (rns.packet attribute)":[[9,"RNS.Packet.PLAIN_MDU",false]],"pub_to_file() (rns.identity method)":[[9,"RNS.Identity.pub_to_file",false]],"publish_blackhole_enabled() (rns.reticulum static method)":[[9,"RNS.Reticulum.publish_blackhole_enabled",false]],"ratchet_count (rns.destination attribute)":[[9,"RNS.Destination.RATCHET_COUNT",false]],"ratchet_expiry (rns.identity attribute)":[[9,"RNS.Identity.RATCHET_EXPIRY",false]],"ratchet_interval (rns.destination attribute)":[[9,"RNS.Destination.RATCHET_INTERVAL",false]],"ratchetsize (rns.identity attribute)":[[9,"RNS.Identity.RATCHETSIZE",false]],"rawchannelreader (class in rns)":[[9,"RNS.RawChannelReader",false]],"rawchannelwriter (class in rns)":[[9,"RNS.RawChannelWriter",false]],"recall() (rns.identity static method)":[[9,"RNS.Identity.recall",false]],"recall_app_data() (rns.identity static method)":[[9,"RNS.Identity.recall_app_data",false]],"register_announce_handler() (rns.transport static method)":[[9,"RNS.Transport.register_announce_handler",false]],"register_message_type() (rns.channel.channel method)":[[9,"RNS.Channel.Channel.register_message_type",false]],"register_request_handler() (rns.destination method)":[[9,"RNS.Destination.register_request_handler",false]],"remote_management_enabled() (rns.reticulum static method)":[[9,"RNS.Reticulum.remote_management_enabled",false]],"remove_message_handler() (rns.channel.channel method)":[[9,"RNS.Channel.Channel.remove_message_handler",false]],"remove_ready_callback() (rns.rawchannelreader method)":[[9,"RNS.RawChannelReader.remove_ready_callback",false]],"request() (rns.link method)":[[9,"RNS.Link.request",false]],"request_path() (rns.transport static method)":[[9,"RNS.Transport.request_path",false]],"requestreceipt (class in rns)":[[9,"RNS.RequestReceipt",false]],"required_discovery_value() (rns.reticulum static method)":[[9,"RNS.Reticulum.required_discovery_value",false]],"resend() (rns.packet method)":[[9,"RNS.Packet.resend",false]],"resource (class in rns)":[[9,"RNS.Resource",false]],"reticulum (class in rns)":[[9,"RNS.Reticulum",false]],"send() (rns.channel.channel method)":[[9,"RNS.Channel.Channel.send",false]],"send() (rns.packet method)":[[9,"RNS.Packet.send",false]],"set_default_app_data() (rns.destination method)":[[9,"RNS.Destination.set_default_app_data",false]],"set_delivery_callback() (rns.packetreceipt method)":[[9,"RNS.PacketReceipt.set_delivery_callback",false]],"set_link_closed_callback() (rns.link method)":[[9,"RNS.Link.set_link_closed_callback",false]],"set_link_established_callback() (rns.destination method)":[[9,"RNS.Destination.set_link_established_callback",false]],"set_packet_callback() (rns.destination method)":[[9,"RNS.Destination.set_packet_callback",false]],"set_packet_callback() (rns.link method)":[[9,"RNS.Link.set_packet_callback",false]],"set_proof_requested_callback() (rns.destination method)":[[9,"RNS.Destination.set_proof_requested_callback",false]],"set_proof_strategy() (rns.destination method)":[[9,"RNS.Destination.set_proof_strategy",false]],"set_ratchet_interval() (rns.destination method)":[[9,"RNS.Destination.set_ratchet_interval",false]],"set_remote_identified_callback() (rns.link method)":[[9,"RNS.Link.set_remote_identified_callback",false]],"set_resource_callback() (rns.link method)":[[9,"RNS.Link.set_resource_callback",false]],"set_resource_concluded_callback() (rns.link method)":[[9,"RNS.Link.set_resource_concluded_callback",false]],"set_resource_started_callback() (rns.link method)":[[9,"RNS.Link.set_resource_started_callback",false]],"set_resource_strategy() (rns.link method)":[[9,"RNS.Link.set_resource_strategy",false]],"set_retained_ratchets() (rns.destination method)":[[9,"RNS.Destination.set_retained_ratchets",false]],"set_timeout() (rns.packetreceipt method)":[[9,"RNS.PacketReceipt.set_timeout",false]],"set_timeout_callback() (rns.packetreceipt method)":[[9,"RNS.PacketReceipt.set_timeout_callback",false]],"should_use_implicit_proof() (rns.reticulum static method)":[[9,"RNS.Reticulum.should_use_implicit_proof",false]],"sign() (rns.destination method)":[[9,"RNS.Destination.sign",false]],"sign() (rns.identity method)":[[9,"RNS.Identity.sign",false]],"stale_grace (rns.link attribute)":[[9,"RNS.Link.STALE_GRACE",false]],"stale_time (rns.link attribute)":[[9,"RNS.Link.STALE_TIME",false]],"teardown() (rns.link method)":[[9,"RNS.Link.teardown",false]],"to_file() (rns.identity method)":[[9,"RNS.Identity.to_file",false]],"track_phy_stats() (rns.link method)":[[9,"RNS.Link.track_phy_stats",false]],"transport (class in rns)":[[9,"RNS.Transport",false]],"transport_enabled() (rns.reticulum static method)":[[9,"RNS.Reticulum.transport_enabled",false]],"truncated_hash() (rns.identity static method)":[[9,"RNS.Identity.truncated_hash",false]],"truncated_hashlength (rns.identity attribute)":[[9,"RNS.Identity.TRUNCATED_HASHLENGTH",false]],"unpack() (rns.messagebase method)":[[9,"RNS.MessageBase.unpack",false]],"validate() (rns.identity method)":[[9,"RNS.Identity.validate",false]]},"objects":{"RNS":[[9,0,1,"","Buffer"],[9,0,1,"","Destination"],[9,0,1,"","Identity"],[9,0,1,"","Link"],[9,0,1,"","MessageBase"],[9,0,1,"","Packet"],[9,0,1,"","PacketReceipt"],[9,0,1,"","RawChannelReader"],[9,0,1,"","RawChannelWriter"],[9,0,1,"","RequestReceipt"],[9,0,1,"","Resource"],[9,0,1,"","Reticulum"],[9,0,1,"","Transport"]],"RNS.Buffer":[[9,1,1,"","create_bidirectional_buffer"],[9,1,1,"","create_reader"],[9,1,1,"","create_writer"]],"RNS.Channel":[[9,0,1,"","Channel"]],"RNS.Channel.Channel":[[9,1,1,"","add_message_handler"],[9,1,1,"","is_ready_to_send"],[9,2,1,"","mdu"],[9,1,1,"","register_message_type"],[9,1,1,"","remove_message_handler"],[9,1,1,"","send"]],"RNS.Destination":[[9,3,1,"","RATCHET_COUNT"],[9,3,1,"","RATCHET_INTERVAL"],[9,1,1,"","accepts_links"],[9,1,1,"","announce"],[9,1,1,"","app_and_aspects_from_name"],[9,1,1,"","clear_default_app_data"],[9,1,1,"","create_keys"],[9,1,1,"","decrypt"],[9,1,1,"","deregister_request_handler"],[9,1,1,"","enable_ratchets"],[9,1,1,"","encrypt"],[9,1,1,"","enforce_ratchets"],[9,1,1,"","expand_name"],[9,1,1,"","get_private_key"],[9,1,1,"","hash"],[9,1,1,"","hash_from_name_and_identity"],[9,1,1,"","load_private_key"],[9,1,1,"","register_request_handler"],[9,1,1,"","set_default_app_data"],[9,1,1,"","set_link_established_callback"],[9,1,1,"","set_packet_callback"],[9,1,1,"","set_proof_requested_callback"],[9,1,1,"","set_proof_strategy"],[9,1,1,"","set_ratchet_interval"],[9,1,1,"","set_retained_ratchets"],[9,1,1,"","sign"]],"RNS.Identity":[[9,3,1,"","CURVE"],[9,3,1,"","KEYSIZE"],[9,3,1,"","RATCHETSIZE"],[9,3,1,"","RATCHET_EXPIRY"],[9,3,1,"","TRUNCATED_HASHLENGTH"],[9,1,1,"","current_ratchet_id"],[9,1,1,"","decrypt"],[9,1,1,"","encrypt"],[9,1,1,"","from_bytes"],[9,1,1,"","from_file"],[9,1,1,"","full_hash"],[9,1,1,"","get_private_key"],[9,1,1,"","get_public_key"],[9,1,1,"","get_random_hash"],[9,1,1,"","load_private_key"],[9,1,1,"","load_public_key"],[9,1,1,"","pub_to_file"],[9,1,1,"","recall"],[9,1,1,"","recall_app_data"],[9,1,1,"","sign"],[9,1,1,"","to_file"],[9,1,1,"","truncated_hash"],[9,1,1,"","validate"]],"RNS.Link":[[9,3,1,"","CURVE"],[9,3,1,"","ESTABLISHMENT_TIMEOUT_PER_HOP"],[9,3,1,"","KEEPALIVE"],[9,3,1,"","KEEPALIVE_TIMEOUT_FACTOR"],[9,3,1,"","STALE_GRACE"],[9,3,1,"","STALE_TIME"],[9,1,1,"","get_age"],[9,1,1,"","get_channel"],[9,1,1,"","get_establishment_rate"],[9,1,1,"","get_expected_rate"],[9,1,1,"","get_mdu"],[9,1,1,"","get_mode"],[9,1,1,"","get_mtu"],[9,1,1,"","get_q"],[9,1,1,"","get_remote_identity"],[9,1,1,"","get_rssi"],[9,1,1,"","get_snr"],[9,1,1,"","identify"],[9,1,1,"","inactive_for"],[9,1,1,"","no_data_for"],[9,1,1,"","no_inbound_for"],[9,1,1,"","no_outbound_for"],[9,1,1,"","request"],[9,1,1,"","set_link_closed_callback"],[9,1,1,"","set_packet_callback"],[9,1,1,"","set_remote_identified_callback"],[9,1,1,"","set_resource_callback"],[9,1,1,"","set_resource_concluded_callback"],[9,1,1,"","set_resource_started_callback"],[9,1,1,"","set_resource_strategy"],[9,1,1,"","teardown"],[9,1,1,"","track_phy_stats"]],"RNS.MessageBase":[[9,3,1,"","MSGTYPE"],[9,1,1,"","pack"],[9,1,1,"","unpack"]],"RNS.Packet":[[9,3,1,"","ENCRYPTED_MDU"],[9,3,1,"","PLAIN_MDU"],[9,1,1,"","get_q"],[9,1,1,"","get_rssi"],[9,1,1,"","get_snr"],[9,1,1,"","resend"],[9,1,1,"","send"]],"RNS.PacketReceipt":[[9,1,1,"","get_rtt"],[9,1,1,"","get_status"],[9,1,1,"","set_delivery_callback"],[9,1,1,"","set_timeout"],[9,1,1,"","set_timeout_callback"]],"RNS.RawChannelReader":[[9,1,1,"","__init__"],[9,1,1,"","add_ready_callback"],[9,1,1,"","remove_ready_callback"]],"RNS.RawChannelWriter":[[9,1,1,"","__init__"]],"RNS.RequestReceipt":[[9,1,1,"","concluded"],[9,1,1,"","get_progress"],[9,1,1,"","get_request_id"],[9,1,1,"","get_response"],[9,1,1,"","get_response_time"],[9,1,1,"","get_status"]],"RNS.Resource":[[9,1,1,"","advertise"],[9,1,1,"","cancel"],[9,1,1,"","get_data_size"],[9,1,1,"","get_hash"],[9,1,1,"","get_parts"],[9,1,1,"","get_progress"],[9,1,1,"","get_segments"],[9,1,1,"","get_transfer_size"],[9,1,1,"","is_compressed"]],"RNS.Reticulum":[[9,3,1,"","ANNOUNCE_CAP"],[9,3,1,"","LINK_MTU_DISCOVERY"],[9,3,1,"","MINIMUM_BITRATE"],[9,3,1,"","MTU"],[9,1,1,"","blackhole_sources"],[9,1,1,"","discovered_interfaces"],[9,1,1,"","get_instance"],[9,1,1,"","interface_discovery_sources"],[9,1,1,"","link_mtu_discovery"],[9,1,1,"","publish_blackhole_enabled"],[9,1,1,"","remote_management_enabled"],[9,1,1,"","required_discovery_value"],[9,1,1,"","should_use_implicit_proof"],[9,1,1,"","transport_enabled"]],"RNS.Transport":[[9,3,1,"","PATHFINDER_M"],[9,1,1,"","await_path"],[9,1,1,"","deregister_announce_handler"],[9,1,1,"","has_path"],[9,1,1,"","hops_to"],[9,1,1,"","next_hop"],[9,1,1,"","next_hop_interface"],[9,1,1,"","register_announce_handler"],[9,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,3,6,8,12,13,14,15],"0":[0,2,3,6,9,12,13,14],"00":[12,13],"00000000":12,"00000100":12,"00000111":12,"01":[3,12],"01010000":12,"02":2,"03":3,"04":3,"05":[0,3],"0536":13,"06915":6,"08":[0,13],"09":3,"0d7334d411d00120cbad24edf355fdd2":3,"0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1":13,"0x0101":0,"0x20":0,"0x7d":0,"0x7e":0,"0x91c421ddfb8a30a49a71d63447ddb54cebe3465":11,"0xf000":[0,9],"1":[0,2,3,6,9,12,13,15],"10":[3,6,12,13],"100":[0,6,12],"1000":0,"10000000":12,"1024":0,"109":15,"11":[3,12],"115":12,"115200":[0,6,13],"1178a8f1fad405bf2ad153bf5036bdfd":13,"118":6,"12":[2,3,6,13],"1200":12,"125":6,"125000":6,"127":6,"128":[8,9,12],"13":13,"13425ec15b621c1d928589718000d814":[8,12],"14":[3,6],"15":[3,6],"150":[6,13],"150m":6,"153cb870b4665b8c1c348896292b0bad":3,"15kb":15,"15m":13,"16":[3,6,8,12,13,15],"1625":6,"1625000":6,"167":12,"168":15,"17":13,"1716230400":3,"1726dbad538775b5bf9b0ea25a4079c8":13,"18":[3,13],"1800":9,"187":13,"192":15,"1b03013c25f1c2ca068a4f080b844a10":13,"1h":13,"2":[0,2,3,6,9,12,13],"20":[3,6,12,13],"200":[6,13],"201":6,"2016":[7,14],"2023":[2,13],"2024":3,"2025":3,"2026":[3,7,15],"21":2,"22":[3,6],"2225fdeecaf6e2db4556c3c2d7637294":13,"23":[3,13],"2316":13,"23h":13,"24":[3,6,13],"2400000000":6,"25":[0,5,14],"250":15,"255":[6,13],"25519":9,"256":[3,6,8,9,12,13,14],"2592000":9,"27":13,"29":6,"297":[12,14],"29716":6,"2b489d06eaf7c543808c76a5332a447d":13,"2b9ec651326d9bc274119054c70fb75":13,"2d03725b327348980d570f739a3a5708":13,"2d882c5586e548d79b5af27bca1776dc":13,"2f":0,"2owjajquafianpecac":2,"3":[0,2,3,6,12,13,14],"30":[6,9,13],"30602def3b3506a28ed33db6f60cc6c9":13,"32":[2,3,9,12],"3278":6,"327c1b2f87c9353e01769b01090b18f2":15,"32m":13,"33":6,"34":[6,15],"360":[3,6,9],"3600":[0,2,6],"37":3,"37428":13,"37429":13,"38":[3,13],"383":9,"3865":13,"399ea050ce0eed1816c300bcb0840938":13,"3a4f8b9c1d2e3f4g5h6i7j8k9l0m1n2o":13,"3b87":6,"4":[3,9,12,13],"40m":13,"42":3,"4242":[2,6],"4251":6,"42671":6,"430":12,"4343":6,"44":14,"44318":6,"45":[0,3,12],"46":13,"464":9,"465":12,"469":13,"48555":6,"49":13,"49555":6,"4965":13,"4e":6,"4faf1b2e0a077e6a9d92fa051f256038":12,"4g":15,"4ghz":6,"5":[0,3,6,9,12,13,14,15],"500":[6,9,12,14,15],"5001":6,"50824b711717f97c2fb1166ceddd5ea9":3,"51":[6,12],"512":[6,9,12,14],"52":13,"521c87a83afb8f29e4455e77930b973b":13,"5245a8efe1788c6a1cd36144a270e13b":13,"53":3,"55":6,"56":13,"564":0,"56m":13,"5757":6,"5858":6,"59":13,"5caf":6,"5d78":6,"5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq":6,"6":[2,3,6,9,13],"60":[0,6],"600":6,"63":13,"64":[2,12,13],"68a4aa91ac350c4087564e8a69f84e86":13,"7":[2,6,12,13],"71":15,"71e5":6,"72":6,"720":[6,9],"7200":6,"73":[6,13],"73cbd378bb0286ed11a707c13447bb1":13,"74":13,"74195":6,"781":13,"7822":13,"7a55144adf826958a9529a3bcf08b149":13,"8":[0,6,13],"80":[11,13],"8001":6,"809":13,"83":[12,13],"83b7328926fed0d2e6a10a7671f9e237":15,"84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w":11,"86":13,"865":6,"865600000":6,"867":6,"867200000":6,"868":12,"88":6,"89":6,"8a37cdd16938ce79861561adbd59023a":3,"8dd57a738226809646089335a6b03695":13,"8f3a21c9d84e927b":3,"9":[2,3,13],"90":3,"900":[12,13],"9037":13,"921600":13,"941bed5e228775e5a8079fc38b1ccf3f":13,"959e10e5efc1bd9d97a4083babe51dea":3,"96":12,"9600":0,"9710b86":3,"9710b86ba12c42d1d8f30f74fe509286":3,"9710b86ba12c4f2":3,"984b74a3f768bef236af4371e6f248cd":13,"99":12,"99714":6,"9fb6d773498fb3feda407ed8ef2c3229":13,"9h":13,"A":[0,2,3,5,6,7,8,9,10,12,13],"AND":7,"AS":7,"And":[0,15],"As":[2,3,4,6,9,10,11,12,13,14],"At":[2,12],"BE":7,"BUT":7,"Be":[3,9,13,15],"But":[11,12,15],"By":[0,2,3,6,9,12,13,15],"FOR":7,"For":[2,3,5,6,8,9,12,13,14],"IN":[0,7,9],"If":[0,2,3,4,6,8,9,10,11,12,13,14,15],"In":[0,2,3,4,5,6,8,9,10,12,13,14],"It":[0,2,3,4,6,8,9,10,12,13,14,15],"NO":7,"NOT":7,"No":[0,2,6,8,12,13,14,15],"Not":5,"OF":7,"OR":7,"Of":[8,12],"On":[0,2,3,6,8,13,15],"One":[2,4,6,9,12,15],"Or":[5,6,13,14],"THE":7,"TO":7,"That":[10,12,15],"The":[0,2,4,5,6,7,8,9,10,11,14],"Then":[0,2],"There":[2,8,12,13,15],"These":[2,3,6,8,9,10,12,13],"To":[0,2,3,4,5,6,8,12,13,14],"WITH":7,"Will":9,"With":[5,6,8,10,12,13,15],"_":12,"__":12,"______":12,"_______":12,"________":12,"________________":12,"__future__":0,"__init__":[0,9],"__main__":0,"__name__":0,"__str__":0,"_no_us":9,"a1b2c3d4e5f686ba12c42d1ba12ef1aa":3,"a4d":6,"a79f":6,"aarch64":2,"ab":0,"abil":[2,4,5,7,13,14],"abl":[0,2,3,6,9,12,13],"abolish":15,"abort":[0,6],"about":[0,2,3,4,6,8,9,12,13,15],"abov":[2,4,6,7,12,13],"absolut":[6,11,14,15],"abstract":[8,9,12,15],"abstractmethod":9,"abund":[4,15],"abus":13,"accept":[3,6,9,11,12,13,15],"accept_al":[0,9],"accept_app":9,"accept_non":9,"accepts_link":9,"access":[2,5,6,8,9,13,15],"access_point":[6,8],"accid":[10,15],"accommod":[9,12],"accomod":15,"accord":[0,2,8,12],"accordingli":[0,6],"account":[8,15],"achiev":[2,6,8,9,12,14],"acknowledg":[8,14],"across":[0,4,8,9,12,13,15],"act":[2,6,9,12,13,15],"action":[0,7,13],"activ":[0,2,3,6,9,12,13],"actor":[12,13,15],"actual":[0,2,3,6,8,12,13,15],"ad":[0,3,4,5,6,8,9,10,12,13,14,15],"adapt":[2,4,15],"add":[0,2,3,6,8,9,13],"add_argu":0,"add_message_handl":[0,9],"add_ready_callback":9,"addict":15,"addit":[3,4,6,8,9,10,12,13,14],"addition":[2,3,4,6,12],"addr":13,"address":[0,2,5,6,9,12,13,14],"adher":[6,9],"adjust":[2,3,9,13,15],"adm":3,"admin":[3,6],"administ":3,"administr":[3,8,10,12,13,15],"adopt":12,"adress":[9,12],"advanc":[10,12],"advantag":9,"advers":14,"adversari":[2,8,11,15],"advertis":[0,6,9],"advic":11,"advis":[6,12],"ae":[9,12,14],"af73":6,"affect":[2,6,15],"affili":10,"afford":8,"after":[0,2,3,6,8,9,12,13],"afterthought":15,"again":[6,12,13],"against":[2,6,12,15],"agenc":[5,12],"agent":[12,15],"agnost":[8,12],"agnostic":[12,15],"ago":13,"agreement":15,"ahead":8,"ai":15,"aim":[2,5,12],"air":[2,4],"airmax":4,"airtim":[6,8,15],"airtime_limit_long":6,"airtime_limit_short":6,"akin":12,"algorithm":[7,8,15],"alia":3,"alias":5,"aliased_nam":3,"alic":[3,12],"alien":15,"align":[2,13,15],"aliv":[9,12],"all":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15],"allevi":4,"alloc":[6,8,9,12,13],"allow":[0,2,3,4,6,8,9,10,12,13,14,15],"allow_al":[0,9],"allow_list":9,"allow_non":9,"allowed_hash":13,"allowed_ident":13,"allowed_list":9,"almost":[4,6,12,13,15],"alon":6,"along":[6,9,12,13],"alongsid":8,"alreadi":[0,2,4,8,9,10,12,13,15],"also":[0,2,3,4,5,6,8,9,10,12,13,14,15],"alter":[2,9,12],"altern":[0,2,3,6,13],"although":[2,12,14],"alwai":[2,3,6,8,9,12,13,15],"am":15,"amateur":[6,14],"among":15,"amongst":7,"amount":[0,6,8,9,12,14,15],"amsterdam":[6,13],"an":[0,2,3,4,6,7,8,9,10,12,13,14,15],"analog":[10,15],"analysi":3,"analyt":11,"anchor":5,"android":[5,6,10,13],"ani":[0,2,3,4,6,7,8,9,10,11,12,13,14],"annonuc":6,"annot":0,"annouce_cap":6,"announc":[2,3,5,8,9,10,13],"announce_cap":[6,9],"announce_handl":0,"announce_interv":[3,6],"announce_packet_hash":9,"announce_rate_grac":[2,6],"announce_rate_penalti":[2,6],"announce_rate_target":[2,6],"announced_ident":[0,9],"announceloop":0,"announcesampl":0,"anonym":[2,8,9,12,14],"anoth":[3,8,9,12,13,15],"answer":[12,13,15],"antenna":[4,15],"anxieti":15,"anymor":[2,15],"anyon":[0,2,4,6,8,9,12,13,15],"anyth":[3,4,6,10,12,13,14,15],"anywher":[0,6,15],"ap":6,"api":[2,5,12,14,15],"apk":2,"app":[0,2,9,12,15],"app_and_aspects_from_nam":9,"app_data":[0,9],"app_nam":[0,9],"app_timeout":0,"appear":15,"append":[0,12,13],"appli":[3,6,9,12,15],"applic":[0,6,8,9,10,12,13,14,15],"appreci":3,"approach":[2,4,8,12,13],"appropri":[3,6,8,15],"approv":[8,12,15],"approxim":[6,13],"april":2,"apt":2,"ar":[0,2,3,4,6,8,9,10,11,12,13,14,15],"arbit":15,"arbitrari":[9,12,13,14],"arch":[2,15],"architect":[11,15],"architectur":[2,5,10],"archiv":10,"area":[2,4,6,8,12,14],"arg":[0,13],"argon":0,"argpars":0,"argument":[0,3,9,13],"argumentpars":0,"aris":7,"arm64":5,"armi":15,"armor":15,"around":[2,6,12,15],"arrai":2,"arriv":[0,12,15],"art":15,"artifact":3,"artifici":7,"arx":13,"ask":[0,2,4,9,10,15],"aspect":[0,2,4,6,8,9,12,13],"aspect_filt":[0,9],"assert":15,"assign":[0,8,12,13,15],"assist":10,"associ":[3,7,9,12,13],"assum":[6,8,12,15],"assumpt":[8,11,15],"assuredli":15,"asymmetr":[12,13,14],"asynchron":[8,15],"attach":[10,13],"attached_interfac":9,"attack":2,"attain":2,"attempt":[0,2,3,4,9,13],"attent":[11,15],"attribut":9,"atx":13,"auth":13,"authent":[3,6,8,9,10,12,13,14],"author":[3,7,12,13,15],"authoris":13,"authorit":[12,14],"auto":[2,3,4,5,9,12,13],"auto_compress":9,"autoconfigur":14,"autoconnect_discovered_interfac":[6,13],"autodiscov":6,"autoinstal":[4,13],"autointerfac":[2,4,6,13],"autom":[2,4,5,10,11,12],"automat":[0,2,5,6,8,9,10,12,13,14,15],"autonom":[8,12,15],"autonomi":[14,15],"avail":[0,2,4,5,6,8,9,10,12,13,14,15],"averag":12,"avoid":[4,12,13],"awai":[0,6,12,13,15],"await_path":9,"awar":[2,6,12],"ax":[5,14],"ax25kissinterfac":6,"b":[0,3,13],"b32":6,"back":[0,3,6,12,14,15],"backbon":[4,5,8,13,15],"backboneinterfac":[2,6,13],"backend":[6,12],"background":[2,6,13],"backhaul":[4,8],"backup":13,"balanc":6,"band":[4,12,15],"bandwidth":[2,5,6,8,9,10,12,13,14],"bar":15,"bare":[0,3,6,15],"barrier":[6,12,15],"base":[3,5,6,8,9,10,12,13,14,15],"base32":[6,13],"base64":13,"bash":[6,13],"basi":[6,9,12,13,14],"basic":[0,2,5,6,8,9,13],"batch":3,"batteri":15,"baud":[6,13],"baud_flash":13,"baudrat":0,"bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6":11,"bc7291552be7a58f361522990465165c":[13,14],"beacon":6,"beast":15,"beat":15,"beauti":10,"becaus":[8,12,15],"becki":0,"becom":[0,2,3,6,8,12,15],"been":[0,2,3,4,6,8,9,10,11,12,13,14,15],"befor":[0,2,3,6,8,9,11,12,13,15],"beg":15,"begin":[0,4,9,15],"begun":9,"behalf":[6,8],"behav":[4,10],"behavior":15,"behaviour":[2,6,13],"behind":[2,6,11,12,15],"being":[2,3,6,9,12,15],"beings":[7,12],"belief":12,"believ":15,"belong":[8,12,13,15],"below":[4,6,13],"bend":15,"benefici":[6,13],"berlin":15,"best":[2,8,12,15],"better":[2,6,8,11,12,15],"between":[0,6,8,9,10,12,13,15],"bi":[9,12],"bidirect":12,"big":15,"bill":15,"billion":[8,12],"billionair":15,"bin":[2,6,13],"binari":[0,2,6,8,9,12,13,15],"bind":6,"bit":[0,2,3,6,8,9,10,12,13,14,15],"bitcoin":11,"bitrat":[0,6,9],"blackhol":[2,5,8,9,12],"blackhole_sourc":[9,13],"blackholed_ident":13,"blackholeupdat":13,"ble":6,"blindli":[13,15],"blob":[0,3,12],"block":[2,3,6,8,9,10,12,13,15],"blockchain":15,"blocklist":13,"blood":15,"blueprint":15,"bluetooth":13,"board":[2,5,6,10,12,14],"boat":15,"bob":3,"bobs_nod":3,"bogu":6,"boil":4,"bond":15,"book":15,"bookworm":5,"bool":9,"boot":[2,13],"bootstrap":[5,6,13],"bootstrap_onli":[2,6],"borrow":15,"bot":10,"both":[0,2,3,4,6,8,9,10,12,13,14],"bounc":[2,15],"bound":[8,15],"boundari":[6,8,12],"box":4,"branch":[3,13],"breadcrumb":3,"break":[2,9,12,15],"breath":[2,15],"breviti":13,"bridg":[4,6],"briefli":[4,12],"bring":[6,13],"brittl":[2,15],"broad":[2,4],"broadcast":[2,5,6,8,9,12,13,15],"broadcast_destin":0,"broadcastloop":0,"broader":[2,12],"broken":[2,15],"brought":[6,13],"brows":[3,10,15],"browser":[3,10,15],"buffer":[5,6,9,14],"bufferedread":9,"bufferedrwpair":9,"bufferedwrit":9,"bufferexampl":0,"bug":[3,10,11],"bui":15,"build":[0,3,4,5,6,10,12,14,15],"builder":15,"built":[2,6,8,10,12,13,14,15],"bulletin":10,"bundl":0,"bureaucraci":15,"bureaucrat":[14,15],"burst":5,"button":15,"bw":13,"bypass":[11,15],"byte":[0,5,8,9,12,13,14],"bytes":0,"c":[0,3,7,13],"c50cc4e4f7838b6c31f60ab9032cbc62":13,"c89b4da064bf66d280f0e4d8abfd9806":13,"cabl":[6,15],"cach":[6,8,13],"cafe":15,"cage":15,"calcul":[8,9,12,13],"call":[0,8,9,10,12,14,15],"callabl":[0,9],"callback":[0,9],"callsign":6,"can":[0,2,3,4,5,6,8,9,10,11,12,13,15],"cancel":[3,9],"candid":8,"cannot":[0,2,3,6,8,14,15],"cap":6,"capabl":[0,2,6,8,12],"capac":[2,4,8,9,12],"capit":15,"captur":15,"car":8,"carambola":0,"card":15,"care":[2,3,8,9,13,14,15],"carefulli":2,"cargo_build_target":2,"carri":[6,8,9,12,13,14,15],"carrier":[5,8,14],"case":[0,2,3,4,6,8,12,13],"castl":15,"cat":13,"categori":4,"caus":[2,6],"caution":6,"cb":[9,12],"cbc":[12,14],"cdma":6,"ceas":15,"cell":8,"cellular":15,"cement":15,"censor":[12,13,15],"censorship":[12,14],"center":5,"central":[2,4,6,8,10,12,13,15],"centralis":12,"ceo":15,"certain":[0,6,8,11,12,13,15],"certif":15,"chain":[6,15],"challeng":[2,10,12,15],"chanc":4,"chang":[0,2,3,6,9,12,13,14,15],"channel":[2,5,6,8,9,11,12,14,15],"channelarg":0,"channelexampl":0,"chaotic":15,"chapter":[2,4,6,8,9,10,12,13,14],"charact":[0,6,13],"characterist":[6,8,12,15],"charg":7,"chart":3,"charter":12,"chase":15,"chat":5,"cheap":[4,6,12],"cheapli":2,"check":[0,2,3,9,12,13,15],"checksum":[3,9,14],"chmod":3,"choic":[2,8,15],"choke":15,"choos":[0,2,6,10,12,15],"chose":12,"chosen":12,"chunk":0,"cific":6,"ciphertext":9,"ciphertext_token":9,"circl":15,"circumst":[11,12,15],"citi":15,"cl":0,"claim":[7,12],"clariti":15,"class":[0,8,9,14],"clear":[0,6,9,13,15],"clear_default_app_data":9,"clear_screen":0,"clearli":15,"click":3,"client":[0,3,4,5,9,13,15],"client_buffer_readi":0,"client_config":3,"client_connect":0,"client_disconnect":0,"client_ident":0,"client_loop":0,"client_message_receiv":0,"client_packet_receiv":0,"client_request":0,"climat":15,"clone":[3,12],"close":[0,8,9,13],"closed_callback":9,"closer":[10,12],"closest":12,"cloth":15,"cloud":[5,6,10],"cluster":12,"co":[4,6,14],"code":[2,3,4,5,6,8,10,11,13,14,15],"codingr":6,"coexist":8,"coffe":15,"coher":15,"collabor":[3,12,13],"collaps":[2,15],"collect":[2,11],"collis":8,"colon":15,"color":3,"com":[0,3,11,15],"combin":[2,3,5,10,12,13,15],"combinatori":15,"come":[2,6,8,12,15],"comma":[6,13],"command":[0,2,5,6,10,13],"commend":15,"comment":[3,6,13],"commerci":15,"commit":[2,3,10],"committe":15,"common":[0,2,4,5,8,12,13,14,15],"commonli":[3,4,6],"commun":[0,2,3,5,6,8,9,10,11,12,13,14,15],"communica":6,"compani":15,"compar":[8,15],"compass":15,"compat":[0,2,3,4,6,9,10,12,13,14],"compet":15,"compil":2,"complain":15,"complet":[0,2,3,4,6,8,9,10,12,13,14],"complex":[2,6,11,12,15],"compli":8,"compon":[4,11,12,15],"compos":[3,12],"comprehens":[10,11],"compress":[0,9,12,13,14],"compromis":[12,15],"comput":[2,6,12,14,15],"computation":[6,13],"concaten":[9,13],"conceiv":[2,4],"concept":[5,12,13,15],"conceptu":5,"concern":15,"concert":12,"conclud":[0,9],"concret":15,"concurr":[4,12,13],"condit":[2,7,12,14,15],"conduit":15,"conf":[2,10],"config":[0,2,3,6,8,13,15],"configarg":0,"configdir":9,"configobj":3,"configpath":0,"configur":[0,2,4,5,8,9,12,14],"configuraion":4,"configure_devic":0,"confirm":[8,12,14,15],"conflict":[2,8],"confront":15,"confus":[4,12],"congest":12,"conglomer":15,"conjunct":6,"connect":[0,3,4,5,7,9,11,12,13,14,15],"conscienc":15,"conscript":15,"consequ":[8,12],"conserv":6,"consid":[0,2,6,9,10,12,13,14,15],"consider":[5,12],"consist":[3,12,13],"consol":13,"constant":[9,15],"constantli":[12,15],"constitut":[2,12],"constrain":[8,9],"constraint":15,"construct":[12,14,15],"constructor":0,"consum":[8,9,15],"consumpt":[8,15],"contact":[8,10,12,15],"contain":[0,3,6,8,9,12,13],"contempl":15,"contend":12,"content":[0,2,3,8,10,13],"context":[2,12,13,15],"contin":[0,2,15],"continu":[6,9,11,13,14,15],"contract":7,"contrari":15,"contribut":[5,7,8,11],"control":[0,2,3,4,5,8,9,10,12,13,14,15],"convei":[0,15],"conveni":[0,13,15],"convent":[0,8],"converg":[2,8,12,15],"convers":[3,10,12,15],"convert":3,"cook":2,"coordin":[6,8,9,12,14,15],"copi":[3,7,13],"copyright":7,"core":[8,12,13,14,15],"corner":15,"corpor":15,"correct":[0,6,8,12],"correctli":[0,8],"correspond":[8,12,15],"cost":[4,5,6,12,14],"could":[0,2,6,8,9,12,13,14,15],"count":[3,10,12,15],"counter":0,"cours":[2,3,6,8,12,15],"coven":15,"cover":[2,4,8,12,14],"coverag":8,"cpu":[0,6,8,12],"cpuinfo":13,"cr":13,"craft":15,"craftsman":15,"crash":15,"creat":[0,5,6,8,9,10,13,14,15],"create_bidirectional_buff":[0,9],"create_kei":9,"create_read":9,"create_receipt":[0,9],"create_writ":9,"creation":[5,7,8,10,12,13,14],"creativ":15,"creator":[5,12,15],"credenti":[6,12],"critic":[8,12,13],"cross":[6,10],"crowd":15,"crucial":8,"cruft":15,"cryptograph":[2,3,5,6,8,13,14,15],"cryptographi":[2,12,14],"crystal":15,"ctrl":0,"cull":9,"culmin":15,"curl":6,"current":[0,2,3,5,6,9,10,13,15],"current_download":0,"current_filenam":0,"current_ratchet_id":9,"curv":[8,9,12,14],"curve25519":[8,9,12,14],"custodian":15,"custom":[4,5,9,10,12,14],"custom_network_nam":6,"customis":6,"cut":15,"cynic":15,"d":[3,13],"d09285e660cfe27cee6d9a0beb58b7e0":3,"d56a4fa02c0a77b3575935aedd90bdb2":13,"daemon":[0,2,6,9,10,13],"dai":[3,9,10,15],"daili":3,"damag":[7,15],"danc":15,"danger":15,"dark":15,"data":[0,2,3,4,5,6,8,9,12,14,15],"data_buff":0,"data_port":6,"databas":[10,13,15],"databit":[0,6,13],"datacent":2,"datar":6,"dataset":[7,15],"date":[0,2,3,10,13],"datetim":0,"db":[0,13],"dbm":[0,6,13],"deal":[6,7],"death":5,"debian":[5,12,13],"debug":[2,13],"decad":[4,11,15],"decentr":[2,5,6,13],"decentralis":14,"decid":[6,8,9,12,15],"decim":6,"decis":[6,8,12,15],"declar":12,"decod":[0,6,13],"decreas":[3,13],"decrypt":[6,8,9,12,13],"dedic":[3,6,12,14,15],"deep":[2,15],"deepli":15,"def":[0,3],"default":[0,2,3,4,6,8,9,10,12,13],"default_ar_grac":6,"default_ar_penalti":6,"default_ar_target":6,"default_ifac_s":0,"defin":[0,3,6,9,12,13,14,15],"definit":[0,2,3,12,13,15],"defunct":13,"degrad":8,"degre":6,"delai":[6,10,12,13,15],"deleg":12,"delet":[3,15],"delimit":0,"deliv":[0,2,8,9,10,15],"deliveri":[0,8,9,10,14],"demand":[3,9,15],"demonstr":[0,2,6,15],"deni":[3,15],"depend":[0,4,5,6,8,9,12,13,15],"deploi":[12,15],"depriorit":15,"depth":15,"deregist":9,"deregister_announce_handl":9,"deregister_request_handl":9,"deriv":[2,8,9,12,14],"describ":[4,6,9,12],"descript":[0,3,13],"descriptor":0,"deseri":0,"deserializ":0,"design":[2,3,4,5,6,8,10,11,12,13,14],"desir":[0,4,6,12],"desk":15,"desktop":[6,10],"dest_len":0,"destin":[0,2,5,9,13,15],"destination_1":0,"destination_2":0,"destination_clos":0,"destination_hash":[0,3,9,13],"destination_hexhash":0,"destroi":15,"destruct":15,"detach":6,"detail":[0,2,3,5,6,9,13,14],"detect":0,"determin":[2,8,9,12,15],"detriment":13,"dev":[0,2,6,13],"devel":2,"develop":[3,4,5,7,9,10,11,12,13,14,15],"devic":[0,2,5,6,8,9,10,12,13,15],"dh":9,"dhcp":[4,6,8,13],"di":15,"dict":0,"dictat":[13,15],"dictatorship":15,"dictionari":13,"did":[0,10,15],"diff":3,"differ":[0,2,3,4,6,8,9,10,12,13,14,15],"differenti":13,"diffi":[8,12],"difficult":[2,4,13],"difficulti":[6,13],"digit":[2,4,12,14,15],"digniti":15,"dinner":15,"dir":0,"dire":4,"direct":[0,2,4,8,9,10,12,13],"direction":12,"directli":[2,3,4,6,7,8,9,10,12,13,14,15],"directori":[0,2,3,6,8,13,15],"disabl":[6,12,13],"disappear":[6,13,15],"disassoci":12,"discard":[2,9,12],"disciplin":15,"disconnect":[0,2,5,6],"discov":[2,5,6,8,9,10,12,15],"discover":[2,5,13],"discover_interfac":13,"discovered_interfac":9,"discoveri":[2,5,9,12,13],"discovery_bandwidth":6,"discovery_encrypt":6,"discovery_frequ":6,"discovery_modul":6,"discovery_nam":6,"discovery_port":6,"discovery_scop":6,"discovery_stamp_valu":6,"discrimin":8,"discuss":[4,12],"disk":[0,3,9,13],"displai":[0,3,6,8,10,12,13],"disrupt":6,"dissolv":[8,15],"dist":3,"distanc":[4,12,13],"distant":[2,9,12],"distinct":[6,8,12,15],"distinguish":[8,12],"distribut":[0,3,5,7,8,9,10,12,13,14,15],"dive":2,"divid":9,"divmod":0,"dn":[4,6,10,15],"dna":15,"dnf":2,"do":[0,2,3,4,6,7,8,9,12,13,15],"doc_id":3,"document":[2,5,7,9,10,12,13,14,15],"doe":[0,2,3,4,5,6,9,10,12,13,15],"doesn":[6,8,15],"dollar":15,"domain":[2,5,6,12,13,14],"domin":15,"don":[0,2,8,9,12,13,15],"donat":5,"done":[0,2,6,12,13,15],"door":15,"dot":[12,13],"doubt":2,"dowload":2,"down":[0,4,6,9,13,15],"download":[0,2,3,6,8,10,13],"download_began":0,"download_conclud":0,"download_finish":0,"download_start":0,"download_tim":0,"downstream":13,"drag":10,"drastic":13,"draw":15,"drawn":15,"drive":11,"driver":[13,14],"droid":2,"drone":15,"drop":[3,6,8,9,10,12,13,15],"dsrdtr":0,"dual":[4,13],"dublin":13,"due":0,"dumb":15,"dump":13,"duplex":[12,14],"durat":13,"dure":[3,13],"dynam":[2,3,6,10,13,15],"dysfunct":11,"e":[0,3,13],"e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790":13,"e702c42ba8":13,"e7536ee90bd4a440e130490b87a25124":13,"each":[0,2,3,6,8,9,10,12,13],"earli":15,"earlier":12,"eas":[6,12],"easi":[2,4,6,10,12,13,14],"easier":[2,3,6,8,13,14],"easiest":[2,4,6,12],"easili":[2,6,8,12,13,14,15],"eastern":12,"ec_pr_freq":6,"ecdh":[12,14],"echo":5,"echo_destin":0,"echo_request":0,"economi":15,"ecosystem":[2,6,10,12,13,15],"ed25519":[12,14],"edit":[2,3,13],"editor":[3,13],"eeprom":13,"effect":[3,6,12,13],"effici":[0,2,6,8,9,10,12,13,14,15],"effort":[4,15],"effortlessli":10,"eg":13,"egress":6,"egress_control":6,"ei":0,"either":[2,3,4,8,9,12,13,15],"elaps":[3,6],"electromagnet":15,"eleg":15,"element":[8,15],"elif":0,"elimin":[8,15],"ellipt":[8,9,12,14],"els":[0,8,10,11,12,14,15],"email":10,"embed":4,"embrac":15,"emerg":[5,10],"emiss":10,"emploi":[4,12],"empow":14,"empti":[0,5,15],"emul":[2,13],"enabl":[0,2,4,5,8,9,10,12,13,14,15],"enable_ratchet":9,"enable_remote_manag":13,"enable_transport":[6,12,13],"encapsul":[6,14],"encod":[0,9,10,13,15],"encount":[2,8],"encourag":[2,15],"encrypt":[0,2,5,6,8,9,10,12,13,14],"encrypted_mdu":9,"end":[0,6,8,9,10,12,14],"endless":[6,15],"endpoint":[0,8,9,10,12,15],"energi":[2,15],"enforc":[6,9,12,13],"enforce_ratchet":9,"engag":15,"engin":[2,10,11,15],"enhanc":12,"enough":[2,4,6,10,12],"ensur":[0,2,6,8,9,10,12,13,14,15],"ensurepath":2,"enter":[0,13],"entir":[0,2,6,8,9,10,12,13,14,15],"entiti":[8,12,13,15],"entri":[0,2,12,13,15],"entropi":15,"entrypoint":[5,6,13],"enumer":0,"envelop":[9,15],"environ":[2,3,5,6,8,11,12,13],"environment":12,"environmentlogg":12,"eof":6,"ephemer":[8,9,12,14],"epub":5,"equal":[8,9,12,15],"equip":[6,8,12],"equival":[6,15],"era":15,"erod":15,"erron":11,"error":[0,2,6,11,13,15],"esc":0,"esc_mask":0,"escap":[0,13],"esp32":4,"especi":[2,3,4,6,13],"essenti":[2,6,10,12,13,15],"establish":[0,2,6,8,9,10,13,14,15],"established_callback":9,"establishment_timeout_per_hop":9,"etc":[3,13],"eth0":6,"eth1":6,"ether":15,"ethereum":11,"ethernet":[2,5,6,8,10,12,14,15],"ethic":5,"evapor":15,"even":[0,2,6,8,9,10,12,13,14,15],"event":[6,7,15],"eventu":9,"ever":12,"everi":[0,2,3,6,8,9,12,13,15],"everydai":2,"everyon":[2,3,10,11,12,15],"everyth":[0,3,8,10,11,12,15],"evict":15,"evolv":[2,8,12],"exact":[4,6,12],"exactli":[9,12,15],"exampl":[2,4,5,8,9,12,13,14],"example_util":0,"exampleannouncehandl":0,"exampleconfig":[2,13],"exampleinterfac":0,"exce":[0,6,9],"except":[0,6,9],"excess":[6,13],"exchang":[8,9,12,14],"exclud":[3,9,12],"execstart":13,"execstartpr":13,"execut":[0,2,3,6,9,13],"exhaust":[4,10,12,13],"exist":[0,2,3,4,5,6,8,10,12,13,14],"exit":[0,3,6,9,13],"expand":[8,10,12,14],"expand_nam":9,"expans":15,"expect":[0,3,6,9,11,12,13],"expens":[4,6],"experi":[8,10,12,13,15],"experienc":0,"expir":6,"expiri":[6,9],"explain":[4,9],"explan":[12,13],"explicit":9,"explicitli":[6,8,12,13],"explor":[0,10,12,14,15],"export":[2,13],"expos":[6,9,13],"exposur":6,"express":[3,7],"extend":[0,9],"extens":[3,6,10,13,14],"extern":[0,2,3,6,9,13,14,15],"extra":[2,6,13],"extract":[13,15],"extrem":[2,10,12,13,14,15],"f":[0,2,13],"f4":6,"f53a1c4278e0726bb73fcc623d6ce763":13,"fabric":[5,8],"face":[6,10],"facilit":[10,12],"fact":[2,6,14],"factor":[6,9,13],"fade":15,"fail":[0,2,6,9,15],"failed_callback":[0,9],"failur":[2,3,6,9,15],"fake":13,"fallaci":5,"fallback":[3,15],"fallen":15,"fals":[0,6,8,9],"famili":2,"fantasi":15,"far":[2,8,12],"fashion":11,"fast":[5,6,8,9,10,12],"faster":[2,6,12,15],"fastest":[6,12],"fat":15,"favor":2,"favorit":10,"fe80":2,"featur":[2,3,5,6,8,10,11,12,13,14],"feder":[10,12,13,15],"fedora":2,"feed":[2,9,15],"feedback":[0,5],"feel":[10,15],"fernet":12,"fetch":[3,6,13],"few":[2,4,6,8,10,12,13,14,15],"fewer":9,"ff":13,"ffcffb4e255e156e77f79b82c13086a6":3,"fi":11,"fiber":[4,15],"fibr":14,"field":[12,15],"file":[0,2,3,4,6,7,8,9,10,12,13,14],"file_resourc":0,"file_s":0,"filelist":0,"filelist_data":0,"filelist_receiv":0,"filelist_timeout_job":0,"filenam":0,"filesync":5,"filetransf":[5,9],"filter":[0,8,12,13],"final":[0,3,9,12,15],"find":[3,5,6,10,12,13,15],"find_spec":0,"fine":[3,6],"fingerprint":15,"finish":5,"finit":15,"fire":15,"firewal":[2,6,8,15],"firmwar":[2,4,12,13],"firmware_hash":13,"first":[0,2,3,6,8,9,12,13,15],"fit":[0,7,15],"five":[0,15],"fix":[3,5,12,15],"fixed_mtu":6,"flag":[0,2,9,12,13],"flash":13,"flasher":2,"flat":15,"flaw":15,"fleet":12,"flesh":15,"flexibl":[2,3,4,6,8,10,13,14],"fli":12,"flicker":15,"flight":9,"flip":15,"float":[0,9],"flood":[6,13],"flow":[0,2,5,6,8,12],"flow_control":6,"fluid":15,"fluiditi":15,"fluidli":15,"flush":0,"focu":13,"focus":[10,12],"folder":0,"follow":[0,2,3,4,6,7,9,11,12,13,14,15],"font":3,"forbid":15,"forc":[0,13,15],"forcibli":[9,13],"foreground":2,"forev":15,"forg":15,"forget":[8,13],"fork":[5,10],"forker":3,"form":[2,5,6,8,9,12,13,15],"format":[0,5,10,13,14],"forth":0,"fortun":15,"forward":[5,6,8,9,10,12,13,14],"forward_ip":6,"forward_port":6,"found":[0,2,6,9,12,13,15],"foundat":[8,11,12,14,15],"fragil":15,"frame":[0,6],"framework":10,"free":[2,7,8,10,11,14,15],"freedom":[12,15],"freedv":4,"freeli":12,"freq":13,"frequenc":[2,4,6,12,13],"frequent":[6,8],"friend":[2,15],"friendli":10,"from":[0,2,3,4,5,6,7,8,9,10,11,12,13,14],"from_byt":9,"from_fil":9,"from_identity_hash":9,"fromhex":0,"front":[3,12],"frontend":10,"fruit":0,"ftdi_ft230x_basic_uart_43891ckm":13,"fuel":15,"full":[0,2,3,6,8,9,10,12,13,14],"full_hash":9,"full_nam":[9,13],"fulli":[0,2,3,4,6,10,12,13,14],"funcion":9,"function":[0,2,3,4,5,6,7,8,9,10,11,13,14,15],"fundament":[4,8,12,13,15],"furnish":7,"further":[2,5,6,13,15],"futur":[3,5,8,10,13,15],"fw":13,"g":[0,3,12,13],"ga":0,"gain":[4,9,12,15],"galact":12,"gap":2,"gaslit":15,"gatekeep":[12,15],"gatewai":[0,2,6,8,12,13,15],"gbp":13,"gear":15,"gen_tim":3,"gener":[0,2,3,4,6,8,9,12,13,14,15],"generalis":14,"genuin":13,"geograph":[2,6],"get":[0,3,4,5,6,8,9,10,13,15],"get_ag":9,"get_channel":[0,9],"get_config_obj":0,"get_data_s":9,"get_establishment_r":9,"get_expected_r":9,"get_external_ip":6,"get_hash":9,"get_inst":9,"get_mdu":9,"get_mod":9,"get_mtu":9,"get_packet_rssi":0,"get_packet_snr":0,"get_part":9,"get_private_kei":9,"get_progress":[0,9],"get_public_kei":9,"get_q":9,"get_random_hash":[0,9],"get_remote_ident":[0,9],"get_request_id":9,"get_respons":9,"get_response_tim":9,"get_rssi":9,"get_rtt":[0,9],"get_seg":9,"get_snr":9,"get_statu":9,"get_transfer_s":9,"geti2p":6,"ghost":15,"ghz":12,"gi":0,"giant":15,"gift":15,"gigabit":[8,15],"gigabyt":14,"git":[5,13],"github":[0,2,3],"give":[2,6,12,13,15],"given":[6,8,9,12,13,15],"global":[0,5,6,8,9,12,13,14],"globe":15,"glue":4,"go":[0,6,8,12,15],"goal":[2,5,6,8,10,14],"goe":15,"good":[2,4,8,12,13],"goodwil":15,"got":[0,15],"got_respons":0,"govern":[12,15],"gpio":10,"grace":9,"gracefulli":[6,8],"grade":5,"grain":3,"grant":[3,7,13,15],"granular":3,"grape":0,"graphic":10,"gratefulli":11,"graviti":15,"great":[2,3,12,13,15],"greater":[9,12,13,14],"greatli":[2,6],"green":15,"grid":[10,15],"gross":15,"ground":15,"group":[3,6,9,10,12,13],"group_id":6,"group_nam":3,"group_root":3,"groupinstal":2,"grow":[2,15],"grown":15,"growth":2,"guarante":[8,11,12],"guard":15,"guess":6,"gui":10,"guid":[2,4,10,12],"guidelin":2,"guilt":10,"gun":15,"gw":6,"gz":3,"h":[3,13],"ha":[0,3,4,6,8,9,10,11,12,13,14,15],"habit":15,"habitat":15,"hack":14,"had":12,"half":[12,14],"hammer":15,"hand":[0,15],"handheld":12,"handl":[0,2,4,6,8,9,10,12,13,14],"handler":[0,9,13,15],"handshak":15,"happen":[0,2,3,6,9,12,15],"hard":[2,4,6,15],"hardcod":15,"hardlin":8,"hardwar":[0,2,5,6,9,10,12,13,14,15],"harm":[5,7],"has_path":[0,9],"hasattr":0,"hash":[0,3,8,9,12,13,15],"hash1":12,"hash2":12,"hash_from_name_and_ident":9,"hashlib":12,"hashmap":0,"have":[0,2,3,4,6,8,9,10,11,12,13,14,15],"hazard":9,"hdlc":0,"header":[0,6,9,12],"header_1":12,"header_2":12,"health":5,"hear":[12,15],"heard":[9,10,12,13],"heart":15,"heavi":15,"height":6,"held":[6,13],"helium":0,"hellman":[8,12],"hello":3,"hello_world":3,"help":[0,2,3,8,11,12,13,15],"helper":[0,3,13],"here":[0,2,6,12,13,15],"herebi":7,"heterogen":[2,5,14],"hex":[0,13],"hexadecim":[0,12,13],"hexbyt":13,"hf":[10,15],"hidden":13,"hide":[2,15],"hierarch":[14,15],"hierarchi":[5,15],"high":[4,6,8,12,13,14,15],"higher":[6,8,14],"highest":9,"highli":[3,6,11,12,13],"highlight":5,"hijack":15,"hint":[0,3],"histori":[3,10],"hit":0,"hkdf":12,"hmac":[12,14],"hoc":[14,15],"hold":[6,9,12,15],"holder":[7,8],"hole":15,"hollow":15,"home":[2,8,10,13,15],"homebrew":6,"hop":[6,8,9,12,13,14,15],"hopefulli":8,"hops_to":9,"host":[0,3,5,6,8,10,12,13],"hostil":5,"hostnam":[6,15],"hotspot":15,"hour":[0,3,6,13,15],"hous":[2,15],"how":[0,2,4,6,8,10,12,13,14,15],"howev":[2,6,8,12],"http":[0,3,10,11,15],"hub":[6,10,13],"hum":15,"human":[0,5,6,7,8,9,11,12],"hundr":[8,10,15],"hungri":4,"hw_mtu":0,"hwrev":13,"hz":[6,13],"i":[0,2,3,4,5,6,7,8,9,10,11,12,13],"i2p":[2,5,8,10,14],"i2p_tunnel":6,"i2pd":[2,6],"i2pinterfac":[2,6],"ia":13,"ic":4,"ic_burst_freq":6,"ic_burst_freq_new":6,"ic_burst_hold":6,"ic_burst_penalti":6,"ic_held_release_interv":6,"ic_max_held_announc":6,"ic_new_tim":6,"ic_pr_burst_freq":6,"ic_pr_burst_freq_new":6,"icmp":10,"icon":[3,15],"id":[3,6,9,12,13],"id_callsign":6,"id_interv":6,"idea":[2,12,13,15],"ideal":[10,13,14],"ident":[0,2,5,6,8,9,10,13,14],"identif":[5,6,14],"identifi":[0,6,8,9,12,13,14],"identifyexampl":0,"identity_data":13,"ie":13,"if00":13,"ifac":[0,2,6,8,12,13],"ifac_s":6,"ifconf":0,"ifconfig":13,"ignor":[3,6,8,9,11,12,13],"ignored_devic":6,"illus":5,"illustr":[0,6,12],"imag":15,"imagin":[8,15],"immedi":[6,13,15],"immens":15,"immort":15,"immut":15,"impact":[6,8,9,12],"impati":15,"imperson":8,"implement":[0,3,5,6,8,9,10,11,12,15],"impli":7,"implic":[5,6,8],"implicit":[8,9,12],"implicitli":13,"import":[0,2,4,6,8,9,11,12,13],"importantli":[2,15],"importlib":0,"imposs":[12,15],"impract":13,"improv":[2,5,6,10,11,15],"in_fram":0,"in_wait":0,"inactive_for":9,"inadvert":13,"inbound":[0,6,9],"inbox":8,"includ":[0,3,4,5,6,7,8,9,10,12,14],"inclus":8,"incom":[0,6,9,13],"incompat":[9,12],"incomplet":8,"increas":[3,6,9,13],"incredibli":15,"incur":6,"indefinit":13,"independ":[5,9,12],"index":[0,2,5],"indic":[0,9],"indiffer":15,"indirectli":[7,12],"individu":[2,3,6,9,11,12,13,14,15],"inevit":[2,12],"infer":12,"infinit":15,"influx":[6,10],"influxdb":10,"info":[3,9,12,13,15],"inform":[0,2,3,5,6,8,9,10,11,12,13,15],"infrastructur":[4,5,6,8,10,12,13],"ingest":15,"ingo":9,"ingress":[0,6],"ingress_control":6,"inhabit":15,"inher":8,"inherit":3,"init":2,"initi":[0,3,6,8,9,12,13,14],"initialis":[0,3,9,13],"input":[0,13],"insert":12,"insid":[3,12,15],"insight":15,"inspect":[2,3,6,8,12,13],"inspir":15,"instal":[0,3,5,6,12,13,14],"instanc":[0,5,6,9,10,12,13,15],"instance_control_port":13,"instance_nam":13,"instant":15,"instanti":9,"instantli":13,"instead":[0,2,3,6,9,12,13,15],"institut":15,"instruct":[2,3,15],"int":[0,9],"integ":[0,9],"integr":[2,3,10,12,13,15],"intellig":[7,15],"intend":[2,6,8,12,13],"intens":13,"intent":[8,15],"intention":[10,12],"inter":[2,9,12],"inter_byte_timeout":0,"interact":[0,2,5,8,9,12,13,15],"intercept":8,"interchang":6,"interconnect":[2,6,8,12],"interest":[10,12,15],"interfac":[3,4,5,8,9],"interface_class":0,"interface_discovery_sourc":[9,13],"interface_en":13,"interfer":[8,13],"intermedi":[8,15],"intermediari":[6,12],"intermitt":[6,8,15],"intern":[0,3,6,9,12,15],"internal_1":6,"internet":[5,6,8,10,12,13,14,15],"internetwork":2,"interoper":[4,8,10,12,14],"interrupt":6,"interv":[3,6,9,13],"intervent":13,"intiat":0,"intim":15,"introduc":[3,12,13,15],"introduct":5,"introductori":5,"intuit":[8,14],"invalid":[0,6,9],"invari":15,"invers":12,"invert":15,"invest":8,"investig":3,"invis":[2,6],"invit":6,"invok":3,"involv":[3,8,11],"io":4,"iodin":10,"ioerror":0,"iot":4,"ip":[2,4,5,6,8,12,13,14],"ipv4":6,"ipv6":[2,6,13],"irc":10,"irrelev":11,"irrespons":15,"is_compress":9,"is_connected_to_shared_inst":0,"is_open":0,"is_path_respons":9,"is_ready_to_send":[0,9],"isdir":0,"isfil":0,"isinst":0,"ism":[4,12],"isn":15,"isol":[2,6,13],"isp":[6,8,15],"issu":[3,5,6,8],"its":[3,4,6,7,8,9,12,13,15],"itself":[5,8,10,12,13,15],"iv":[12,14],"j":[5,13],"jail":13,"javascript":10,"job":0,"join":[0,2,8,10,12],"journei":8,"json":[13,15],"just":[0,2,3,4,6,8,10,12,13,14,15],"k":[0,13],"kb":13,"kbp":13,"keep":[0,2,3,8,9,12,13,14,15],"keepal":[9,12],"keepalive_timeout_factor":9,"kei":[0,5,6,8,9,13,14,15],"kept":[6,8,9,12],"kernel":[6,13,14],"keyboardinterrupt":0,"keyerror":9,"keypad":10,"keypair":[8,12],"keyr":15,"keyset":[12,13,14],"keysiz":9,"keystor":8,"khz":6,"ki":0,"kill":[9,12,15],"kind":[4,6,7,8,10,12,15],"kiss":[4,5,10,13,14],"kiss_fram":6,"kissinterfac":[6,13],"knock":15,"know":[0,2,4,6,8,9,12,13,15],"knowledg":[8,12],"known":[0,6,9,12,13,14,15],"ko":11,"krypton":0,"l":[6,13],"la":13,"labor":15,"lack":12,"laid":12,"lan":6,"landlord":15,"languag":[3,7,10],"lantern":15,"laptop":[8,15],"larg":[0,4,6,8,9,12,13,14,15],"larger":[8,12,13],"laser":6,"last":[0,3,6,9,13,15],"last_read_m":0,"last_unit":0,"latenc":[2,8,12,14,15],"later":[0,2,3,6,10,13],"latest":[0,2,6,9,13],"latest_buff":0,"latest_client_link":0,"latitud":6,"laucnh":2,"launch":[10,13],"law":15,"layer":[4,6,8,9,10,12,13,14,15],"lcd":10,"lead":[2,12,15],"leak":2,"learn":[0,2,7,8,11,12,15],"leas":15,"leash":15,"least":[2,3,4,6,8,12,13,14],"leav":[8,10,12,15],"ledger":[12,15],"left":[6,9,12,13],"legaci":[8,15],"legal":[6,15],"legisl":6,"legitim":[2,8,13],"len":[0,15],"length":[0,6,9,12],"less":[0,2,4,6,9,12,14,15],"let":[0,2,6,8,10,12,13,15],"level":[3,4,6,8,12,13],"lever":15,"li":15,"liabil":7,"liabl":7,"liber":[4,5],"liberapai":11,"libffi":2,"librari":[2,10,15],"licens":[5,12,14,15],"lie":15,"life":15,"lifelin":15,"lift":[13,15],"light":[13,15],"lightweight":14,"like":[0,2,3,4,6,8,9,10,12,13,14,15],"limit":[0,2,4,5,7,8,10,12],"line":[0,2,5,6,10,12,13,14,15],"linger":13,"link":[2,3,4,5,6,8,9,10,13,14,15],"link_clos":0,"link_establish":0,"link_id":[0,9],"link_mtu_discoveri":9,"linkexampl":0,"linux":[2,4,6,10,12],"liquid":15,"list":[0,2,3,4,5,6,9,10,12,14,15],"list_deliv":0,"list_fil":0,"list_filt":13,"list_packet":0,"list_receipt":0,"list_timeout":0,"listdir":0,"listen":[0,2,3,5,10,12,13,15],"listen_ip":6,"listen_on":[2,6],"listen_port":6,"liter":13,"litter":15,"littl":[4,10,12],"live":[2,9,10,15],"lki":12,"lkr":12,"ll":[0,14,15],"llm":10,"ln":13,"load":[0,2,4,6,9,13,14,15],"load_private_kei":9,"load_public_kei":9,"local":[0,2,3,5,6,8,9,10,12,14,15],"locat":[2,5,6,8,12,13,15],"lock":15,"log":[0,2,3,6,13,15],"log_crit":0,"log_error":0,"log_info":0,"log_verbos":0,"logdest":9,"logfil":13,"logic":[12,15],"login":13,"loginctl":13,"loglevel":[0,9,13],"long":[0,2,3,4,6,8,9,12,13,15],"longer":[0,2,6,12,13,15],"longest":6,"longitud":6,"look":[0,2,3,6,8,10,12,13,15],"loop":0,"lora":[2,4,5,8,10,12,14,15],"lorawan":[4,12],"loss":[6,8,12],"lost":15,"lot":[8,12,15],"loudest":15,"low":[2,4,6,8,10,12,14,15],"lower":[0,2,6,13],"lowli":15,"ltu":4,"lunar":5,"lxmf":[3,5,6,8,9,13],"lxmfy":5,"lxst":5,"m":[0,2,12,13],"mac":[6,12],"machin":[2,7,12,13,15],"machineri":10,"maco":[5,10],"made":[2,3,6,9,12,15],"mai":[2,6,8,9,10,12,13,15],"mailbox":10,"main":[0,3],"maintain":[2,3,8,10,12,13,14],"mainten":[2,8,12,15],"make":[0,2,3,4,6,8,10,11,12,13,14,15],"malici":[2,8,12,13],"malinform":11,"manag":[2,5,8,9,10,12,14,15],"mani":[0,2,3,4,6,8,9,10,12,13,14,15],"manipul":[12,14,15],"manjaro":2,"manner":[8,10],"manual":[0,2,6,8,9,12,13,14,15],"manufactur":[4,6],"map":[6,10,12,13,15],"mark":[2,3,7,9,12,14,15],"markdown":3,"market":15,"markqvist":[0,11],"markup":[3,10],"mass":15,"master":[0,3,9,15],"match":[0,6,12,13,15],"math":15,"mathemat":15,"matter":[2,6,8,15],"matur":13,"max":13,"maximum":[0,6,9,12,13],"mayb":15,"mb":3,"mbp":13,"md":3,"mdu":[0,9],"me":[6,15],"mean":[2,4,6,8,9,12,13,15],"meaning":2,"meantim":9,"measur":[8,12,15],"mechan":[2,5,6,8,13,14],"media":15,"mediev":15,"medium":[0,4,5,6,8,9,10,12,14],"meet":15,"megaphon":15,"member":[2,12],"memori":[2,8,12],"mental":15,"mention":[6,12],"menu":0,"menu_mod":0,"merchant":7,"mere":15,"merg":[7,13],"merit":5,"mesh":[2,6,8,12,13,14,15],"meshchat":10,"meshchatx":5,"messag":[0,2,3,8,9,10,12,13,15],"message_class":9,"messagebas":[0,5,9],"messagecallbacktyp":9,"messeng":[8,12],"met":[2,15],"meta":3,"metadata":[2,3,6,12,13,15],"metaphor":15,"metavar":0,"meter":6,"meth":0,"method":[0,2,5,6,9,12],"methodologi":[12,13],"metric":10,"mevpekyafshak5wr":6,"mhz":[6,12],"mi":0,"microcontrol":12,"micromanag":15,"micron":[3,5],"microwav":8,"might":[2,3,6,8,12,13,15],"mikrotik":4,"millimet":4,"million":15,"millisecond":[0,8,13,15],"mind":[8,15],"mindset":15,"mine":15,"miner":15,"minim":[4,5,6,12],"minimalsampl":0,"minimum":[0,2,6,9,12,13,15],"minimum_bitr":9,"miniscul":15,"minut":[0,2,3,6,12,15],"mirror":[5,8,13],"mirror_interv":3,"misconfigur":2,"mislead":[2,15],"miss":[0,2],"missil":15,"mistak":2,"misunderstand":11,"mitig":8,"mix":[5,6,8,13],"mixtur":14,"mobil":[6,8,12],"mode":[0,2,3,4,5,8,9,10,12,13,14,15],"model":[7,8,13,15],"modem":[5,6,8,9,10,12,14,15],"modem73":10,"moder":6,"modern":[2,4,10,15],"modif":3,"modifi":[3,6,7,8,12,13],"modul":[0,2,3,4,5,6,8,12,13,14],"modular":10,"moment":[12,15],"momentarili":6,"monero":11,"monitor":[2,6,10,12,13],"moon":0,"moral":15,"more":[0,2,4,6,8,9,10,11,12,13,14,15],"most":[2,4,6,8,9,10,12,13,15],"mostli":[6,8,12],"motiv":5,"mountain":15,"move":[3,6,8,12,13,15],"msgpack":3,"msgtype":[0,9],"mtu":[0,6,9,12,14],"mu":3,"much":[2,6,8,10,12,13,14,15],"multi":[5,8,10,12,13,14],"multicast":6,"multicast_address_typ":6,"multilater":12,"multipl":[0,3,6,8,10,12,13],"multiplex":[0,13],"multipoint":12,"multitud":2,"must":[0,2,3,6,8,9,12,13,15],"mutual":15,"mw":6,"my":[3,6,12,15],"my_fil":13,"my_ident":13,"my_network":[12,13],"my_network_ident":6,"my_nod":3,"myapp":3,"mycal":6,"myfork":3,"myfriend":15,"mymirror":3,"myrepo":3,"myriad":12,"mysteri":15,"n":[0,3,12,13],"name":[0,2,3,5,6,8,9],"namespac":0,"nano":3,"narg":0,"nat":[2,6],"nativ":[0,8],"natur":6,"navig":3,"nearbi":[6,8],"nearest":6,"nears":12,"neat":8,"neccessari":6,"necesarri":6,"necessari":[3,4,6,8,9,12],"necessarili":12,"need":[0,2,3,4,5,6,8,9,10,11,12,13,14,15],"neg":2,"neglig":[12,15],"negoti":15,"neighbor":15,"neither":[9,12],"neon":0,"neopixel":13,"nerd":3,"net":6,"netcat":6,"network":[0,4,6,9,13,14,15],"network_ident":[6,12,13],"network_nam":[2,6],"neutral":[8,15],"never":[6,8,9,12,15],"new":[0,2,3,5,8,9,12,13,15],"new_id":13,"new_ident":13,"newer":[9,12],"newest":12,"newli":[6,9,12],"newlin":[6,13],"next":[2,3,6,9,12,15],"next_hop":9,"next_hop_interfac":9,"nice":15,"nicknam":12,"no1cll":6,"no_data_for":9,"no_inbound_for":9,"no_outbound_for":9,"noauth":13,"nobl":0,"noble_ga":0,"noble_gas":0,"nobodi":3,"nocheck":13,"node":[2,5,6,13,14],"node_nam":3,"noid":13,"nois":[9,11,15],"noisi":15,"nomad":5,"nomadnet":10,"nomadnetwork":10,"non":[2,6,9,10,12,15],"none":[0,2,3,6,9,12,13],"noninfring":7,"nor":[2,15],"normal":[0,2,3,6,9,12,13],"notabl":10,"notat":[12,13],"note":[0,3,4,5,6,9,12,13],"noth":[4,8,14,15],"notic":[3,6,7,12,13],"notif":[0,9],"now":[0,2,12,13,15],"np":13,"nrf52":4,"nt":0,"num":0,"number":[0,2,3,6,8,9,10,12,13,15],"o":[0,2,6,12,13,14],"obj":3,"object":[0,9,15],"obscur":2,"observ":[8,15],"obsolet":15,"obstacl":15,"obtain":[2,4,7,9,12],"obvious":12,"occupi":15,"occur":[0,6,13,14],"ocean":15,"ocur":9,"odd":0,"ofdm":10,"off":[2,6,8,10,12,13,14,15],"offer":[2,5,6,8,9,10,12,13,15],"offic":8,"offlin":[0,2,8,10],"often":[2,6,8,12,13,15],"oganesson":0,"old":[0,2,4,11,12,15],"older":13,"omit":9,"on_interfac":9,"onc":[0,2,3,4,6,9,12,13,14,15],"one":[0,2,3,4,6,8,9,10,12,13,14,15],"ones":[2,6,8,13],"oneself":12,"ongo":10,"onli":[0,2,3,4,6,8,9,12,13,14,15],"onlin":[0,13,15],"onto":[2,12,15],"opaqu":8,"open":[0,2,3,4,5,6,8,9,10,11,12,13,14],"open_port":0,"openmodem":[6,14],"openssl":[2,12],"openwrt":5,"oper":[2,3,4,6,8,9,12,13,14,15],"opinion":11,"opkg":2,"opportun":2,"opportunist":8,"opposit":[0,6],"oppress":15,"opt":12,"optic":[4,14,15],"optim":[2,3,8,15],"option":[0,2,3,4,5,8,9,10,12,13,15],"ord":0,"order":[0,9,13],"organ":[2,3,8,12,13,15],"organis":[6,11],"orient":12,"origin":[0,3,8,10,12,15],"os":2,"other":[0,2,3,4,6,7,8,9,10,12,13,15],"otherwis":[0,7,9],"our":[0,6,12,15],"ourselv":8,"out":[0,4,6,7,9,10,12,13,15],"outbound":[6,9,12],"outgo":[0,6,9,12,13],"outlin":[2,4,12],"output":[3,6,13],"outsid":[9,14,15],"over":[0,4,5,6,8,9,10,11,12,13,14,15],"overal":[12,13],"overcom":12,"overhead":[2,4,6,12,15],"overlai":2,"overli":11,"overlord":15,"overrid":[0,3],"oversight":12,"overview":[3,5,6],"overwhelm":[6,8,9],"overwrit":13,"own":[0,2,8,9,12,13,14,15],"owner":[0,15],"ownership":15,"p":[0,3,13],"pack":[0,9],"packag":[0,2,6,10,12],"packb":0,"packed_s":0,"packet":[0,2,5,6,8,9,10,13,14,15],"packet_callback":0,"packet_deliv":0,"packet_hash":0,"packet_receipt":[0,9],"packet_timed_out":0,"packetreceipt":[0,5,9],"pad":[12,14],"page":[5,12,13,15],"page_cont":3,"pagin":3,"pair":[6,9,12,13],"pamac":2,"panic":[0,13,15],"panic_on_interface_error":[0,13],"panopticon":15,"paper":10,"par":[0,2],"paradox":15,"parallel":2,"paralysi":15,"param":0,"paramet":[0,4,5,9,12,13],"paranoia":15,"parasit":15,"pariti":[0,6,13,14],"parity_even":0,"parity_non":0,"parity_odd":0,"pars":[0,3],"parse_arg":0,"parser":[0,3,5],"part":[0,2,3,6,8,9,10,12,13,15],"particip":[2,5,6,8,12,13,15],"particular":[0,4,6,7,12,13],"particularli":[6,13],"partner":15,"pass":[0,4,6,8,9,12,13,15],"passphras":[2,6,8,12],"passport":12,"past":13,"patch":15,"path":[0,2,3,4,5,8,9,12,13,15],"path_respons":9,"pathfinder_m":9,"patient":15,"pattern":[4,5,8,12],"payload":[0,6,9,12,13],"pdf":5,"peac":15,"peach":0,"peak":3,"peer":[0,2,3,6,9,10,12,13,15],"penalti":6,"pend":[0,12],"peopl":[2,10,12,15],"per":[3,6,8,9,10,12,13,14,15],"percent":[0,6],"percentag":9,"perfectli":2,"perform":[0,2,3,6,8,9,10,12,13,15],"perhap":[2,15],"period":[0,3,6,9,12,13],"peripher":10,"perm":3,"perman":[2,6,13],"permiss":[5,6,7,13,15],"permissionless":[12,13],"permit":7,"perpetu":15,"persecut":12,"persist":[6,13,15],"person":[5,6,7,8,11,12],"perspect":[6,8,9,12,14],"pet":0,"petit":15,"philosophi":[11,12,14,15],"phone":[2,5,8,15],"phonebook":10,"photo":15,"phy":13,"physic":[0,2,4,5,6,8,9,10,12,13,14],"pi":[0,5,8,12,13,14,15],"pick":12,"piec":12,"pillar":15,"ping":[13,15],"pip":[0,2,3,4,6,13],"pip3":2,"pipe":[5,10,13,14,15],"pipeinterfac":[4,6,10],"pipx":2,"pitfal":12,"pkcs7":[12,14],"pkg":2,"place":[0,2,3,6,8,12,13,15],"plaform":4,"plain":[0,4,6,9,12,15],"plain_mdu":9,"plaintext":[0,9,15],"plan":[8,12,15],"planet":15,"planetari":[14,15],"platform":[0,4,5,10,12,13,15],"pleas":[0,2,6,9,13,15],"plenti":[8,12],"plug":[13,15],"plugin":[10,15],"pmr":12,"poetri":15,"point":[2,3,4,6,8,10,11,12,13,15],"pointer":2,"polici":[13,15],"polit":15,"pomelo":0,"popul":9,"popular":14,"port":[0,2,4,5,6,8,12,14,15],"port0":13,"portabl":[5,6,8,12],"portion":7,"pose":[2,12],"posit":[0,3,13],"posix":2,"possess":[6,12,15],"possibl":[2,3,4,6,8,9,10,12,13,14],"possibli":[2,12],"post":[0,5],"postfix":13,"potenti":[0,2,3,6,11,12,13,14,15],"power":[2,4,5,6,8,10,12,13,14],"powershel":2,"ppp":0,"practic":[8,12,14,15],"pre":[2,8,9,12],"preambl":[6,13],"preced":[0,3],"preciou":8,"precompil":2,"predatori":15,"predict":12,"prefer":[2,3,11,12],"prefer_ipv6":6,"premis":[8,15],"prepar":[0,12],"prerequisit":9,"presenc":[5,6,9],"present":[6,8,10,12,13,15],"preserv":[2,5,9],"preshar":12,"press":0,"pretend":[10,12],"prettyhexrep":0,"prevent":[3,6,8,13,15],"preview":3,"previou":0,"previous":[6,9,12],"price":15,"primari":[12,15],"primarili":[6,8,10],"primarlii":2,"primit":[2,5],"principl":[5,8,12,14],"print":[0,3,6,13],"print_filelist":0,"print_help":0,"print_menu":0,"priorit":[8,12,15],"prioriti":12,"prioritis":[5,6,8,9],"privaci":[2,6,10,15],"privat":[2,3,6,8,9,10,11,12,13,14,15],"private_ret":2,"privileg":[13,15],"probabl":[0,2,8,12,13,14],"probe":13,"problem":[2,12,13,15],"proc":13,"procedur":[2,9,12],"process":[0,2,3,4,6,8,9,12,13,15],"process_incom":0,"process_outgo":0,"product":[13,15],"profil":15,"profit":15,"profound":[8,15],"profoundli":15,"program":[0,3,4,5,6,9,12,14],"program_setup":0,"programm":12,"programmat":12,"progress":[0,3,9,13,14],"progress_callback":9,"project":[10,11,15],"promis":2,"prompt":[0,2],"proof":[0,6,8,9,12,13,15],"proof_packet":0,"proof_requested_callback":9,"proof_strategi":9,"propag":[5,6,8,9,10,13,15],"proper":2,"properli":2,"properti":[0,8,9],"proport":12,"propos":5,"protect":[2,13,15],"protocol":[2,3,4,5,6,8,14],"prove":[0,8,12,15],"prove_al":[0,9],"prove_app":9,"prove_non":9,"proven":[9,12],"provid":[0,2,3,4,5,6,7,8,9,10,12,13,14,15],"provis":[4,13],"prv_byte":9,"pseudo":13,"psycholog":15,"pub_byt":9,"pub_to_fil":9,"public":[0,3,5,6,8,9,11,13,14],"public_inform":0,"publicli":[2,6,12,13],"publish":[2,3,5,6,7,9,12],"publish_blackhol":13,"publish_blackhole_en":9,"publish_ifac":6,"pull":3,"puppet":15,"purchas":[2,12,14],"pure":[5,12],"purg":9,"purpos":[2,4,6,7,8,9,10,12,13,15],"purposefulli":7,"push":[3,10,15],"put":[0,4,6,13],"py":[0,3,12,13],"py3":2,"pyca":[2,12],"pygment":3,"pyseri":[0,2],"python":[0,3,5,6,9,12,13,14,15],"python3":[0,2,4],"q":[0,3,13],"qr":[8,10],"qualiti":[9,13,15],"queri":[0,2,3,9,13,15],"question":[2,4,6],"queu":[9,13],"queue":[6,12],"quick":13,"quickli":[6,10,11,12,14],"quiet":[3,6,13,15],"quinc":0,"quirk":2,"quit":[0,2],"qvist":[7,14],"r":[0,3,6,12,13],"radic":15,"radio":[5,6,8,9,10,12,13,14,15],"radon":0,"rais":[0,9],"rak":4,"ram":[2,6],"randint":0,"random":[0,9,11,12],"random_text_gener":0,"randomis":12,"randomli":[0,12],"rang":[0,2,3,4,6,8,12,13,14,15],"rapidli":6,"rare":[2,6],"raspberri":[5,8,12,13,14],"rasperri":2,"ratchet":[9,12],"ratchet_count":9,"ratchet_expiri":9,"ratchet_id_receiv":9,"ratchet_interv":9,"ratchets":9,"ratchets_path":9,"rate":[0,2,5,9,10,13],"rather":[2,9,10,13,15],"ratio":9,"raw":[0,3,4,9],"rawchannelread":[5,9],"rawchannelwrit":[5,9],"rawiobas":9,"rawmu":3,"rb":0,"rbrowser":5,"re":[0,6,8,9,12,13,15],"reach":[2,5,6,8,9,13,15],"reachabl":[0,2,6,8,9,10,12,13],"reachable_on":6,"read":[0,2,3,6,8,9,12,13,14,15],"read_loop":0,"readabl":[0,6,9,12,13,15],"reader":[0,9],"readi":[0,2,4,6,9,14,15],"readili":14,"readm":3,"readwrit":3,"ready_byt":[0,9],"ready_callback":9,"real":[2,4,6,8,10,13,14,15],"realiti":[2,11,15],"realiz":15,"realli":[6,9,13,15],"realm":15,"reappear":6,"reason":[2,6,12,13],"reassembl":12,"reboot":15,"rebroadcast":8,"rebuilt":15,"recal":[0,9,13],"recall_app_data":9,"recap":12,"receipt":[0,8,9,12],"receiv":[0,2,3,6,8,9,11,12,13,15],"receive_path_respons":9,"receive_stream_id":9,"received_announc":[0,9],"recent":[9,12],"recept":9,"reception_rssi":0,"reception_snr":0,"reception_stat":0,"recip":2,"recipi":[12,15],"reclaim":15,"recogn":[12,15],"recognis":13,"recognit":15,"recommend":[0,2,6,12],"recondit":13,"reconnect":[0,8,15],"reconnect_port":0,"reconstruct":12,"record":[2,3,12],"record_stat":3,"recoveri":6,"recreat":12,"recurs":[9,12],"reduc":[6,13],"redund":[2,8],"ref":3,"refer":[0,2,3,5,6,10,13,15],"refin":11,"refresh":13,"refus":8,"regain":2,"regard":12,"region":6,"regist":[0,3,9,13],"register_announce_handl":[0,9],"register_message_typ":[0,9],"register_request_handl":[0,9],"registrar":15,"registri":15,"regul":6,"regular":13,"regulatori":15,"regurgit":15,"reject":15,"rel":[3,4,6,8,12],"relai":[2,5],"relat":[2,3],"relationship":[8,12,13,15],"releas":[2,5,6,12,13,15],"relev":[0,2,4,6,9,12,13,15],"reli":[2,6,8,11,12,13,15],"reliabl":[2,4,6,8,9,12,14,15],"relianc":[2,15],"relief":8,"reload":13,"rem":0,"remain":[3,6,8,9,10,12,15],"rememb":[6,8,9,12],"remot":[0,3,5,9,12],"remote_ident":[0,3,9],"remote_identifi":0,"remote_management_allow":13,"remote_management_en":9,"remote_p":0,"remotesensor":12,"remov":[3,9,13,15],"remove_message_handl":9,"remove_ready_callback":9,"render":[3,10,15],"rent":15,"replac":[0,2,8,9,10,12,13,15],"repli":[0,13],"replic":[4,12],"reply_data":0,"reply_messag":0,"reply_text":0,"repo":[3,13],"repo_nam":3,"report":[6,9,11,13],"repositori":[2,5,12,13,15],"repres":[8,12,15],"represent":[0,9,15],"repurpos":2,"reput":[12,13],"request":[5,8,9,12,13,14,15],"request_destin":0,"request_fail":0,"request_id":[0,9],"request_packet":0,"request_path":[0,9],"request_receipt":[0,9],"request_receiv":0,"requested_at":[0,9],"requestexampl":0,"requestor":6,"requestreceipt":[5,9],"requir":[0,2,3,6,8,9,10,12,13,14,15],"require_shared_inst":9,"required_discovery_valu":[9,13],"rerout":15,"resend":9,"reserv":[0,8,9,15],"reset":3,"resid":[6,15],"resili":[2,8,10,13,14,15],"resist":8,"resiz":13,"resolut":[2,3,6,12],"resolv":[3,5,6,8,12,13],"resourc":[0,2,5,6,8,9,11,13,15],"resource_callback":9,"resource_sending_conclud":0,"resource_strategi":9,"respawn":6,"respawn_delai":6,"respawn_interv":6,"respect":[3,6,8,14,15],"respond":[0,8,9,13],"respond_to_prob":13,"respons":[5,6,9,12,14,15],"response_callback":[0,9],"response_gener":[0,9],"rest":[8,14,15],"restart":[6,13],"restartsec":13,"restor":[2,6,15],"restrict":[3,6,7,8,13,15],"result":[0,2,6,12,13],"ret":[5,12],"retain":[6,9],"retained_ratchet":9,"retibb":5,"reticulum":[0,6,8,9],"retipedia":5,"retransmiss":[8,12],"retransmit":[6,12],"retri":[0,3,9,12],"retriev":[9,13],"return":[0,6,9,13,15],"reveal":[2,9,12,14],"revers":13,"review":12,"revis":13,"revok":15,"revolut":15,"rfe":13,"rich":10,"ridicul":12,"right":[2,3,6,7,15],"rigid":15,"rington":10,"rippl":15,"risc":5,"risk":12,"riski":15,"rmap":2,"rn":[0,2,3,4,5,9,12,13,15],"rncp":5,"rngit":5,"rngit_config":3,"rnid":[5,12],"rnmon":5,"rnode":[2,5,12,13,14],"rnodeconf":[4,5],"rnodef3b9":6,"rnodeinterfac":[2,4,6,13],"rnodemultiinterfac":6,"rnpath":[2,5,6],"rnphone":10,"rnprobe":[2,5],"rns_bin_dir":13,"rns_config":3,"rns_remot":3,"rnsconfig":3,"rnsd":[2,5],"rnsh":[5,10],"rnspure":[2,12],"rnstatu":[2,5,6,12],"rnstransport":[6,13],"rnx":5,"road":15,"roadmap":[11,15],"roam":[5,6,8],"robot":12,"robust":[2,6,15],"role":8,"roll":6,"rom":13,"room":[10,15],"root":[3,12],"rotat":[9,12,13],"round":[0,9,13],"rout":[2,4,6,8,9,10,12,13,14,15],"router":[2,6,8,13,15],"rpc":13,"rpc_kei":13,"rprogress":0,"rrc":5,"rrcd":10,"rssi":[0,9,13],"rtsct":0,"rtt":[0,9,12],"rttstring":0,"rubber":15,"rule":[2,3,5,6,8,13,15],"run":[0,2,3,4,6,8,9,10,12,13,14,15],"runtim":[0,12],"rust":2,"rw":3,"rx":[6,13],"rxb":0,"sa":10,"safe":[12,13,15],"safeguard":15,"sai":15,"said":12,"same":[0,2,3,4,6,8,9,10,12,13,15],"sand":15,"satellit":8,"satisfi":12,"save":[3,9,12,13],"save_error":0,"saved_filenam":0,"saw":10,"scalabl":[13,14],"scale":[12,14,15],"scan":[2,6],"scarc":15,"scarciti":5,"scatter":15,"scenario":[2,6,12],"schedul":[3,9],"scheme":[3,4,6,13],"scope":[3,6],"scrape":15,"scratch":[4,15],"screen":0,"script":[2,3,4,6,13],"scrutini":12,"seamless":[6,12],"seamlessli":[6,8],"search":[5,9,10],"second":[0,6,8,9,10,12,13,14,15],"secreci":[6,9,10,12,14],"secret":[8,12],"section":[2,3,4,6,8,10,12,13],"secur":[2,3,5,8,10,12,13,14,15],"see":[0,2,3,6,8,9,12,13,14,15],"seek":[12,15],"seen":[6,12,15],"segment":[0,2,6,8,9,12,13,14],"select":[0,2,6,15],"self":[0,2,12,14,15],"sell":7,"semi":[3,13],"semtech":4,"send":[0,3,6,8,9,12,13,15],"send_stream_id":9,"sender":[0,2,8,12,13],"sens":[8,15],"sensibl":[2,4,6],"sensit":15,"sensor":[8,12],"sent":[0,2,8,9,12,13,15],"sentiment":12,"separ":[0,6,8,10,12,13],"sequenc":[0,9,12,13,14],"sequenti":14,"serfdom":15,"seri":4,"serial":[0,2,5,8,12,14,15],"serialinterfac":[4,6],"serv":[0,4,5,6,8,10,11,12,13,15],"serve_nomadnet":3,"serve_path":0,"server":[0,2,4,5,8,9,10,12,13,15],"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,3,5,6,8,10,12,15],"session":[2,10,12,13],"set":[0,2,3,4,6,8,9,10,12,13,14,15],"set_default_app_data":9,"set_delivery_callback":[0,9],"set_link_closed_callback":[0,9],"set_link_established_callback":[0,9],"set_packet_callback":[0,9],"set_proof_requested_callback":9,"set_proof_strategi":[0,9],"set_ratchet_interv":9,"set_remote_identified_callback":[0,9],"set_resource_callback":9,"set_resource_concluded_callback":[0,9],"set_resource_started_callback":[0,9],"set_resource_strategi":[0,9],"set_retained_ratchet":9,"set_timeout":[0,9],"set_timeout_callback":[0,9],"setup":[0,2,5,6,13],"sever":[2,3,8,9,13],"sf":13,"sh":6,"sha":[8,9,12],"sha256":[12,14],"shall":[7,12],"shape":[8,15],"share":[0,2,8,9,10,12,13,15],"share_inst":13,"shared_instance_port":13,"shared_instance_typ":[9,13],"shelf":[12,14],"shell":[2,3,5,13,15],"shift":15,"shine":15,"ship":[12,15],"shop":[0,15],"short":[4,5,6,12,13],"shorter":6,"shorthand":[6,13],"shot":2,"should":[0,2,3,6,8,9,12,13,15],"should_ingress_limit":0,"should_quit":0,"should_use_implicit_proof":9,"shout":15,"show":[2,3,13,15],"shown":[0,11],"shut":15,"side":[6,13,14],"sideband":[2,5,13],"sign":[6,8,9,12,13,15],"signal":[0,6,9,12,13,15],"signatur":[8,9,12,13,14,15],"signifi":12,"signific":8,"significantli":[6,9],"silent":13,"similar":[0,2,3,4,6,9,10,13,14],"simpl":[0,2,4,9,10,12,13,14,15],"simpler":[3,6,8,14],"simplest":[6,12],"simpli":[0,2,3,4,6,8,10,11,12,13,15],"simplic":12,"simplifi":0,"simplyequip":4,"simultan":[2,12],"sinc":[0,2,3,6,8,9,12,15],"singl":[0,2,3,6,8,9,12,13,14,15],"singular":12,"sit":[2,15],"site":[6,8,15],"situat":[2,4,6,8,12,13],"size":[0,2,3,6,9,12,13],"size_str":0,"skip":0,"sky":5,"slap":15,"slave":15,"sleep":[0,2,13],"slice":[0,15],"slightli":[0,2,15],"sloppi":15,"slottim":[6,13],"slow":[0,6,8,10,12,15],"slower":[6,9,12],"small":[0,2,6,8,9,12,14,15],"smaller":9,"smallest":2,"snippet":13,"snr":[0,9,13],"so":[0,2,4,6,7,8,9,10,11,12,13,14,15],"social":[2,15],"societi":15,"socket":[6,13,14,15],"soft":15,"softwar":[2,3,4,6,7,10,12,13,15],"solar":15,"sole":6,"solid":11,"solut":[12,13],"solv":[12,15],"some":[0,2,4,6,8,9,10,12,13,15],"some_remot":3,"someon":[2,6,13,15],"someth":[3,6,8,12,15],"somethign":0,"sometim":[4,6,10,15],"somewhat":2,"somewher":15,"soon":[3,9,13],"sort":[6,12,13],"soul":15,"sound":15,"soundmodem":6,"sourc":[0,2,3,4,5,8,9,12,14,15],"sovereign":[2,12,15],"sovereignli":15,"sovereignti":[5,14],"space":[0,2,4,8,12,14,15],"spam":[2,6,12,13],"spammi":13,"span":[6,8,12],"spawn":6,"spe":6,"speak":[11,15],"spec":12,"special":[10,12,13],"specif":[0,3,4,5,6,8,9,13,14,15],"specifi":[0,2,3,4,6,8,9,12,13],"spectrum":[6,12,15],"speed":[0,6,9,12,13,15],"sphere":15,"spinner":15,"spirit":10,"split":0,"sponsor":11,"spoof":15,"spread":[6,13],"spreadingfactor":6,"squelch":6,"ssh":[3,10,13],"ssid":6,"ssl":15,"stabil":[8,15],"stabl":[2,6,8,12,14],"stack":[0,2,8,9,10,12,13,14,15],"stage":12,"stai":[0,12,13,15],"stale":[8,9],"stale_grac":9,"stale_tim":9,"stamp":[6,9,13],"stanc":15,"stand":15,"standalon":[5,10],"standard":[3,4,6,10,12,13],"start":[0,3,4,5,6,8,9,10,12,13,15],"startup":[0,2,13],"stat":[3,9,13],"state":[0,5,8,15],"static":[2,3,6,9,15],"staticmethod":0,"station":6,"stationari":[8,13,15],"statist":[0,5,6,9,11],"stats_ignore_ident":3,"statu":[0,2,3,5,6,9,10,12,13,15],"stderr":13,"stdin":[6,13],"stdio":14,"stdout":[0,3,6,13],"steel":15,"stem":11,"step":[0,2,4,15],"stewardship":15,"still":[0,2,3,6,8,12,13,15],"stock":0,"stone":15,"stop":[9,14,15],"stopbit":[0,6,13],"storag":[2,5,6,10,12,13,15],"store":[0,3,5,9,10,12,13],"store_tru":0,"storm":15,"str":0,"straightforward":6,"strang":15,"stranger":15,"strangl":15,"strateg":8,"strategi":[5,6,9],"stream":[0,9,10,12,13,15],"stream_id":[0,9],"street":15,"strength":[9,14,15],"strict":15,"strictli":[6,12],"string":[0,9,15],"stringmessag":0,"strip":[3,15],"strong":[2,12,15],"stronger":2,"strongli":2,"struct":0,"structur":[0,5,8,9,12,14,15],"style":6,"sub":[0,6],"subclass":[0,9],"subcommand":3,"subdirectori":3,"subinterfac":6,"subject":[2,7,13,14,15],"sublicens":7,"subnet":[2,8],"subscrib":[2,13,15],"subsequ":[0,3,12],"subset":6,"subsid":6,"substanti":7,"substrat":15,"subtl":15,"subtli":15,"succe":[2,13],"succeed":[0,9],"succesfulli":8,"success":[2,3,6],"successful":9,"successfulli":[0,9,12],"suddenli":15,"sudo":[2,13],"suffer":8,"suffic":12,"suffici":[2,6,12,13,14],"suffix":0,"suit":[2,4,10,12,13,15],"suitabl":[0,2,6,8,12,13,14],"sum":15,"super":0,"supersed":6,"suppli":[0,6,9,12,13,14],"supplier":2,"support":[0,2,3,5,6,8,9,10,12,13,14],"sure":[0,2,3,4,13],"surfac":15,"surround":15,"surveil":[12,15],"surviv":[2,12,13,15],"sustain":15,"switch":[4,6,8,12,13,15],"sx1262":4,"sx1268":4,"sx1276":4,"sx1278":4,"sx1280":4,"sy":0,"symlink":13,"symmetr":[9,12],"sync":3,"syncer":3,"synchron":[5,10,15],"syntax":5,"synthet":15,"system":[0,2,3,4,5,6,7,8,9,10,11,12,14],"systemctl":13,"systemd":13,"t":[0,2,3,6,8,9,12,13,15],"tabl":[2,6,8,12,13,15],"tablet":2,"tackl":10,"tag":[3,9],"tail":6,"tailor":12,"take":[0,2,3,6,10,12,13,14,15],"taken":[0,3,12,13,15],"talk":[10,15],"tamper":15,"tangerin":0,"tap":[4,15],"tar":3,"target":[0,2,3,6,10,13,15],"target_hash":9,"target_host":6,"target_port":[6,13],"task":[3,13],"taught":15,"tcp":[2,4,5,8,12,13,14,15],"tcpclientinterfac":[2,4,6],"tcpinterfac":13,"tcpserverinterfac":[2,6],"tdata":0,"teach":[13,15],"teahous":11,"teardown":[0,9],"teardown_reason":0,"tech":15,"technician":15,"technologi":[2,8,15],"teffect":0,"telco":15,"telecom":15,"telemetri":[10,11],"telephon":5,"telephoni":10,"televis":15,"tell":[0,2,6,8,15],"temperatur":12,"templat":5,"temporari":[2,6,13],"temporarili":[6,8],"ten":12,"tenanc":15,"tenant":15,"tend":6,"tenuou":15,"term":[2,6,8,12,15],"termin":[0,2,3,9,10,13],"terminologi":[8,12],"termux":2,"terrifi":15,"test":[2,3,10,12,13,15],"testnet":13,"tether":15,"text":[0,10,12,13],"textur":15,"tfile":0,"tgz":13,"than":[0,2,6,8,9,10,11,12,13,14,15],"thank":3,"thei":[0,2,3,6,8,9,10,12,13,15],"them":[0,2,3,4,6,8,10,11,12,13,14,15],"theme":3,"themselv":[6,8,13],"theori":15,"thereaft":12,"therefor":[2,12,14,15],"thi":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15],"thing":[0,2,8,10],"think":[2,4,6,8,11,12,15],"those":[2,8,12,13,15],"though":[2,6,8,12],"thought":15,"thousand":[2,6,12,13,15],"thread":[0,3],"threat":13,"three":[2,12,15],"threshold":6,"throough":6,"throttl":[6,8],"through":[0,2,3,4,5,6,8,9,10,12,13,14],"throughout":[8,12],"throughput":[9,10,12,14],"thrown":[9,15],"thu":[8,9,12],"ti":[0,8,12],"tighten":15,"tightrop":15,"tild":13,"time":[0,2,3,4,5,6,8,9,10,11,12,13],"time_since_last":0,"timeout":[0,9,13,15],"timeoutarg":0,"timer":3,"timestamp":[0,3,12,15],"timestr":0,"tion":6,"titl":3,"tl":15,"tmp":13,"tnc":[4,6,9,10,13,14],"to_fil":9,"todai":[12,15],"togeth":[4,8,12,13,15],"toggl":13,"token":[9,12,14],"tokyo":15,"told":15,"toler":6,"tomorrow":15,"too":[0,8,15],"tool":[2,3,4,5,8,10,12,13,14],"toolkit":[2,8],"top":[10,12,13,15],"topic":[2,12],"topographi":[2,8,12,15],"topologi":[2,6,8,12,14,15],"torn":[9,13],"tort":7,"tortur":15,"total":[3,9,12,13,14],"total_s":0,"touch":15,"toward":[0,6,12],"tower":15,"track":[3,9,13,15],"track_phy_stat":9,"trade":[8,12],"tradit":[8,12,15],"traffic":[0,2,6,8,9,12,13,15],"train":[7,15],"transceiv":[2,4,6,10,12,14],"transfer":[0,3,9,12,13,14],"transfer_s":0,"transform":14,"transient":15,"transistor":15,"translat":8,"transmiss":[2,6,9,12,15],"transmit":[0,6,12,15],"transmitt":15,"transpar":[3,4,6,8,12,13],"transport":[0,2,5,6,9,10,13,14,15],"transport_en":9,"transport_ident":13,"travel":15,"travers":[2,6,9,12,15],"treat":[3,8,12,15],"tree":3,"tremend":8,"tri":0,"trip":[0,9,13],"trivial":[12,14],"troubl":15,"true":[0,2,6,9,13,15],"truli":[4,12,15],"truncat":[9,12,13],"truncated_hash":9,"truncated_hashlength":[0,9],"trust":[2,5,6,8,12,13],"trustless":[5,12,14],"trustworthi":[8,13],"try":[0,3,5,6,8,9,10],"ttime":0,"ttransfer":0,"ttyacm0":6,"ttyusb0":[0,6,13],"ttyusb1":6,"ttyusb2":6,"tun":[4,6],"tun0":6,"tune":6,"tunnel":[2,6,8,12,14,15],"tupl":9,"turn":[0,6,13,15],"turnaround":6,"tutori":2,"two":[0,3,4,6,8,9,12,13],"tx":[6,13],"txb":0,"txp":13,"txpower":6,"txt":[3,13],"txtail":[6,13],"type":[0,2,5,6,8,9,13],"typeerror":9,"typic":[3,6,8,12],"tyrant":15,"u":[12,13,15],"ubiqu":4,"ubuntu":[5,13],"uci":2,"udp":[5,8,12,13,14],"udpinterfac":6,"uhf":[13,14],"ui":[10,15],"ultim":[2,12,15],"umsgpack":0,"unblackhol":13,"unblock":13,"unbound":15,"uncar":15,"uncencrypt":0,"uncentraliz":5,"unchang":8,"uncoordin":[2,15],"under":[6,9,11,12,13,14,15],"underli":[0,6,8,9,12,14],"undermin":15,"underneath":15,"undersea":15,"understand":[2,5,6,8,9,13,14,15],"understood":15,"underwai":2,"underwear":15,"unencrypt":[0,9,12],"unequivoc":12,"unexplor":8,"unforg":[8,14],"unfortun":2,"unicod":3,"unicode_icon":3,"unidentifi":0,"unidirect":0,"unifi":[8,12],"uninterest":0,"uniqu":[0,6,8,9,10,12,13,14,15],"unit":[0,2,9,13],"univers":15,"unix":3,"unknown":[0,6,8,9,12,13],"unlearn":15,"unless":[0,2,6,8,9,12],"unlicens":12,"unlik":12,"unlock":13,"unnecessari":6,"unorganis":8,"unpack":[0,9],"unpackb":0,"unpaid":15,"unplug":[13,15],"unrecover":[0,13],"unreli":6,"unset":12,"unsupport":9,"until":[0,2,6,9],"untrust":13,"untrustworthi":15,"unus":13,"unwant":[12,13],"up":[0,2,4,6,8,9,10,12,13,14,15],"updat":[0,2,3,9,12,13,15],"upgrad":[2,9,12],"upkeep":6,"upload":3,"upon":[0,6,12],"upset":0,"upstream":[3,13],"uptim":15,"urandom":[12,14],"urgent":15,"uri":10,"url":[3,13,15],"us":[0,3,4,5,6,7,8,9,15],"usabl":[6,12],"usag":[3,5,6,9,10,11,13],"usb":[4,12,13],"useabl":12,"useless":15,"user":[0,2,3,6,8,10,12,13,14,15],"user_input":0,"userland":14,"usernam":15,"usernameher":13,"usr":[6,13],"usual":[2,6,8],"utf":0,"util":[0,4,5,6,12,15],"utilis":[0,2,6,9,12,13,14],"ux":10,"v":[3,5,13],"v1":3,"valid":[0,2,3,6,8,9,12,13,15],"valu":[0,2,6,9,12,13,15],"valuabl":[4,11,15],"valueerror":[0,9],"vanish":15,"vanishingli":15,"var":3,"vari":[2,6,12,13],"variabl":[0,2,3,9],"varieti":[6,10,12,13,14],"variou":[0,2,6,8,10,12,13,14],"vast":[2,12,15],"vastli":8,"ve":8,"vehicl":6,"vendor":[0,4,14],"ventur":15,"verbos":[3,9,13],"veri":[2,4,6,8,9,10,11,12,13,14,15],"verif":[8,9,10,12,13,15],"verifi":[0,2,3,6,8,9,12,13,14,15],"versa":14,"version":[0,2,3,12,13,15],"vhf":[12,14],"vi":3,"via":[2,3,4,6,8,10,11,12,13,14,15],"viabl":8,"vice":14,"video":15,"view":[2,3,6,11,12,13],"viewabl":3,"vim":3,"violat":6,"virtual":[2,4,6,8,12,13,14],"virtuou":15,"visibl":[0,3,6],"visual":[3,15],"vital":15,"voic":[10,11,15],"voicemail":10,"volunt":2,"voluntari":2,"vouch":15,"vpn":[8,15],"vport":6,"vulner":8,"vv":13,"vvv":2,"w":[3,13],"wa":[0,3,4,6,8,9,12,13,14,15],"wai":[0,3,5,6,8,9,10,12,13,15],"wait":[0,2,6,10,12,13,15],"walk":15,"wall":15,"wander":15,"want":[0,2,3,6,8,10,11,12,13,15],"wantedbi":13,"warn":13,"warrant":14,"warranti":7,"wash":15,"wast":[6,8,11,15],"wave":[4,15],"wb":0,"we":[0,2,4,6,8,11,12,15],"weaken":12,"weapon":15,"wear":15,"weather":15,"weav":15,"web":[2,3,10,15],"websit":[2,6,15],"weigh":15,"weight":[13,15],"well":[4,6,8,9,10,11,12,13,14,15],"went":0,"were":[0,10,15],"what":[0,2,5,6,8,9,12,13,15],"whatev":[8,9,12],"wheel":2,"when":[0,2,3,4,6,8,9,10,12,13,15],"whenev":[0,9,12],"where":[2,3,4,5,6,8,9,10,12,13,15],"whereupon":12,"wherev":15,"whether":[0,2,6,7,8,9,12,15],"which":[0,2,3,6,7,8,9,10,12,13,14,15],"while":[0,2,3,4,6,8,9,10,12,13,14,15],"whim":15,"whitelist":12,"whl":2,"who":[2,3,6,8,12,13,15],"whole":[13,15],"whom":[7,15],"whose":[13,15],"why":15,"wide":[2,3,4,6,8,10,12,13,14],"wider":[2,6,8,12,13],"wifi":[2,5,6,8,10,12,13,14,15],"wikipedia":10,"wild":[3,13,15],"wildcard":0,"wilder":15,"willing":13,"window":[5,6,10,13],"windowsil":15,"wipe":13,"wire":[4,5,6,10,14,15],"wireless":[4,8],"wirelessli":6,"wish":[0,6,12,13,15],"within":[0,2,3,6,8,9,12,15],"without":[0,2,3,4,6,7,8,10,12,13,14,15],"wlan0":6,"wolf":4,"won":0,"word":[2,15],"work":[2,4,5,6,8,10,12,13,14],"workabl":8,"workflow":5,"world":[2,4,6,8,10,13,14,15],"worri":8,"worth":2,"would":[3,6,9,10,12,13,15],"wrap":3,"write":[0,2,3,4,6,9,10,12,13,15],"write_timeout":0,"writer":[0,9],"written":[0,12,14,15],"wrong":[0,2,6,15],"wrote":[0,6],"x":[3,9,12,13],"x25519":[12,14],"xenon":0,"xonxoff":0,"y":[0,3],"ye":[2,3,6,12,13,15],"year":[12,15],"yet":[0,6,12,15],"yggdrasil":6,"yi":0,"you":[0,2,3,4,5,6,8,9,10,11,12,13,14,15],"your":[0,3,4,5,6,8,11,12,14,15],"yourself":[2,12,13,14,15],"z":0,"zen":[5,14],"zero":[5,6,9,10,14],"zi":0,"zim":10,"zip":3,"zone":12,"zshrc":2},"titles":["Code Examples","An Explanation of Reticulum for Human Beings","Getting Started Fast","Git Over Reticulum","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":4,"1":4,"25":6,"A":15,"Beings":1,"For":15,"In":15,"Not":[8,15],"Of":[5,15],"Or":15,"The":[3,12,13,15],"To":15,"With":[2,3],"abil":15,"access":[3,12],"ad":2,"address":[8,15],"agenc":15,"alias":3,"an":1,"anchor":15,"android":2,"announc":[0,6,12,15],"api":9,"architectur":15,"arm64":2,"auto":6,"autom":13,"automat":3,"ax":6,"backbon":[2,6],"bandwidth":15,"base":[2,4],"basic":12,"beam":4,"blackhol":13,"board":4,"bookworm":2,"bootstrap":2,"broadcast":0,"buffer":0,"build":[2,8],"burst":6,"byte":15,"can":14,"carrier":15,"center":15,"channel":0,"chat":10,"client":[6,10],"cloud":15,"code":[0,12],"combin":4,"command":3,"common":6,"commun":4,"concept":8,"conceptu":12,"configur":[3,6,13],"connect":[2,6,8,10],"consider":[6,8],"content":5,"contribut":2,"control":6,"cost":15,"creat":[2,3,4,12],"creation":3,"creator":3,"cryptograph":12,"current":[12,14],"custom":[0,2,3,6],"data":13,"death":15,"debian":2,"decentr":15,"deck":4,"depend":2,"design":15,"destin":[3,6,8,12],"detail":12,"develop":2,"devic":[4,14],"disconnect":15,"discov":13,"discover":6,"discoveri":6,"distribut":2,"document":3,"doe":14,"domain":15,"donat":11,"echo":[0,4],"emerg":15,"empti":3,"enabl":[3,6],"encrypt":15,"entrypoint":2,"environ":15,"establish":12,"ethernet":4,"ethic":15,"exampl":[0,3,6],"exist":15,"explan":1,"fabric":15,"fallaci":15,"fast":2,"featur":15,"feedback":11,"filesync":10,"filetransf":0,"find":2,"finish":15,"fix":13,"flow":15,"fork":3,"form":3,"format":[3,12],"forward":15,"from":15,"function":12,"further":12,"futur":12,"get":[2,12],"git":3,"global":2,"goal":12,"grade":15,"hardwar":4,"harm":15,"health":2,"heltec":4,"heterogen":8,"hierarchi":3,"highlight":3,"host":2,"hostil":15,"human":[1,15],"i":[14,15],"i2p":6,"ident":[3,12,15],"identif":0,"illus":15,"implement":14,"implic":12,"improv":13,"includ":[2,13],"independ":15,"indic":5,"infrastructur":[2,15],"instal":[2,4],"instanc":[2,8],"interact":[3,10],"interfac":[0,2,6,10,12,13,14,15],"internet":2,"introduct":12,"introductori":8,"ip":15,"issu":2,"j":10,"kei":12,"kiss":6,"liber":15,"licens":7,"lilygo":4,"limit":[6,15],"line":[3,4],"link":[0,12],"list":13,"listen":6,"local":13,"locat":3,"lora":6,"lora32":4,"lunar":2,"lxmf":10,"lxmfy":10,"lxst":10,"maco":2,"manag":[3,13],"manual":[3,5],"mechan":12,"medium":15,"merit":15,"meshchatx":10,"method":3,"micron":10,"minim":0,"mirror":3,"mix":2,"mode":6,"modem":4,"modul":10,"motiv":12,"multi":6,"name":[12,13,15],"network":[2,3,5,8,10,12],"new":6,"node":[3,8,10,12,15],"nomad":[3,10,15],"note":2,"offer":14,"open":15,"opencom":4,"openwrt":2,"option":6,"over":[2,3],"overview":[8,12],"packet":[4,12],"page":[3,10],"paramet":[3,6],"parser":10,"path":6,"pattern":15,"permiss":3,"person":[2,15],"phone":10,"physic":15,"pi":2,"pipe":6,"platform":2,"port":13,"portabl":15,"post":15,"power":15,"presenc":15,"preserv":15,"primit":12,"principl":15,"prioritis":12,"program":[2,10,13],"propag":12,"propos":3,"protocol":[10,12,15],"provid":11,"public":[2,12,15],"publish":13,"pure":2,"python":2,"radio":[2,4],"rak4631":4,"raspberri":2,"rate":6,"rbrowser":10,"reach":12,"refer":[9,12,14],"relai":10,"releas":3,"remot":[6,10,13],"repositori":3,"request":[0,6],"resolv":2,"resourc":[10,12],"respons":[0,2],"ret":2,"retibb":10,"reticulum":[1,2,3,4,5,7,10,11,12,13,14,15],"retipedia":10,"risc":2,"rn":10,"rncp":13,"rngit":[3,13],"rnid":13,"rnmon":10,"rnode":[4,6],"rnodeconf":13,"rnpath":13,"rnprobe":13,"rnsd":13,"rnsh":13,"rnstatu":13,"rnx":13,"roam":15,"rrc":10,"rule":12,"scarciti":15,"secur":6,"serial":[4,6,13],"serv":3,"server":6,"servic":13,"setup":12,"shell":10,"short":3,"sideband":10,"sky":15,"sourc":13,"sovereignti":15,"specif":[2,12],"stack":5,"standalon":2,"start":2,"state":3,"statist":3,"statu":14,"storag":3,"store":15,"strategi":2,"structur":3,"support":[4,11],"suprem":4,"synchron":3,"syntax":3,"system":[13,15],"systemwid":13,"t":4,"t114":4,"t3s3":4,"tabl":5,"tcp":6,"telephon":10,"templat":3,"through":15,"time":15,"tool":15,"transport":[8,12],"trust":15,"trustless":8,"try":2,"type":[3,4,12,14],"ubuntu":2,"udp":6,"uncentraliz":15,"understand":12,"unsign":4,"us":[2,10,12,13,14],"usag":[4,12],"userspac":13,"util":[2,3,10,13],"v":2,"v1":4,"v2":4,"v3":4,"v4":4,"wai":2,"what":14,"where":14,"wifi":4,"window":2,"wire":12,"work":[3,15],"workflow":3,"x":4,"xl":4,"your":[2,13],"zen":15,"zero":15}}) \ No newline at end of file +Search.setIndex({"alltitles":{"A Carrier-Grade Fallacy":[[15,"a-carrier-grade-fallacy"]],"API Reference":[[9,null]],"ARM64":[[2,"arm64"]],"AX.25 KISS Interface":[[6,"ax-25-kiss-interface"]],"Accessing Repository Pages":[[3,"accessing-repository-pages"]],"Adding Radio Interfaces":[[2,"adding-radio-interfaces"]],"An Explanation of Reticulum for Human Beings":[[1,null]],"Anchor In The Flow":[[15,"anchor-in-the-flow"]],"Android":[[2,"android"]],"Announce":[[0,"announce"]],"Announce Propagation Rules":[[12,"announce-propagation-rules"]],"Announce Rate Control":[[6,"announce-rate-control"]],"Announcing Presence":[[15,"announcing-presence"]],"Auto Interface":[[6,"auto-interface"]],"Automated List Sourcing":[[13,"automated-list-sourcing"]],"Automatic Mirror Synchronization":[[3,"automatic-mirror-synchronization"]],"Backbone Interface":[[6,"backbone-interface"]],"Blackhole Management":[[13,"blackhole-management"]],"Bootstrapping Connectivity":[[2,"bootstrapping-connectivity"]],"Broadcast":[[0,"broadcast"]],"Buffer":[[0,"buffer"]],"Build Personal Infrastructure":[[2,"build-personal-infrastructure"]],"Building Networks":[[8,null]],"Channel":[[0,"channel"]],"Code Examples":[[0,null]],"Combining Hardware Types":[[4,"combining-hardware-types"]],"Command-Line Interaction":[[3,"command-line-interaction"]],"Common Interface Options":[[6,"common-interface-options"]],"Communications Hardware":[[4,null]],"Concepts & Overview":[[8,"concepts-overview"]],"Conceptual Overview":[[12,"conceptual-overview"]],"Configuration":[[3,"configuration"]],"Configuration & Data":[[13,"configuration-data"]],"Configuration Example":[[3,"configuration-example"]],"Configuration Methods":[[3,"configuration-methods"]],"Configuring Interfaces":[[6,null]],"Connect to the Distributed Backbone":[[2,"connect-to-the-distributed-backbone"]],"Connecting Remotes":[[6,"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":[[15,"cost-of-a-byte"]],"Creating Empty Repositories":[[3,"creating-empty-repositories"]],"Creating RNodes":[[4,"creating-rnodes"]],"Creating Signed Releases":[[3,"creating-signed-releases"]],"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":[[12,"creating-and-using-a-network-identity"]],"Creator Permissions":[[3,"creator-permissions"]],"Cryptographic Primitives":[[12,"cryptographic-primitives"]],"Current Status":[[14,"current-status"]],"Current Usage":[[12,"current-usage"]],"Custom Interfaces":[[0,"custom-interfaces"],[6,"custom-interfaces"]],"Customizing Templates":[[3,"customizing-templates"]],"Death To The Address":[[15,"death-to-the-address"]],"Debian Bookworm":[[2,"debian-bookworm"]],"Decentralization Or Uncentralizability?":[[15,"decentralization-or-uncentralizability"]],"Design Patterns For Post-IP Systems":[[15,"design-patterns-for-post-ip-systems"]],"Destination Naming":[[12,"destination-naming"]],"Destinations":[[12,"destinations"]],"Destinations, Not Addresses":[[8,"destinations-not-addresses"]],"Develop a Program with Reticulum":[[2,"develop-a-program-with-reticulum"]],"Discoverable Interfaces":[[6,"discoverable-interfaces"]],"Discovering Interfaces":[[13,"discovering-interfaces"]],"Discovery Parameters":[[6,"discovery-parameters"]],"Donations":[[11,"donations"]],"Echo":[[0,"echo"]],"Emergent Patterns":[[15,"emergent-patterns"]],"Enabling Discovery":[[6,"enabling-discovery"]],"Enabling the Git Page Node":[[3,"enabling-the-git-page-node"]],"Encryption Is Not A Feature":[[15,"encryption-is-not-a-feature"]],"Ethernet-based Hardware":[[4,"ethernet-based-hardware"]],"Ethics Of The Tool":[[15,"ethics-of-the-tool"]],"Example Configuration":[[6,"example-configuration"]],"Fabric Of The Independent":[[15,"fabric-of-the-independent"]],"Fallacy Of The Cloud":[[15,"fallacy-of-the-cloud"]],"Filetransfer":[[0,"filetransfer"]],"Finding Your Way":[[2,"finding-your-way"]],"Fixed Serial Port Names":[[13,"fixed-serial-port-names"]],"Flow & Time":[[15,"flow-time"]],"Forking Repositories":[[3,"forking-repositories"]],"Formatting & Syntax Highlighting":[[3,"formatting-syntax-highlighting"]],"Future Implications":[[12,"future-implications"]],"Getting Further":[[12,"getting-further"]],"Getting Started Fast":[[2,null]],"Git Configuration Parameters":[[3,"git-configuration-parameters"]],"Git Over Reticulum":[[3,null]],"Goals":[[12,"goals"]],"Heltec LoRa32 v2.0":[[4,"heltec-lora32-v2-0"]],"Heltec LoRa32 v3.0":[[4,"heltec-lora32-v3-0"]],"Heltec LoRa32 v4.0":[[4,"heltec-lora32-v4-0"]],"Heltec T114":[[4,"heltec-t114"]],"Heterogeneous Connectivity":[[8,"heterogeneous-connectivity"]],"Hostile Environments":[[15,"hostile-environments"]],"Hosting Public Entrypoints":[[2,"hosting-public-entrypoints"]],"I2P Interface":[[6,"i2p-interface"]],"Identification":[[0,"example-identify"]],"Identities":[[12,"understanding-identities"]],"Identity & Destination Aliases":[[3,"identity-destination-aliases"]],"Identity and Nomadism":[[15,"identity-and-nomadism"]],"Improving System Configuration":[[13,"improving-system-configuration"]],"Included Utility Programs":[[13,"included-utility-programs"]],"Indices and Tables":[[5,"indices-and-tables"]],"Installation":[[4,"installation"]],"Interface Access Codes":[[12,"interface-access-codes"]],"Interface Modes":[[6,"interface-modes"],[6,"interfaces-modes"]],"Interface Modules & Connectivity Resources":[[10,"interface-modules-connectivity-resources"]],"Interface Types and Devices":[[14,"interface-types-and-devices"]],"Introduction & Basic Functionality":[[12,"introduction-basic-functionality"]],"Introductory Considerations":[[8,"introductory-considerations"]],"KISS Interface":[[6,"kiss-interface"]],"LXMF":[[10,"lxmf"]],"LXMF Interactive Client":[[10,"lxmf-interactive-client"]],"LXMFy":[[10,"lxmfy"]],"LXST":[[10,"id16"]],"LXST Phone":[[10,"lxst-phone"]],"Liberation From Limits":[[15,"liberation-from-limits"]],"LilyGO LoRa32 v1.0":[[4,"lilygo-lora32-v1-0"]],"LilyGO LoRa32 v2.0":[[4,"lilygo-lora32-v2-0"]],"LilyGO LoRa32 v2.1":[[4,"lilygo-lora32-v2-1"]],"LilyGO T-Beam":[[4,"lilygo-t-beam"]],"LilyGO T-Beam Supreme":[[4,"lilygo-t-beam-supreme"]],"LilyGO T-Deck":[[4,"lilygo-t-deck"]],"LilyGO T-Echo":[[4,"lilygo-t-echo"]],"LilyGO T3S3":[[4,"lilygo-t3s3"]],"Link":[[0,"link"]],"Link Establishment in Detail":[[12,"link-establishment-in-detail"]],"Listeners":[[6,"listeners"]],"Local Blackhole Management":[[13,"local-blackhole-management"]],"MacOS":[[2,"macos"]],"Managing Group Permissions":[[3,"managing-group-permissions"]],"Managing Repository Permissions":[[3,"managing-repository-permissions"]],"Managing Work Document Permissions":[[3,"managing-work-document-permissions"]],"Manual Synchronization":[[3,"manual-synchronization"]],"Merits Of Scarcity":[[15,"merits-of-scarcity"]],"MeshChatX":[[10,"meshchatx"]],"Micron Parser JS":[[10,"micron-parser-js"]],"Minimal":[[0,"minimal"]],"Mirroring Repositories":[[3,"mirroring-repositories"]],"Mixing Strategies":[[2,"mixing-strategies"]],"Motivation":[[12,"motivation"]],"Naming Is Power":[[15,"naming-is-power"]],"Network Health & Responsibility":[[2,"network-health-responsibility"]],"Network Identities":[[12,"network-identities"]],"New Destination Rate Limiting":[[6,"new-destination-rate-limiting"]],"Node Types":[[12,"node-types"]],"Nomad Network":[[10,"nomad-network"]],"Obtaining Verified Releases":[[3,"obtaining-verified-releases"]],"Open Sky":[[15,"open-sky"]],"OpenCom XL":[[4,"opencom-xl"]],"OpenWRT":[[2,"openwrt"]],"Packet Prioritisation":[[12,"packet-prioritisation"]],"Packet Radio Modems":[[4,"packet-radio-modems"]],"Path Request Burst Control":[[6,"path-request-burst-control"]],"Permission Configuration Locations":[[3,"permission-configuration-locations"]],"Permission Examples":[[3,"permission-examples"]],"Permission Hierarchy":[[3,"permission-hierarchy"]],"Permission Short Forms":[[3,"permission-short-forms"]],"Permission Types":[[3,"permission-types"]],"Permission Validation":[[3,"permission-validation"]],"Permissions":[[3,"permissions"]],"Personal Infrastructure":[[15,"personal-infrastructure"]],"Physics Of Trust":[[15,"physics-of-trust"]],"Pipe Interface":[[6,"pipe-interface"]],"Platform-Specific Install Notes":[[2,"platform-specific-install-notes"]],"Portable Existence":[[15,"portable-existence"]],"Preserving Human Agency":[[15,"preserving-human-agency"]],"Programs & Utilities":[[10,"programs-utilities"]],"Programs Using Reticulum":[[10,null]],"Proposing Work Documents":[[3,"proposing-work-documents"]],"Protocol Specifics":[[12,"protocol-specifics"]],"Protocols":[[10,"protocols"]],"Provide Feedback":[[11,"provide-feedback"]],"Public Domain Protocol":[[15,"public-domain-protocol"]],"Public Key Announcements":[[12,"public-key-announcements"]],"Publishing Blackhole Lists":[[13,"publishing-blackhole-lists"]],"Pure-Python Reticulum":[[2,"pure-python-reticulum"]],"RAK4631-based Boards":[[4,"rak4631-based-boards"]],"RBrowser":[[10,"rbrowser"]],"RISC-V":[[2,"risc-v"]],"RNMon":[[10,"rnmon"]],"RNS FileSync":[[10,"rns-filesync"]],"RNS Page Node":[[10,"rns-page-node"]],"RNode":[[4,"rnode"]],"RNode LoRa Interface":[[6,"rnode-lora-interface"]],"RNode Multi Interface":[[6,"rnode-multi-interface"]],"RRC":[[10,"rrc"]],"Raspberry Pi":[[2,"raspberry-pi"]],"Reaching the Destination":[[12,"reaching-the-destination"]],"Reference Implementation":[[14,"reference-implementation"]],"Reference Setup":[[12,"reference-setup"]],"Release Management":[[3,"release-management"]],"Release Storage & Structure":[[3,"release-storage-structure"]],"Remote Management":[[13,"remote-management"]],"Remote Permission Management":[[3,"remote-permission-management"]],"Remote Shell":[[10,"remote-shell"]],"Repository Creation & Management":[[3,"repository-creation-management"]],"Repository Statistics":[[3,"repository-statistics"]],"Repository Structure":[[3,"repository-structure"]],"Requests & Responses":[[0,"requests-responses"]],"Resolving Dependency & Installation Issues":[[2,"resolving-dependency-installation-issues"]],"Resources":[[12,"resources"]],"RetiBBS":[[10,"retibbs"]],"Reticulum License":[[7,null]],"Reticulum Network Stack Manual":[[5,null]],"Reticulum Network Telephone":[[10,"reticulum-network-telephone"]],"Reticulum Relay Chat":[[10,"reticulum-relay-chat"]],"Reticulum Transport":[[12,"reticulum-transport"]],"Reticulum as a System Service":[[13,"reticulum-as-a-system-service"]],"Retipedia":[[10,"retipedia"]],"Roaming Nodes":[[15,"roaming-nodes"]],"Security Considerations":[[6,"security-considerations"]],"Serial Interface":[[6,"serial-interface"]],"Serial Lines & Devices":[[4,"serial-lines-devices"]],"Serving Pages Over Nomad Network":[[3,"serving-pages-over-nomad-network"]],"Sideband":[[10,"sideband"]],"Sovereignty Through Infrastructure":[[15,"sovereignty-through-infrastructure"]],"Standalone Reticulum Installation":[[2,"standalone-reticulum-installation"]],"State Management":[[3,"state-management"]],"Store & Forward":[[15,"store-forward"]],"Support Reticulum":[[11,null]],"Supported Boards and Devices":[[4,"supported-boards-and-devices"]],"Systemwide Service":[[13,"systemwide-service"]],"TCP Client Interface":[[6,"tcp-client-interface"]],"TCP Server Interface":[[6,"tcp-server-interface"]],"Table Of Contents":[[5,"table-of-contents"]],"The Ability To Disconnect":[[15,"the-ability-to-disconnect"]],"The Announce Mechanism in Detail":[[12,"the-announce-mechanism-in-detail"]],"The Bandwidth Fallacy":[[15,"the-bandwidth-fallacy"]],"The Harm Principle":[[15,"the-harm-principle"]],"The Illusion Of The Center":[[15,"the-illusion-of-the-center"]],"The Interface Is The Medium":[[15,"the-interface-is-the-medium"]],"The Release Workflow":[[3,"the-release-workflow"]],"The Work Is Finished":[[15,"the-work-is-finished"]],"The rncp Utility":[[13,"the-rncp-utility"]],"The rngit Utility":[[3,"the-rngit-utility"],[13,"the-rngit-utility"]],"The rnid Utility":[[13,"the-rnid-utility"]],"The rnodeconf Utility":[[13,"the-rnodeconf-utility"]],"The rnpath Utility":[[13,"the-rnpath-utility"]],"The rnprobe Utility":[[13,"the-rnprobe-utility"]],"The rnsd Utility":[[13,"the-rnsd-utility"]],"The rnsh Utility":[[13,"the-rnsh-utility"]],"The rnstatus Utility":[[13,"the-rnstatus-utility"]],"The rnx Utility":[[13,"the-rnx-utility"]],"Transport Nodes and Instances":[[8,"transport-nodes-and-instances"]],"Trustless Networking":[[8,"trustless-networking"]],"Try Using a Reticulum-based Program":[[2,"try-using-a-reticulum-based-program"]],"UDP Interface":[[6,"udp-interface"]],"Ubuntu Lunar":[[2,"ubuntu-lunar"]],"Understanding Reticulum":[[12,null]],"Unsigned RNode v2.x":[[4,"unsigned-rnode-v2-x"]],"Usage with Reticulum":[[4,"usage-with-reticulum"]],"Userspace Service":[[13,"userspace-service"]],"Using Reticulum on Your System":[[13,null]],"Using the Included Utilities":[[2,"using-the-included-utilities"]],"Verified Releases":[[3,"verified-releases"]],"What does Reticulum Offer?":[[14,"what-does-reticulum-offer"]],"What is Reticulum?":[[14,null]],"Where can Reticulum be Used?":[[14,"where-can-reticulum-be-used"]],"WiFi-based Hardware":[[4,"wifi-based-hardware"]],"Windows":[[2,"windows"]],"Wire Format":[[12,"wire-format"]],"Work Document Permissions":[[3,"work-document-permissions"]],"Work Documents":[[3,"work-documents"]],"Working With Work Documents":[[3,"working-with-work-documents"]],"Zen of Reticulum":[[15,null]],"Zero-Trust Architectures":[[15,"zero-trust-architectures"]]},"docnames":["examples","forhumans","gettingstartedfast","git","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","git.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":{},"objects":{"RNS":[[9,0,1,"","Buffer"],[9,0,1,"","Destination"],[9,0,1,"","Identity"],[9,0,1,"","Link"],[9,0,1,"","MessageBase"],[9,0,1,"","Packet"],[9,0,1,"","PacketReceipt"],[9,0,1,"","RawChannelReader"],[9,0,1,"","RawChannelWriter"],[9,0,1,"","RequestReceipt"],[9,0,1,"","Resource"],[9,0,1,"","Reticulum"],[9,0,1,"","Transport"]],"RNS.Buffer":[[9,1,1,"","create_bidirectional_buffer"],[9,1,1,"","create_reader"],[9,1,1,"","create_writer"]],"RNS.Channel":[[9,0,1,"","Channel"]],"RNS.Channel.Channel":[[9,1,1,"","add_message_handler"],[9,1,1,"","is_ready_to_send"],[9,2,1,"","mdu"],[9,1,1,"","register_message_type"],[9,1,1,"","remove_message_handler"],[9,1,1,"","send"]],"RNS.Destination":[[9,3,1,"","RATCHET_COUNT"],[9,3,1,"","RATCHET_INTERVAL"],[9,1,1,"","accepts_links"],[9,1,1,"","announce"],[9,1,1,"","app_and_aspects_from_name"],[9,1,1,"","clear_default_app_data"],[9,1,1,"","create_keys"],[9,1,1,"","decrypt"],[9,1,1,"","deregister_request_handler"],[9,1,1,"","enable_ratchets"],[9,1,1,"","encrypt"],[9,1,1,"","enforce_ratchets"],[9,1,1,"","expand_name"],[9,1,1,"","get_private_key"],[9,1,1,"","hash"],[9,1,1,"","hash_from_name_and_identity"],[9,1,1,"","load_private_key"],[9,1,1,"","register_request_handler"],[9,1,1,"","set_default_app_data"],[9,1,1,"","set_link_established_callback"],[9,1,1,"","set_packet_callback"],[9,1,1,"","set_proof_requested_callback"],[9,1,1,"","set_proof_strategy"],[9,1,1,"","set_ratchet_interval"],[9,1,1,"","set_retained_ratchets"],[9,1,1,"","sign"]],"RNS.Identity":[[9,3,1,"","CURVE"],[9,3,1,"","KEYSIZE"],[9,3,1,"","RATCHETSIZE"],[9,3,1,"","RATCHET_EXPIRY"],[9,3,1,"","TRUNCATED_HASHLENGTH"],[9,1,1,"","current_ratchet_id"],[9,1,1,"","decrypt"],[9,1,1,"","encrypt"],[9,1,1,"","from_bytes"],[9,1,1,"","from_file"],[9,1,1,"","full_hash"],[9,1,1,"","get_private_key"],[9,1,1,"","get_public_key"],[9,1,1,"","get_random_hash"],[9,1,1,"","load_private_key"],[9,1,1,"","load_public_key"],[9,1,1,"","pub_to_file"],[9,1,1,"","recall"],[9,1,1,"","recall_app_data"],[9,1,1,"","sign"],[9,1,1,"","to_file"],[9,1,1,"","truncated_hash"],[9,1,1,"","validate"]],"RNS.Link":[[9,3,1,"","CURVE"],[9,3,1,"","ESTABLISHMENT_TIMEOUT_PER_HOP"],[9,3,1,"","KEEPALIVE"],[9,3,1,"","KEEPALIVE_TIMEOUT_FACTOR"],[9,3,1,"","STALE_GRACE"],[9,3,1,"","STALE_TIME"],[9,1,1,"","get_age"],[9,1,1,"","get_channel"],[9,1,1,"","get_establishment_rate"],[9,1,1,"","get_expected_rate"],[9,1,1,"","get_mdu"],[9,1,1,"","get_mode"],[9,1,1,"","get_mtu"],[9,1,1,"","get_q"],[9,1,1,"","get_remote_identity"],[9,1,1,"","get_rssi"],[9,1,1,"","get_snr"],[9,1,1,"","identify"],[9,1,1,"","inactive_for"],[9,1,1,"","no_data_for"],[9,1,1,"","no_inbound_for"],[9,1,1,"","no_outbound_for"],[9,1,1,"","request"],[9,1,1,"","set_link_closed_callback"],[9,1,1,"","set_packet_callback"],[9,1,1,"","set_remote_identified_callback"],[9,1,1,"","set_resource_callback"],[9,1,1,"","set_resource_concluded_callback"],[9,1,1,"","set_resource_started_callback"],[9,1,1,"","set_resource_strategy"],[9,1,1,"","teardown"],[9,1,1,"","track_phy_stats"]],"RNS.MessageBase":[[9,3,1,"","MSGTYPE"],[9,1,1,"","pack"],[9,1,1,"","unpack"]],"RNS.Packet":[[9,3,1,"","ENCRYPTED_MDU"],[9,3,1,"","PLAIN_MDU"],[9,1,1,"","get_q"],[9,1,1,"","get_rssi"],[9,1,1,"","get_snr"],[9,1,1,"","resend"],[9,1,1,"","send"]],"RNS.PacketReceipt":[[9,1,1,"","get_rtt"],[9,1,1,"","get_status"],[9,1,1,"","set_delivery_callback"],[9,1,1,"","set_timeout"],[9,1,1,"","set_timeout_callback"]],"RNS.RawChannelReader":[[9,1,1,"","__init__"],[9,1,1,"","add_ready_callback"],[9,1,1,"","remove_ready_callback"]],"RNS.RawChannelWriter":[[9,1,1,"","__init__"]],"RNS.RequestReceipt":[[9,1,1,"","concluded"],[9,1,1,"","get_progress"],[9,1,1,"","get_request_id"],[9,1,1,"","get_response"],[9,1,1,"","get_response_time"],[9,1,1,"","get_status"]],"RNS.Resource":[[9,1,1,"","advertise"],[9,1,1,"","cancel"],[9,1,1,"","get_data_size"],[9,1,1,"","get_hash"],[9,1,1,"","get_parts"],[9,1,1,"","get_progress"],[9,1,1,"","get_segments"],[9,1,1,"","get_transfer_size"],[9,1,1,"","is_compressed"]],"RNS.Reticulum":[[9,3,1,"","ANNOUNCE_CAP"],[9,3,1,"","LINK_MTU_DISCOVERY"],[9,3,1,"","MINIMUM_BITRATE"],[9,3,1,"","MTU"],[9,1,1,"","blackhole_sources"],[9,1,1,"","discovered_interfaces"],[9,1,1,"","get_instance"],[9,1,1,"","interface_discovery_sources"],[9,1,1,"","link_mtu_discovery"],[9,1,1,"","publish_blackhole_enabled"],[9,1,1,"","remote_management_enabled"],[9,1,1,"","required_discovery_value"],[9,1,1,"","should_use_implicit_proof"],[9,1,1,"","transport_enabled"]],"RNS.Transport":[[9,3,1,"","PATHFINDER_M"],[9,1,1,"","await_path"],[9,1,1,"","deregister_announce_handler"],[9,1,1,"","has_path"],[9,1,1,"","hops_to"],[9,1,1,"","next_hop"],[9,1,1,"","next_hop_interface"],[9,1,1,"","register_announce_handler"],[9,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,3,6,8,12,13,14,15],"0":[0,2,3,6,9,12,13,14],"00":[12,13],"00000000":12,"00000100":12,"00000111":12,"01":[3,12],"01010000":12,"02":2,"03":3,"04":3,"05":[0,3],"0536":13,"06915":6,"08":[0,13],"09":3,"0d7334d411d00120cbad24edf355fdd2":3,"0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1":13,"0x0101":0,"0x20":0,"0x7d":0,"0x7e":0,"0x91c421ddfb8a30a49a71d63447ddb54cebe3465":11,"0xf000":[0,9],"1":[0,2,3,6,9,12,13,15],"10":[3,6,12,13],"100":[0,6,12],"1000":0,"10000000":12,"1024":0,"109":15,"11":[3,12],"115":12,"115200":[0,6,13],"1178a8f1fad405bf2ad153bf5036bdfd":13,"118":6,"12":[2,3,6,13],"1200":12,"125":6,"125000":6,"127":6,"128":[8,9,12],"13":13,"13425ec15b621c1d928589718000d814":[8,12],"14":[3,6],"15":[3,6],"150":[6,13],"150m":6,"153cb870b4665b8c1c348896292b0bad":3,"15kb":15,"15m":13,"16":[3,6,8,12,13,15],"1625":6,"1625000":6,"167":12,"168":15,"17":13,"1716230400":3,"1726dbad538775b5bf9b0ea25a4079c8":13,"18":[3,13],"1800":9,"187":13,"192":15,"1b03013c25f1c2ca068a4f080b844a10":13,"1h":13,"2":[0,2,3,6,9,12,13],"20":[3,6,12,13],"200":[6,13],"201":6,"2016":[7,14],"2023":[2,13],"2024":3,"2025":3,"2026":[3,7,15],"21":2,"21a8daa6d9c3d3b8aab6e94b6bcb0e33":3,"22":[3,6],"2225fdeecaf6e2db4556c3c2d7637294":13,"23":[3,13],"2316":13,"23h":13,"24":[3,6,13],"2400000000":6,"25":[0,5,14],"250":15,"255":[6,13],"25519":9,"256":[3,6,8,9,12,13,14],"2592000":9,"27":13,"29":6,"297":[12,14],"29716":6,"2b489d06eaf7c543808c76a5332a447d":13,"2b9ec651326d9bc274119054c70fb75":13,"2d03725b327348980d570f739a3a5708":13,"2d882c5586e548d79b5af27bca1776dc":13,"2f":0,"2owjajquafianpecac":2,"3":[0,2,3,6,12,13,14],"30":[6,9,13],"30602def3b3506a28ed33db6f60cc6c9":13,"32":[2,3,9,12],"3278":6,"327c1b2f87c9353e01769b01090b18f2":15,"32m":13,"33":6,"34":[6,15],"360":[3,6,9],"3600":[0,2,6],"37":3,"37428":13,"37429":13,"38":[3,13],"383":9,"3865":13,"399ea050ce0eed1816c300bcb0840938":13,"3a4f8b9c1d2e3f4g5h6i7j8k9l0m1n2o":13,"3b87":6,"4":[3,9,12,13],"40m":13,"42":3,"4242":[2,6],"4251":6,"42671":6,"430":12,"4343":6,"44":14,"44318":6,"45":[0,3,12],"46":13,"464":9,"465":12,"469":13,"48555":6,"49":13,"49555":6,"4965":13,"4e":6,"4faf1b2e0a077e6a9d92fa051f256038":12,"4g":15,"4ghz":6,"5":[0,3,6,9,12,13,14,15],"500":[6,9,12,14,15],"5001":6,"50824b711717f97c2fb1166ceddd5ea9":3,"51":[6,12],"512":[6,9,12,14],"52":13,"521c87a83afb8f29e4455e77930b973b":13,"5245a8efe1788c6a1cd36144a270e13b":13,"53":3,"55":6,"56":13,"564":0,"56m":13,"5757":6,"5858":6,"59":13,"5caf":6,"5d78":6,"5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq":6,"6":[2,3,6,9,13],"60":[0,6],"600":6,"63":13,"64":[2,12,13],"68a4aa91ac350c4087564e8a69f84e86":13,"7":[2,6,12,13],"71":15,"71e5":6,"72":6,"720":[6,9],"7200":6,"73":[6,13],"73cbd378bb0286ed11a707c13447bb1":13,"74":13,"74195":6,"781":13,"7822":13,"7a55144adf826958a9529a3bcf08b149":13,"8":[0,6,13],"80":[11,13],"8001":6,"809":13,"83":[12,13],"83b7328926fed0d2e6a10a7671f9e237":15,"84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w":11,"86":13,"865":6,"865600000":6,"867":6,"867200000":6,"868":12,"88":6,"89":6,"8a37cdd16938ce79861561adbd59023a":3,"8dd57a738226809646089335a6b03695":13,"8f3a21c9d84e927b":3,"9":[2,3,13],"90":3,"900":[12,13],"9037":13,"921600":13,"941bed5e228775e5a8079fc38b1ccf3f":13,"959e10e5efc1bd9d97a4083babe51dea":3,"96":12,"9600":0,"9710b86":3,"9710b86ba12c42d1d8f30f74fe509286":3,"9710b86ba12c4f2":3,"984b74a3f768bef236af4371e6f248cd":13,"99":12,"99714":6,"9fb6d773498fb3feda407ed8ef2c3229":13,"9h":13,"A":[0,2,3,5,6,7,8,9,10,12,13],"AND":7,"AS":7,"And":[0,15],"As":[2,3,4,6,9,10,11,12,13,14],"At":[2,12],"BE":7,"BUT":7,"Be":[3,9,13,15],"But":[11,12,15],"By":[0,2,3,6,9,12,13,15],"FOR":7,"For":[2,3,5,6,8,9,12,13,14],"IN":[0,7,9],"If":[0,2,3,4,6,8,9,10,11,12,13,14,15],"In":[0,2,3,4,5,6,8,9,10,12,13,14],"It":[0,2,3,4,6,8,9,10,12,13,14,15],"NO":7,"NOT":7,"No":[0,2,6,8,12,13,14,15],"Not":5,"OF":7,"OR":7,"Of":[8,12],"On":[0,2,3,6,8,13,15],"One":[2,3,4,6,9,12,15],"Or":[5,6,13,14],"THE":7,"TO":7,"That":[3,10,12,15],"The":[0,2,4,5,6,7,8,9,10,11,14],"Then":[0,2],"There":[2,8,12,13,15],"These":[2,3,6,8,9,10,12,13],"To":[0,2,3,4,5,6,8,12,13,14],"WITH":7,"Will":9,"With":[5,6,8,10,12,13,15],"_":12,"__":12,"______":12,"_______":12,"________":12,"________________":12,"__future__":0,"__init__":[0,9],"__main__":0,"__name__":0,"__str__":0,"_no_us":9,"a1b2c3d4e5f686ba12c42d1ba12ef1aa":3,"a4d":6,"a79f":6,"aarch64":2,"ab":0,"abil":[2,3,4,5,7,13,14],"abl":[0,2,3,6,9,12,13],"abolish":15,"abort":[0,3,6],"about":[0,2,3,4,6,8,9,12,13,15],"abov":[2,3,4,6,7,12,13],"absolut":[6,11,14,15],"abstract":[8,9,12,15],"abstractmethod":9,"abund":[4,15],"abus":13,"accept":[3,6,9,11,12,13,15],"accept_al":[0,9],"accept_app":9,"accept_non":9,"accepts_link":9,"access":[2,5,6,8,9,13,15],"access_point":[6,8],"accid":[10,15],"accommod":[9,12],"accomod":15,"accord":[0,2,3,8,12],"accordingli":[0,6],"account":[8,15],"achiev":[2,6,8,9,12,14],"acknowledg":[8,14],"across":[0,4,8,9,12,13,15],"act":[2,6,9,12,13,15],"action":[0,7,13],"activ":[0,2,3,6,9,12,13],"actor":[12,13,15],"actual":[0,2,3,6,8,12,13,15],"ad":[0,3,4,5,6,8,9,10,12,13,14,15],"adapt":[2,4,15],"add":[0,2,3,6,8,9,13],"add_argu":0,"add_message_handl":[0,9],"add_ready_callback":9,"addict":15,"addit":[3,4,6,8,9,10,12,13,14],"addition":[2,3,4,6,12],"addr":13,"address":[0,2,5,6,9,12,13,14],"adher":[6,9],"adjust":[2,3,9,13,15],"adm":3,"admin":[3,6],"administ":3,"administr":[3,8,10,12,13,15],"adopt":12,"adress":[9,12],"advanc":[10,12],"advantag":9,"advers":14,"adversari":[2,8,11,15],"advertis":[0,6,9],"advic":11,"advis":[6,12],"ae":[9,12,14],"af73":6,"affect":[2,6,15],"affili":10,"afford":8,"after":[0,2,3,6,8,9,12,13],"afterthought":15,"again":[6,12,13],"against":[2,3,6,12,15],"agenc":[5,12],"agent":[12,15],"agnost":[8,12],"agnostic":[12,15],"ago":13,"agreement":15,"ahead":8,"ai":15,"aim":[2,5,12],"air":[2,4],"airmax":4,"airtim":[6,8,15],"airtime_limit_long":6,"airtime_limit_short":6,"akin":12,"algorithm":[7,8,15],"alia":3,"alias":5,"aliased_nam":3,"alic":[3,12],"alien":15,"align":[2,13,15],"aliv":[9,12],"all":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15],"allevi":4,"alloc":[6,8,9,12,13],"allow":[0,2,3,4,6,8,9,10,12,13,14,15],"allow_al":[0,9],"allow_list":9,"allow_non":9,"allowed_hash":13,"allowed_ident":13,"allowed_list":9,"almost":[4,6,12,13,15],"alon":6,"along":[3,6,9,12,13],"alongsid":[3,8],"alreadi":[0,2,3,4,8,9,10,12,13,15],"also":[0,2,3,4,5,6,8,9,10,12,13,14,15],"alter":[2,9,12],"altern":[0,2,3,6,13],"although":[2,12,14],"alwai":[2,3,6,8,9,12,13,15],"am":15,"amateur":[6,14],"among":15,"amongst":7,"amount":[0,6,8,9,12,14,15],"amsterdam":[6,13],"an":[0,2,3,4,6,7,8,9,10,12,13,14,15],"analog":[10,15],"analysi":3,"analyt":11,"anchor":5,"android":[5,6,10,13],"ani":[0,2,3,4,6,7,8,9,10,11,12,13,14],"annonuc":6,"annot":0,"annouce_cap":6,"announc":[2,3,5,8,9,10,13],"announce_cap":[6,9],"announce_handl":0,"announce_interv":[3,6],"announce_packet_hash":9,"announce_rate_grac":[2,6],"announce_rate_penalti":[2,6],"announce_rate_target":[2,6],"announced_ident":[0,9],"announceloop":0,"announcesampl":0,"anonym":[2,8,9,12,14],"anoth":[3,8,9,12,13,15],"answer":[12,13,15],"antenna":[4,15],"anticip":3,"anxieti":15,"anymor":[2,15],"anyon":[0,2,3,4,6,8,9,12,13,15],"anyth":[3,4,6,10,12,13,14,15],"anywher":[0,6,15],"ap":6,"api":[2,3,5,12,14,15],"apk":2,"app":[0,2,9,12,15],"app_and_aspects_from_nam":9,"app_data":[0,9],"app_nam":[0,9],"app_timeout":0,"appear":15,"append":[0,12,13],"appli":[3,6,9,12,15],"applic":[0,6,8,9,10,12,13,14,15],"appreci":3,"approach":[2,4,8,12,13],"appropri":[3,6,8,15],"approv":[8,12,15],"approxim":[6,13],"april":2,"apt":2,"ar":[0,2,3,4,6,8,9,10,11,12,13,14,15],"arbit":15,"arbitrari":[9,12,13,14],"arch":[2,15],"architect":[11,15],"architectur":[2,5,10],"archiv":10,"area":[2,4,6,8,12,14],"arg":[0,13],"argon":0,"argpars":0,"argument":[0,3,9,13],"argumentpars":0,"aris":7,"arm64":5,"armi":15,"armor":15,"around":[2,6,12,15],"arrai":2,"arriv":[0,12,15],"art":15,"artifact":3,"artifacts_dir":3,"artifici":7,"arx":13,"ask":[0,2,4,9,10,15],"aspect":[0,2,4,6,8,9,12,13],"aspect_filt":[0,9],"assert":15,"assign":[0,8,12,13,15],"assist":10,"associ":[3,7,9,12,13],"assum":[6,8,12,15],"assumpt":[8,11,15],"assuredli":15,"asymmetr":[12,13,14],"asynchron":[8,15],"attach":[10,13],"attached_interfac":9,"attack":2,"attain":2,"attempt":[0,2,3,4,9,13],"attent":[11,15],"attest":3,"attribut":9,"atx":13,"auth":13,"authent":[3,6,8,9,10,12,13,14],"author":[3,7,12,13,15],"authoris":13,"authorit":[12,14],"auto":[2,3,4,5,9,12,13],"auto_compress":9,"autoconfigur":14,"autoconnect_discovered_interfac":[6,13],"autodiscov":6,"autoinstal":[4,13],"autointerfac":[2,4,6,13],"autom":[2,3,4,5,10,11,12],"automat":[0,2,5,6,8,9,10,12,13,14,15],"autonom":[8,12,15],"autonomi":[14,15],"avail":[0,2,3,4,5,6,8,9,10,12,13,14,15],"averag":12,"avoid":[4,12,13],"awai":[0,6,12,13,15],"await_path":9,"awar":[2,3,6,12],"ax":[5,14],"ax25kissinterfac":6,"b":[0,3,13],"b32":6,"back":[0,3,6,12,14,15],"backbon":[4,5,8,13,15],"backboneinterfac":[2,6,13],"backend":[6,12],"background":[2,6,13],"backhaul":[4,8],"backup":13,"balanc":6,"band":[4,12,15],"bandwidth":[2,5,6,8,9,10,12,13,14],"bar":15,"bare":[0,3,6,15],"barrier":[6,12,15],"base":[3,5,6,8,9,10,12,13,14,15],"base32":[6,13],"base64":13,"bash":[6,13],"basi":[6,9,12,13,14],"basic":[0,2,5,6,8,9,13],"batch":3,"batteri":15,"baud":[6,13],"baud_flash":13,"baudrat":0,"bc1pgqgu8h8xvj4jtafslq396v7ju7hkgymyrzyqft4llfslz5vp99psqfk3a6":11,"bc7291552be7a58f361522990465165c":[13,14],"beacon":6,"beast":15,"beat":15,"beauti":10,"becaus":[3,8,12,15],"becki":0,"becom":[0,2,3,6,8,12,15],"been":[0,2,3,4,6,8,9,10,11,12,13,14,15],"befor":[0,2,3,6,8,9,11,12,13,15],"beg":15,"begin":[0,4,9,15],"begun":9,"behalf":[6,8],"behav":[4,10],"behavior":15,"behaviour":[2,6,13],"behind":[2,6,11,12,15],"being":[2,3,6,9,12,15],"beings":[7,12],"belief":12,"believ":15,"belong":[8,12,13,15],"below":[4,6,13],"bend":15,"benefici":[6,13],"berlin":15,"best":[2,8,12,15],"better":[2,6,8,11,12,15],"between":[0,6,8,9,10,12,13,15],"beyond":3,"bi":[9,12],"bidirect":12,"big":15,"bill":15,"billion":[8,12],"billionair":15,"bin":[2,6,13],"binari":[0,2,6,8,9,12,13,15],"bind":6,"bit":[0,2,3,6,8,9,10,12,13,14,15],"bitcoin":11,"bitrat":[0,6,9],"blackhol":[2,5,8,9,12],"blackhole_sourc":[9,13],"blackholed_ident":13,"blackholeupdat":13,"ble":6,"blindli":[13,15],"blob":[0,3,12],"block":[2,3,6,8,9,10,12,13,15],"blockchain":15,"blocklist":13,"blood":15,"blueprint":15,"bluetooth":13,"board":[2,5,6,10,12,14],"boat":15,"bob":3,"bobs_nod":3,"bogu":6,"boil":4,"bond":15,"book":15,"bookworm":5,"bool":9,"boot":[2,13],"bootstrap":[5,6,13],"bootstrap_onli":[2,6],"borrow":15,"bot":10,"both":[0,2,3,4,6,8,9,10,12,13,14],"bounc":[2,15],"bound":[8,15],"boundari":[6,8,12],"box":4,"branch":[3,13],"breadcrumb":3,"break":[2,9,12,15],"breath":[2,15],"breviti":13,"bridg":[4,6],"briefli":[4,12],"bring":[6,13],"brittl":[2,15],"broad":[2,4],"broadcast":[2,5,6,8,9,12,13,15],"broadcast_destin":0,"broadcastloop":0,"broader":[2,12],"broken":[2,15],"brought":[6,13],"brows":[3,10,15],"browser":[3,10,15],"buffer":[5,6,9,14],"bufferedread":9,"bufferedrwpair":9,"bufferedwrit":9,"bufferexampl":0,"bug":[3,10,11],"bui":15,"build":[0,3,4,5,6,10,12,14,15],"builder":15,"built":[2,6,8,10,12,13,14,15],"bulletin":10,"bundl":0,"bureaucraci":15,"bureaucrat":[14,15],"burst":5,"button":15,"bw":13,"bypass":[11,15],"byte":[0,5,8,9,12,13,14],"bytes":0,"c":[0,3,7,13],"c50cc4e4f7838b6c31f60ab9032cbc62":13,"c89b4da064bf66d280f0e4d8abfd9806":13,"cabl":[6,15],"cach":[6,8,13],"cafe":15,"cage":15,"calcul":[8,9,12,13],"call":[0,8,9,10,12,14,15],"callabl":[0,9],"callback":[0,9],"callsign":6,"came":3,"can":[0,2,3,4,5,6,8,9,10,11,12,13,15],"cancel":[3,9],"candid":8,"cannot":[0,2,3,6,8,14,15],"cap":6,"capabl":[0,2,6,8,12],"capac":[2,4,8,9,12],"capit":15,"captur":15,"car":8,"carambola":0,"card":15,"care":[2,3,8,9,13,14,15],"carefulli":2,"cargo_build_target":2,"carri":[6,8,9,12,13,14,15],"carrier":[5,8,14],"case":[0,2,3,4,6,8,12,13],"castl":15,"cat":13,"categori":4,"caus":[2,6],"caution":6,"cb":[9,12],"cbc":[12,14],"cdma":6,"ceas":15,"cell":8,"cellular":15,"cement":15,"censor":[12,13,15],"censorship":[12,14],"center":5,"central":[2,4,6,8,10,12,13,15],"centralis":12,"ceo":15,"certain":[0,6,8,11,12,13,15],"certif":15,"chain":[3,6,15],"challeng":[2,10,12,15],"chanc":4,"chang":[0,2,3,6,9,12,13,14,15],"channel":[2,3,5,6,8,9,11,12,14,15],"channelarg":0,"channelexampl":0,"chaotic":15,"chapter":[2,4,6,8,9,10,12,13,14],"charact":[0,3,6,13],"characterist":[6,8,12,15],"charg":7,"chart":3,"charter":12,"chase":15,"chat":5,"cheap":[4,6,12],"cheapli":2,"check":[0,2,3,9,12,13,15],"checksum":[3,9,14],"chmod":3,"choic":[2,8,15],"choke":15,"choos":[0,2,6,10,12,15],"chose":12,"chosen":12,"chunk":0,"cific":6,"ciphertext":9,"ciphertext_token":9,"circl":15,"circumst":[11,12,15],"citi":15,"cl":0,"claim":[7,12],"clariti":15,"class":[0,8,9,14],"clear":[0,6,9,13,15],"clear_default_app_data":9,"clear_screen":0,"clearli":15,"click":3,"client":[0,3,4,5,9,13,15],"client_buffer_readi":0,"client_config":3,"client_connect":0,"client_disconnect":0,"client_ident":0,"client_loop":0,"client_message_receiv":0,"client_packet_receiv":0,"client_request":0,"climat":15,"clone":[3,12],"close":[0,8,9,13],"closed_callback":9,"closer":[10,12],"closest":12,"cloth":15,"cloud":[5,6,10],"cluster":12,"co":[4,6,14],"code":[2,3,4,5,6,8,10,11,13,14,15],"codingr":6,"coexist":8,"coffe":15,"coher":15,"collabor":[3,12,13],"collaps":[2,15],"collect":[2,11],"collis":8,"colon":15,"color":3,"com":[0,3,11,15],"combin":[2,3,5,10,12,13,15],"combinatori":15,"come":[2,6,8,12,15],"comma":[6,13],"command":[0,2,5,6,10,13],"commend":15,"comment":[3,6,13],"commerci":15,"commit":[2,3,10],"committe":15,"common":[0,2,4,5,8,12,13,14,15],"commonli":[3,4,6],"commun":[0,2,3,5,6,8,9,10,11,12,13,14,15],"communica":6,"compani":15,"compar":[8,15],"compass":15,"compat":[0,2,3,4,6,9,10,12,13,14],"compet":15,"compil":2,"complain":15,"complet":[0,2,3,4,6,8,9,10,12,13,14],"complex":[2,6,11,12,15],"compli":8,"compon":[4,11,12,15],"compos":[3,12],"comprehens":[10,11],"compress":[0,9,12,13,14],"compromis":[12,15],"comput":[2,6,12,14,15],"computation":[6,13],"concaten":[9,13],"conceiv":[2,4],"concept":[5,12,13,15],"conceptu":5,"concern":15,"concert":12,"conclud":[0,9],"concret":15,"concurr":[4,12,13],"condit":[2,7,12,14,15],"conduit":15,"conf":[2,10],"config":[0,2,3,6,8,13,15],"configarg":0,"configdir":9,"configobj":3,"configpath":0,"configur":[0,2,4,5,8,9,12,14],"configuraion":4,"configure_devic":0,"confirm":[3,8,12,14,15],"conflict":[2,8],"confront":15,"confus":[4,12],"congest":12,"conglomer":15,"conjunct":6,"connect":[0,3,4,5,7,9,11,12,13,14,15],"conscienc":15,"conscript":15,"consequ":[8,12],"conserv":6,"consid":[0,2,6,9,10,12,13,14,15],"consider":[5,12],"consist":[3,12,13],"consol":13,"constant":[9,15],"constantli":[12,15],"constitut":[2,12],"constrain":[8,9],"constraint":15,"construct":[3,12,14,15],"constructor":0,"consum":[3,8,9,15],"consumpt":[8,15],"contact":[8,10,12,15],"contain":[0,3,6,8,9,12,13],"contempl":15,"contend":12,"content":[0,2,3,8,10,13],"context":[2,12,13,15],"contin":[0,2,15],"continu":[3,6,9,11,13,14,15],"contract":7,"contrari":15,"contribut":[5,7,8,11],"control":[0,2,3,4,5,8,9,10,12,13,14,15],"convei":[0,15],"conveni":[0,3,13,15],"convent":[0,8],"converg":[2,8,12,15],"convers":[3,10,12,15],"convert":3,"cook":2,"coordin":[6,8,9,12,14,15],"copi":[3,7,13],"copyright":7,"core":[8,12,13,14,15],"corner":15,"corpor":15,"correct":[0,3,6,8,12],"correctli":[0,8],"correspond":[8,12,15],"corrupt":3,"cost":[4,5,6,12,14],"could":[0,2,6,8,9,12,13,14,15],"count":[3,10,12,15],"counter":0,"cours":[2,3,6,8,12,15],"coven":15,"cover":[2,3,4,8,12,14],"coverag":8,"cpu":[0,6,8,12],"cpuinfo":13,"cr":13,"craft":15,"craftsman":15,"crash":15,"creat":[0,5,6,8,9,10,13,14,15],"create_bidirectional_buff":[0,9],"create_kei":9,"create_read":9,"create_receipt":[0,9],"create_writ":9,"creation":[5,7,8,10,12,13,14],"creativ":15,"creator":[5,12,15],"credenti":[6,12],"critic":[8,12,13],"cross":[6,10],"crowd":15,"crucial":8,"cruft":15,"cryptograph":[2,3,5,6,8,13,14,15],"cryptographi":[2,12,14],"crystal":15,"ctrl":0,"cull":9,"culmin":15,"curl":6,"current":[0,2,3,5,6,9,10,13,15],"current_download":0,"current_filenam":0,"current_ratchet_id":9,"curv":[8,9,12,14],"curve25519":[8,9,12,14],"custodian":15,"custom":[4,5,9,10,12,14],"custom_network_nam":6,"customis":6,"cut":15,"cynic":15,"d":[3,13],"d09285e660cfe27cee6d9a0beb58b7e0":3,"d56a4fa02c0a77b3575935aedd90bdb2":13,"daemon":[0,2,6,9,10,13],"dai":[3,9,10,15],"daili":3,"damag":[7,15],"danc":15,"danger":15,"dark":15,"data":[0,2,3,4,5,6,8,9,12,14,15],"data_buff":0,"data_port":6,"databas":[10,13,15],"databit":[0,6,13],"datacent":2,"datar":6,"dataset":[7,15],"date":[0,2,3,10,13],"datetim":0,"db":[0,13],"dbm":[0,6,13],"deal":[6,7],"death":5,"debian":[5,12,13],"debug":[2,13],"decad":[4,11,15],"decentr":[2,5,6,13],"decentralis":14,"decid":[6,8,9,12,15],"decim":6,"decis":[6,8,12,15],"declar":12,"decod":[0,6,13],"decreas":[3,13],"decrypt":[6,8,9,12,13],"dedic":[3,6,12,14,15],"deep":[2,15],"deepli":15,"def":[0,3],"default":[0,2,3,4,6,8,9,10,12,13],"default_ar_grac":6,"default_ar_penalti":6,"default_ar_target":6,"default_ifac_s":0,"defin":[0,3,6,9,12,13,14,15],"definit":[0,2,3,12,13,15],"defunct":13,"degrad":8,"degre":6,"delai":[6,10,12,13,15],"deleg":[3,12],"delet":[3,15],"delimit":0,"deliv":[0,2,8,9,10,15],"deliveri":[0,8,9,10,14],"demand":[3,9,15],"demonstr":[0,2,6,15],"deni":[3,15],"depend":[0,3,4,5,6,8,9,12,13,15],"deploi":[12,15],"deploy":3,"depriorit":15,"depth":15,"deregist":9,"deregister_announce_handl":9,"deregister_request_handl":9,"deriv":[2,8,9,12,14],"describ":[3,4,6,9,12],"descript":[0,3,13],"descriptor":0,"deseri":0,"deserializ":0,"design":[2,3,4,5,6,8,10,11,12,13,14],"desir":[0,4,6,12],"desk":15,"desktop":[6,10],"dest_len":0,"destin":[0,2,5,9,13,15],"destination_1":0,"destination_2":0,"destination_clos":0,"destination_hash":[0,3,9,13],"destination_hexhash":0,"destroi":15,"destruct":15,"detach":[3,6],"detail":[0,2,3,5,6,9,13,14],"detect":0,"determin":[2,8,9,12,15],"detriment":13,"dev":[0,2,6,13],"devel":2,"develop":[3,4,5,7,9,10,11,12,13,14,15],"devic":[0,2,5,6,8,9,10,12,13,15],"dh":9,"dhcp":[4,6,8,13],"di":15,"dict":0,"dictat":[13,15],"dictatorship":15,"dictionari":13,"did":[0,10,15],"diff":3,"differ":[0,2,3,4,6,8,9,10,12,13,14,15],"differenti":13,"diffi":[8,12],"difficult":[2,4,13],"difficulti":[6,13],"digit":[2,4,12,14,15],"digniti":15,"dinner":15,"dir":0,"dire":4,"direct":[0,2,3,4,8,9,10,12,13],"direction":12,"directli":[2,3,4,6,7,8,9,10,12,13,14,15],"directori":[0,2,3,6,8,13,15],"disabl":[6,12,13],"disappear":[6,13,15],"disassoci":12,"discard":[2,9,12],"disciplin":15,"disconnect":[0,2,5,6],"discov":[2,5,6,8,9,10,12,15],"discover":[2,5,13],"discover_interfac":13,"discovered_interfac":9,"discoveri":[2,3,5,9,12,13],"discovery_bandwidth":6,"discovery_encrypt":6,"discovery_frequ":6,"discovery_modul":6,"discovery_nam":6,"discovery_port":6,"discovery_scop":6,"discovery_stamp_valu":6,"discrimin":8,"discuss":[4,12],"disk":[0,3,9,13],"displai":[0,3,6,8,10,12,13],"disrupt":6,"dissolv":[8,15],"dist":3,"distanc":[4,12,13],"distant":[2,9,12],"distinct":[6,8,12,15],"distinguish":[8,12],"distribut":[0,3,5,7,8,9,10,12,13,14,15],"dive":2,"divid":9,"divmod":0,"dn":[4,6,10,15],"dna":15,"dnf":2,"do":[0,2,3,4,6,7,8,9,12,13,15],"doc_id":3,"document":[2,5,7,9,10,12,13,14,15],"doe":[0,2,3,4,5,6,9,10,12,13,15],"doesn":[6,8,15],"dollar":15,"domain":[2,5,6,12,13,14],"domin":15,"don":[0,2,3,8,9,12,13,15],"donat":5,"done":[0,2,6,12,13,15],"door":15,"dot":[12,13],"doubt":2,"dowload":2,"down":[0,4,6,9,13,15],"download":[0,2,3,6,8,10,13],"download_began":0,"download_conclud":0,"download_finish":0,"download_start":0,"download_tim":0,"downstream":13,"drag":10,"drastic":13,"draw":15,"drawn":15,"drive":11,"driver":[13,14],"droid":2,"drone":15,"drop":[3,6,8,9,10,12,13,15],"dsrdtr":0,"dual":[4,13],"dublin":13,"due":0,"dumb":15,"dump":13,"duplex":[12,14],"durat":13,"dure":[3,13],"dynam":[2,3,6,10,13,15],"dysfunct":11,"e":[0,3,13],"e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790":13,"e702c42ba8":13,"e7536ee90bd4a440e130490b87a25124":13,"each":[0,2,3,6,8,9,10,12,13],"earli":15,"earlier":12,"eas":[6,12],"easi":[2,3,4,6,10,12,13,14],"easier":[2,3,6,8,13,14],"easiest":[2,4,6,12],"easili":[2,3,6,8,12,13,14,15],"eastern":12,"ec_pr_freq":6,"ecdh":[12,14],"echo":5,"echo_destin":0,"echo_request":0,"economi":15,"ecosystem":[2,6,10,12,13,15],"ed25519":[3,12,14],"edit":[2,3,13],"editor":[3,13],"eeprom":13,"effect":[3,6,12,13],"effici":[0,2,6,8,9,10,12,13,14,15],"effort":[4,15],"effortlessli":10,"eg":13,"egress":6,"egress_control":6,"ei":0,"either":[2,3,4,8,9,12,13,15],"elaps":[3,6],"electromagnet":15,"eleg":15,"element":[8,15],"elif":0,"elimin":[8,15],"ellipt":[8,9,12,14],"els":[0,8,10,11,12,14,15],"email":10,"emb":3,"embed":[3,4],"embrac":15,"emerg":[5,10],"emiss":10,"emploi":[4,12],"empow":14,"empti":[0,5,15],"emul":[2,13],"enabl":[0,2,4,5,8,9,10,12,13,14,15],"enable_ratchet":9,"enable_remote_manag":13,"enable_transport":[6,12,13],"encapsul":[6,14],"encod":[0,9,10,13,15],"encount":[2,8],"encourag":[2,15],"encrypt":[0,2,3,5,6,8,9,10,12,13,14],"encrypted_mdu":9,"end":[0,3,6,8,9,10,12,14],"endless":[6,15],"endpoint":[0,8,9,10,12,15],"energi":[2,15],"enforc":[6,9,12,13],"enforce_ratchet":9,"engag":15,"engin":[2,10,11,15],"enhanc":12,"enough":[2,4,6,10,12],"ensur":[0,2,3,6,8,9,10,12,13,14,15],"ensurepath":2,"enter":[0,13],"entir":[0,2,3,6,8,9,10,12,13,14,15],"entiti":[8,12,13,15],"entri":[0,2,12,13,15],"entropi":15,"entrypoint":[5,6,13],"enumer":0,"envelop":[9,15],"environ":[2,3,5,6,8,11,12,13],"environment":12,"environmentlogg":12,"eof":6,"ephemer":[8,9,12,14],"epub":5,"equal":[8,9,12,15],"equip":[6,8,12],"equival":[6,15],"era":15,"erod":15,"erron":11,"error":[0,2,3,6,11,13,15],"esc":0,"esc_mask":0,"escap":[0,13],"esp32":4,"especi":[2,3,4,6,13],"essenti":[2,6,10,12,13,15],"establish":[0,2,6,8,9,10,13,14,15],"established_callback":9,"establishment_timeout_per_hop":9,"etc":[3,13],"eth0":6,"eth1":6,"ether":15,"ethereum":11,"ethernet":[2,5,6,8,10,12,14,15],"ethic":5,"evapor":15,"even":[0,2,3,6,8,9,10,12,13,14,15],"event":[6,7,15],"eventu":9,"ever":12,"everi":[0,2,3,6,8,9,12,13,15],"everydai":2,"everyon":[2,3,10,11,12,15],"everyth":[0,3,8,10,11,12,15],"evict":15,"evolv":[2,8,12],"exact":[4,6,12],"exactli":[9,12,15],"exampl":[2,4,5,8,9,12,13,14],"example_util":0,"exampleannouncehandl":0,"exampleconfig":[2,13],"exampleinterfac":0,"exce":[0,6,9],"except":[0,6,9],"excess":[6,13],"exchang":[8,9,12,14],"exclud":[3,9,12],"execstart":13,"execstartpr":13,"execut":[0,2,3,6,9,13],"exhaust":[4,10,12,13],"exist":[0,2,3,4,5,6,8,10,12,13,14],"exit":[0,3,6,9,13],"expand":[3,8,10,12,14],"expand_nam":9,"expans":15,"expect":[0,3,6,9,11,12,13],"expens":[4,6],"experi":[8,10,12,13,15],"experienc":0,"expir":6,"expiri":[6,9],"explain":[4,9],"explan":[12,13],"explicit":9,"explicitli":[6,8,12,13],"explor":[0,10,12,14,15],"export":[2,13],"expos":[6,9,13],"exposur":6,"express":[3,7],"extend":[0,9],"extens":[3,6,10,13,14],"extern":[0,2,3,6,9,13,14,15],"extra":[2,6,13],"extract":[3,13,15],"extrem":[2,10,12,13,14,15],"f":[0,2,13],"f2d31b2e080e5d4e358d32822ee4a3b7":3,"f4":6,"f53a1c4278e0726bb73fcc623d6ce763":13,"fabric":[5,8],"face":[6,10],"facilit":[10,12],"fact":[2,6,14],"factor":[6,9,13],"fade":15,"fail":[0,2,3,6,9,15],"failed_callback":[0,9],"failur":[2,3,6,9,15],"fake":13,"fallaci":5,"fallback":[3,15],"fallen":15,"fals":[0,6,8,9],"famili":2,"fantasi":15,"far":[2,8,12],"fashion":11,"fast":[5,6,8,9,10,12],"faster":[2,6,12,15],"fastest":[6,12],"fat":15,"favor":2,"favorit":10,"fe80":2,"featur":[2,3,5,6,8,10,11,12,13,14],"feder":[10,12,13,15],"fedora":2,"feed":[2,9,15],"feedback":[0,5],"feel":[10,15],"fernet":12,"fetch":[3,6,13],"few":[2,4,6,8,10,12,13,14,15],"fewer":9,"ff":13,"ffcffb4e255e156e77f79b82c13086a6":3,"fi":11,"fiber":[4,15],"fibr":14,"field":[12,15],"file":[0,2,3,4,6,7,8,9,10,12,13,14],"file_resourc":0,"file_s":0,"filelist":0,"filelist_data":0,"filelist_receiv":0,"filelist_timeout_job":0,"filenam":0,"filesync":5,"filetransf":[5,9],"filter":[0,8,12,13],"final":[0,3,9,12,15],"find":[3,5,6,10,12,13,15],"find_spec":0,"fine":[3,6],"fingerprint":15,"finish":5,"finit":15,"fire":15,"firewal":[2,6,8,15],"firmwar":[2,4,12,13],"firmware_hash":13,"first":[0,2,3,6,8,9,12,13,15],"fit":[0,7,15],"five":[0,15],"fix":[3,5,12,15],"fixed_mtu":6,"flag":[0,2,3,9,12,13],"flash":13,"flasher":2,"flat":15,"flaw":15,"fleet":12,"flesh":15,"flexibl":[2,3,4,6,8,10,13,14],"fli":12,"flicker":15,"flight":9,"flip":15,"float":[0,9],"flood":[6,13],"flow":[0,2,5,6,8,12],"flow_control":6,"fluid":15,"fluiditi":15,"fluidli":15,"flush":0,"focu":13,"focus":[10,12],"folder":[0,3],"follow":[0,2,3,4,6,7,9,11,12,13,14,15],"font":3,"forbid":15,"forc":[0,13,15],"forcibli":[9,13],"foreground":2,"forev":15,"forg":15,"forget":[8,13],"fork":[5,10],"forker":3,"form":[2,5,6,8,9,12,13,15],"format":[0,5,10,13,14],"forth":0,"fortun":15,"forward":[3,5,6,8,9,10,12,13,14],"forward_ip":6,"forward_port":6,"found":[0,2,6,9,12,13,15],"foundat":[8,11,12,14,15],"fragil":15,"frame":[0,6],"framework":10,"free":[2,7,8,10,11,14,15],"freedom":[12,15],"freedv":4,"freeli":12,"freq":13,"frequenc":[2,4,6,12,13],"frequent":[6,8],"friend":[2,15],"friendli":10,"from":[0,2,3,4,5,6,7,8,9,10,11,12,13,14],"from_byt":9,"from_fil":9,"from_identity_hash":9,"fromhex":0,"front":[3,12],"frontend":10,"fruit":0,"ftdi_ft230x_basic_uart_43891ckm":13,"fuel":15,"full":[0,2,3,6,8,9,10,12,13,14],"full_hash":9,"full_nam":[9,13],"fulli":[0,2,3,4,6,10,12,13,14],"funcion":9,"function":[0,2,3,4,5,6,7,8,9,10,11,13,14,15],"fundament":[4,8,12,13,15],"furnish":7,"further":[2,5,6,13,15],"futur":[3,5,8,10,13,15],"fw":13,"g":[0,3,12,13],"ga":0,"gain":[4,9,12,15],"galact":12,"gap":2,"gaslit":15,"gatekeep":[12,15],"gatewai":[0,2,6,8,12,13,15],"gbp":13,"gear":15,"gen_tim":3,"gener":[0,2,3,4,6,8,9,12,13,14,15],"generalis":14,"genuin":13,"geograph":[2,6],"get":[0,3,4,5,6,8,9,10,13,15],"get_ag":9,"get_channel":[0,9],"get_config_obj":0,"get_data_s":9,"get_establishment_r":9,"get_expected_r":9,"get_external_ip":6,"get_hash":9,"get_inst":9,"get_mdu":9,"get_mod":9,"get_mtu":9,"get_packet_rssi":0,"get_packet_snr":0,"get_part":9,"get_private_kei":9,"get_progress":[0,9],"get_public_kei":9,"get_q":9,"get_random_hash":[0,9],"get_remote_ident":[0,9],"get_request_id":9,"get_respons":9,"get_response_tim":9,"get_rssi":9,"get_rtt":[0,9],"get_seg":9,"get_snr":9,"get_statu":9,"get_transfer_s":9,"geti2p":6,"ghost":15,"ghz":12,"gi":0,"giant":15,"gift":15,"gigabit":[8,15],"gigabyt":14,"git":[5,13],"github":[0,2,3],"give":[2,6,12,13,15],"given":[6,8,9,12,13,15],"global":[0,5,6,8,9,12,13,14],"globe":15,"glue":4,"go":[0,6,8,12,15],"goal":[2,5,6,8,10,14],"goe":15,"good":[2,3,4,8,12,13],"goodwil":15,"got":[0,15],"got_respons":0,"govern":[12,15],"gpio":10,"grace":9,"gracefulli":[6,8],"grade":5,"grain":3,"grant":[3,7,13,15],"granular":3,"grape":0,"graphic":10,"gratefulli":11,"graviti":15,"great":[2,3,12,13,15],"greater":[3,9,12,13,14],"greatli":[2,6],"green":15,"grid":[10,15],"gross":15,"ground":15,"group":[5,6,9,10,12,13],"group_id":6,"group_nam":3,"group_root":3,"groupinstal":2,"grow":[2,15],"grown":15,"growth":2,"guarante":[3,8,11,12],"guard":15,"guess":6,"gui":10,"guid":[2,4,10,12],"guidelin":2,"guilt":10,"gun":15,"gw":6,"gz":3,"h":[3,13],"ha":[0,3,4,6,8,9,10,11,12,13,14,15],"habit":15,"habitat":15,"hack":14,"had":12,"half":[12,14],"hammer":15,"hand":[0,15],"handheld":12,"handl":[0,2,4,6,8,9,10,12,13,14],"handler":[0,9,13,15],"handshak":15,"happen":[0,2,3,6,9,12,15],"hard":[2,4,6,15],"hardcod":15,"hardlin":8,"hardwar":[0,2,5,6,9,10,12,13,14,15],"harm":[5,7],"has_path":[0,9],"hasattr":0,"hash":[0,3,8,9,12,13,15],"hash1":12,"hash2":12,"hash_from_name_and_ident":9,"hashlib":12,"hashmap":0,"have":[0,2,3,4,6,8,9,10,11,12,13,14,15],"hazard":9,"hdlc":0,"header":[0,6,9,12],"header_1":12,"header_2":12,"health":5,"hear":[12,15],"heard":[9,10,12,13],"heart":15,"heavi":15,"height":6,"held":[6,13],"helium":0,"hellman":[8,12],"hello":3,"hello_world":3,"help":[0,2,3,8,11,12,13,15],"helper":[0,3,13],"here":[0,2,6,12,13,15],"herebi":7,"heterogen":[2,5,14],"hex":[0,13],"hexadecim":[0,3,12,13],"hexbyt":13,"hf":[10,15],"hidden":13,"hide":[2,15],"hierarch":[14,15],"hierarchi":[5,15],"high":[4,6,8,12,13,14,15],"higher":[6,8,14],"highest":9,"highli":[3,6,11,12,13],"highlight":5,"hijack":15,"hint":[0,3],"histori":[3,10],"hit":0,"hkdf":12,"hmac":[12,14],"hoc":[14,15],"hold":[6,9,12,15],"holder":[7,8],"hole":15,"hollow":15,"home":[2,8,10,13,15],"homebrew":6,"hop":[6,8,9,12,13,14,15],"hopefulli":8,"hops_to":9,"host":[0,3,5,6,8,10,12,13],"hostil":5,"hostnam":[6,15],"hotspot":15,"hour":[0,3,6,13,15],"hous":[2,15],"how":[0,2,3,4,6,8,10,12,13,14,15],"howev":[2,3,6,8,12],"http":[0,3,10,11,15],"hub":[6,10,13],"hum":15,"human":[0,5,6,7,8,9,11,12],"hundr":[8,10,15],"hungri":4,"hw_mtu":0,"hwrev":13,"hz":[6,13],"i":[0,2,3,4,5,6,7,8,9,10,11,12,13],"i2p":[2,5,8,10,14],"i2p_tunnel":6,"i2pd":[2,6],"i2pinterfac":[2,6],"ia":13,"ic":4,"ic_burst_freq":6,"ic_burst_freq_new":6,"ic_burst_hold":6,"ic_burst_penalti":6,"ic_held_release_interv":6,"ic_max_held_announc":6,"ic_new_tim":6,"ic_pr_burst_freq":6,"ic_pr_burst_freq_new":6,"icmp":10,"icon":[3,15],"id":[3,6,9,12,13],"id_callsign":6,"id_interv":6,"idea":[2,3,12,13,15],"ideal":[10,13,14],"ident":[0,2,5,6,8,9,10,13,14],"identif":[5,6,14],"identifi":[0,6,8,9,12,13,14],"identifyexampl":0,"identity_data":13,"ie":13,"if00":13,"ifac":[0,2,6,8,12,13],"ifac_s":6,"ifconf":0,"ifconfig":13,"ignor":[3,6,8,9,11,12,13],"ignored_devic":6,"illus":5,"illustr":[0,6,12],"imag":15,"imagin":[8,15],"immedi":[3,6,13,15],"immens":15,"immort":15,"immut":15,"impact":[6,8,9,12],"impati":15,"imperson":8,"implement":[0,3,5,6,8,9,10,11,12,15],"impli":7,"implic":[5,6,8],"implicit":[8,9,12],"implicitli":13,"import":[0,2,4,6,8,9,11,12,13],"importantli":[2,15],"importlib":0,"imposs":[12,15],"impract":13,"improv":[2,5,6,10,11,15],"in_fram":0,"in_wait":0,"inactive_for":9,"inadvert":13,"inbound":[0,6,9],"inbox":8,"includ":[0,3,4,5,6,7,8,9,10,12,14],"inclus":8,"incom":[0,6,9,13],"incompat":[9,12],"incomplet":8,"increas":[3,6,9,13],"incredibli":15,"incur":6,"indefinit":13,"independ":[3,5,9,12],"index":[0,2,5],"indic":[0,3,9],"indiffer":15,"indirectli":[7,12],"individu":[2,3,6,9,11,12,13,14,15],"inevit":[2,12],"infer":12,"infinit":15,"influx":[6,10],"influxdb":10,"info":[3,9,12,13,15],"inform":[0,2,3,5,6,8,9,10,11,12,13,15],"infrastructur":[4,5,6,8,10,12,13],"ingest":15,"ingo":9,"ingress":[0,6],"ingress_control":6,"inhabit":15,"inher":8,"inherit":3,"init":2,"initi":[0,3,6,8,9,12,13,14],"initialis":[0,3,9,13],"input":[0,13],"insert":12,"insid":[3,12,15],"insight":15,"inspect":[2,3,6,8,12,13],"inspir":15,"instal":[0,3,5,6,12,13,14],"instanc":[0,5,6,9,10,12,13,15],"instance_control_port":13,"instance_nam":13,"instant":15,"instanti":9,"instantli":13,"instead":[0,2,3,6,9,12,13,15],"institut":15,"instruct":[2,3,15],"int":[0,9],"integ":[0,9],"integr":[2,3,10,12,13,15],"intellig":[7,15],"intend":[2,6,8,12,13],"intens":13,"intent":[8,15],"intention":[10,12],"inter":[2,9,12],"inter_byte_timeout":0,"interact":[0,2,5,8,9,12,13,15],"intercept":8,"interchang":6,"interconnect":[2,6,8,12],"interest":[10,12,15],"interfac":[3,4,5,8,9],"interface_class":0,"interface_discovery_sourc":[9,13],"interface_en":13,"interfer":[8,13],"intermedi":[8,15],"intermediari":[6,12],"intermitt":[6,8,15],"intern":[0,3,6,9,12,15],"internal_1":6,"internet":[5,6,8,10,12,13,14,15],"internetwork":2,"interoper":[4,8,10,12,14],"interrupt":[3,6],"interv":[3,6,9,13],"intervent":13,"intiat":0,"intim":15,"introduc":[3,12,13,15],"introduct":5,"introductori":5,"intuit":[8,14],"invalid":[0,3,6,9],"invari":15,"invers":12,"invert":15,"invest":8,"investig":3,"invis":[2,6],"invit":6,"invok":3,"involv":[3,8,11],"io":4,"iodin":10,"ioerror":0,"iot":4,"ip":[2,4,5,6,8,12,13,14],"ipv4":6,"ipv6":[2,6,13],"irc":10,"irrelev":11,"irrespons":15,"is_compress":9,"is_connected_to_shared_inst":0,"is_open":0,"is_path_respons":9,"is_ready_to_send":[0,9],"isdir":0,"isfil":0,"isinst":0,"ism":[4,12],"isn":15,"isol":[2,6,13],"isp":[6,8,15],"issu":[3,5,6,8],"its":[3,4,6,7,8,9,12,13,15],"itself":[5,8,10,12,13,15],"iv":[12,14],"j":[5,13],"jail":13,"javascript":10,"job":0,"join":[0,2,8,10,12],"journei":8,"json":[13,15],"just":[0,2,3,4,6,8,10,12,13,14,15],"k":[0,13],"kb":13,"kbp":13,"keep":[0,2,3,8,9,12,13,14,15],"keepal":[9,12],"keepalive_timeout_factor":9,"kei":[0,3,5,6,8,9,13,14,15],"kept":[6,8,9,12],"kernel":[6,13,14],"keyboardinterrupt":0,"keyerror":9,"keypad":10,"keypair":[8,12],"keyr":15,"keyset":[12,13,14],"keysiz":9,"keystor":8,"khz":6,"ki":0,"kill":[9,12,15],"kind":[4,6,7,8,10,12,15],"kiss":[4,5,10,13,14],"kiss_fram":6,"kissinterfac":[6,13],"knock":15,"know":[0,2,4,6,8,9,12,13,15],"knowledg":[8,12],"known":[0,6,9,12,13,14,15],"ko":11,"krypton":0,"l":[3,6,13],"la":13,"labor":15,"lack":12,"laid":12,"lan":6,"landlord":15,"languag":[3,7,10],"lantern":15,"laptop":[8,15],"larg":[0,4,6,8,9,12,13,14,15],"larger":[8,12,13],"laser":6,"last":[0,3,6,9,13,15],"last_read_m":0,"last_unit":0,"latenc":[2,8,12,14,15],"later":[0,2,3,6,10,13],"latest":[0,2,3,6,9,13],"latest_buff":0,"latest_client_link":0,"latitud":6,"laucnh":2,"launch":[10,13],"law":15,"layer":[4,6,8,9,10,12,13,14,15],"lcd":10,"lead":[2,12,15],"leak":2,"learn":[0,2,7,8,11,12,15],"leas":15,"leash":15,"least":[2,3,4,6,8,12,13,14],"leav":[8,10,12,15],"ledger":[12,15],"left":[6,9,12,13],"legaci":[8,15],"legal":[6,15],"legisl":6,"legitim":[2,8,13],"len":[0,15],"length":[0,3,6,9,12],"less":[0,2,4,6,9,12,14,15],"let":[0,2,3,6,8,10,12,13,15],"level":[3,4,6,8,12,13],"lever":15,"li":15,"liabil":7,"liabl":7,"liber":[4,5],"liberapai":11,"libffi":2,"librari":[2,10,15],"licens":[5,12,14,15],"lie":15,"life":15,"lifelin":15,"lift":[13,15],"light":[3,13,15],"lightweight":14,"like":[0,2,3,4,6,8,9,10,12,13,14,15],"likewis":3,"limit":[0,2,4,5,7,8,10,12],"line":[0,2,5,6,10,12,13,14,15],"linger":13,"link":[2,3,4,5,6,8,9,10,13,14,15],"link_clos":0,"link_establish":0,"link_id":[0,9],"link_mtu_discoveri":9,"linkexampl":0,"linux":[2,4,6,10,12],"liquid":15,"list":[0,2,3,4,5,6,9,10,12,14,15],"list_deliv":0,"list_fil":0,"list_filt":13,"list_packet":0,"list_receipt":0,"list_timeout":0,"listdir":0,"listen":[0,2,3,5,10,12,13,15],"listen_ip":6,"listen_on":[2,6],"listen_port":6,"liter":13,"litter":15,"littl":[4,10,12],"live":[2,9,10,15],"lki":12,"lkr":12,"ll":[0,14,15],"llm":10,"ln":13,"load":[0,2,3,4,6,9,13,14,15],"load_private_kei":9,"load_public_kei":9,"local":[0,2,3,5,6,8,9,10,12,14,15],"locat":[2,5,6,8,12,13,15],"lock":15,"log":[0,2,3,6,13,15],"log_crit":0,"log_error":0,"log_info":0,"log_verbos":0,"logdest":9,"logfil":13,"logic":[12,15],"login":13,"loginctl":13,"loglevel":[0,9,13],"long":[0,2,3,4,6,8,9,12,13,15],"longer":[0,2,6,12,13,15],"longest":6,"longitud":6,"look":[0,2,3,6,8,10,12,13,15],"loop":0,"lora":[2,4,5,8,10,12,14,15],"lorawan":[4,12],"loss":[6,8,12],"lost":15,"lot":[8,12,15],"loudest":15,"low":[2,3,4,6,8,10,12,14,15],"lower":[0,2,6,13],"lowli":15,"ltu":4,"lunar":5,"lxmf":[3,5,6,8,9,13],"lxmfy":5,"lxst":5,"m":[0,2,3,12,13],"mac":[6,12],"machin":[2,7,12,13,15],"machineri":10,"maco":[5,10],"made":[2,3,6,9,12,15],"mai":[2,3,6,8,9,10,12,13,15],"mailbox":10,"main":[0,3],"maintain":[2,3,8,10,12,13,14],"mainten":[2,8,12,15],"make":[0,2,3,4,6,8,10,11,12,13,14,15],"malici":[2,3,8,12,13],"malinform":11,"manag":[2,5,8,9,10,12,14,15],"mani":[0,2,3,4,6,8,9,10,12,13,14,15],"manifest":3,"manipul":[12,14,15],"manjaro":2,"manner":[3,8,10],"manual":[0,2,6,8,9,12,13,14,15],"manufactur":[4,6],"map":[6,10,12,13,15],"mark":[2,3,7,9,12,14,15],"markdown":3,"market":15,"markqvist":[0,11],"markup":[3,10],"mass":15,"master":[0,3,9,15],"match":[0,3,6,12,13,15],"math":15,"mathemat":15,"matter":[2,6,8,15],"matur":13,"max":13,"maximum":[0,6,9,12,13],"mayb":15,"mb":3,"mbp":13,"md":3,"mdu":[0,9],"me":[6,15],"mean":[2,3,4,6,8,9,12,13,15],"meaning":2,"meantim":9,"measur":[8,12,15],"mechan":[2,3,5,6,8,13,14],"media":[3,15],"mediev":15,"medium":[0,4,5,6,8,9,10,12,14],"meet":15,"megaphon":15,"member":[2,12],"memori":[2,8,12],"mental":15,"mention":[6,12],"menu":0,"menu_mod":0,"merchant":7,"mere":15,"merg":[7,13],"merit":5,"mesh":[2,6,8,12,13,14,15],"meshchat":10,"meshchatx":5,"messag":[0,2,3,8,9,10,12,13,15],"message_class":9,"messagebas":[0,5,9],"messagecallbacktyp":9,"messeng":[8,12],"met":[2,15],"meta":3,"metadata":[2,3,6,12,13,15],"metaphor":15,"metavar":0,"meter":6,"meth":0,"method":[0,2,5,6,9,12],"methodologi":[12,13],"metric":10,"mevpekyafshak5wr":6,"mhz":[6,12],"mi":0,"microcontrol":12,"micromanag":15,"micron":[3,5],"microwav":8,"might":[2,3,6,8,12,13,15],"mikrotik":4,"millimet":4,"million":15,"millisecond":[0,8,13,15],"mind":[8,15],"mindset":15,"mine":15,"miner":15,"minim":[4,5,6,12],"minimalsampl":0,"minimum":[0,2,6,9,12,13,15],"minimum_bitr":9,"miniscul":15,"minut":[0,2,3,6,12,15],"mirror":[5,8,13],"mirror_interv":3,"misconfigur":2,"mislead":[2,15],"miss":[0,2,3],"missil":15,"mistak":2,"misunderstand":11,"mitig":8,"mix":[5,6,8,13],"mixtur":14,"mobil":[6,8,12],"mode":[0,2,3,4,5,8,9,10,12,13,14,15],"model":[7,8,13,15],"modem":[5,6,8,9,10,12,14,15],"modem73":10,"moder":6,"modern":[2,4,10,15],"modif":3,"modifi":[3,6,7,8,12,13],"modul":[0,2,3,4,5,6,8,12,13,14],"modular":10,"moment":[12,15],"momentarili":6,"monero":11,"monitor":[2,6,10,12,13],"moon":0,"moral":15,"more":[0,2,3,4,6,8,9,10,11,12,13,14,15],"most":[2,4,6,8,9,10,12,13,15],"mostli":[6,8,12],"motiv":5,"mountain":15,"move":[3,6,8,12,13,15],"msgpack":3,"msgtype":[0,9],"mtu":[0,6,9,12,14],"mu":3,"much":[2,6,8,10,12,13,14,15],"multi":[5,8,10,12,13,14],"multicast":6,"multicast_address_typ":6,"multilater":12,"multipl":[0,3,6,8,10,12,13],"multiplex":[0,13],"multipoint":12,"multitud":2,"must":[0,2,3,6,8,9,12,13,15],"mutual":15,"mw":6,"my":[3,6,12,15],"my_fil":13,"my_ident":13,"my_network":[12,13],"my_network_ident":6,"my_nod":3,"myapp":3,"mycal":6,"myfork":3,"myfriend":15,"mymirror":3,"myrepo":3,"myriad":12,"mysteri":15,"n":[0,3,12,13],"name":[0,2,3,5,6,8,9],"namespac":0,"nano":3,"narg":0,"nat":[2,6],"nativ":[0,8],"natur":6,"navig":3,"nearbi":[6,8],"nearest":6,"nears":12,"neat":8,"neccessari":6,"necesarri":6,"necessari":[3,4,6,8,9,12],"necessarili":12,"need":[0,2,3,4,5,6,8,9,10,11,12,13,14,15],"neg":2,"neglig":[12,15],"negoti":15,"neighbor":15,"neither":[9,12],"neon":0,"neopixel":13,"nerd":3,"net":6,"netcat":6,"network":[0,4,6,9,13,14,15],"network_ident":[6,12,13],"network_nam":[2,6],"neutral":[8,15],"never":[6,8,9,12,15],"new":[0,2,3,5,8,9,12,13,15],"new_id":13,"new_ident":13,"newer":[9,12],"newest":12,"newli":[6,9,12],"newlin":[6,13],"next":[2,3,6,9,12,15],"next_hop":9,"next_hop_interfac":9,"nice":15,"nicknam":12,"no1cll":6,"no_data_for":9,"no_inbound_for":9,"no_outbound_for":9,"noauth":13,"nobl":0,"noble_ga":0,"noble_gas":0,"nobodi":3,"nocheck":13,"node":[2,5,6,13,14],"node_nam":3,"noid":13,"nois":[9,11,15],"noisi":15,"nomad":5,"nomadnet":10,"nomadnetwork":10,"non":[2,6,9,10,12,15],"none":[0,2,3,6,9,12,13],"noninfring":7,"nor":[2,15],"normal":[0,2,3,6,9,12,13],"notabl":10,"notat":[12,13],"note":[0,3,4,5,6,9,12,13],"noth":[3,4,8,14,15],"notic":[3,6,7,12,13],"notif":[0,9],"now":[0,2,3,12,13,15],"np":13,"nrf52":4,"nt":0,"num":0,"number":[0,2,3,6,8,9,10,12,13,15],"o":[0,2,3,6,12,13,14],"obj":3,"object":[0,9,15],"obscur":2,"observ":[8,15],"obsolet":15,"obstacl":15,"obtain":[2,4,5,7,9,12],"obvious":12,"occupi":15,"occur":[0,6,13,14],"ocean":15,"ocur":9,"odd":0,"ofdm":10,"off":[2,6,8,10,12,13,14,15],"offer":[2,5,6,8,9,10,12,13,15],"offic":8,"offlin":[0,2,3,8,10],"often":[2,6,8,12,13,15],"oganesson":0,"old":[0,2,4,11,12,15],"older":13,"omit":9,"on_interfac":9,"onc":[0,2,3,4,6,9,12,13,14,15],"one":[0,2,3,4,6,8,9,10,12,13,14,15],"ones":[2,6,8,13],"oneself":12,"ongo":10,"onli":[0,2,3,4,6,8,9,12,13,14,15],"onlin":[0,13,15],"onto":[2,12,15],"opaqu":8,"open":[0,2,3,4,5,6,8,9,10,11,12,13,14],"open_port":0,"openmodem":[6,14],"openssl":[2,12],"openwrt":5,"oper":[2,3,4,6,8,9,12,13,14,15],"opinion":11,"opkg":2,"opportun":2,"opportunist":8,"oppos":3,"opposit":[0,6],"oppress":15,"opt":12,"optic":[4,14,15],"optim":[2,3,8,15],"option":[0,2,3,4,5,8,9,10,12,13,15],"ord":0,"order":[0,9,13],"organ":[2,3,8,12,13,15],"organis":[6,11],"orient":12,"origin":[0,3,8,10,12,15],"os":2,"other":[0,2,3,4,6,7,8,9,10,12,13,15],"otherwis":[0,7,9],"our":[0,6,12,15],"ourselv":8,"out":[0,4,6,7,9,10,12,13,15],"outbound":[6,9,12],"outgo":[0,6,9,12,13],"outlin":[2,4,12],"output":[3,6,13],"outsid":[9,14,15],"over":[0,4,5,6,8,9,10,11,12,13,14,15],"overal":[12,13],"overcom":12,"overhead":[2,4,6,12,15],"overlai":2,"overli":11,"overlord":15,"overrid":[0,3],"oversight":12,"overview":[3,5,6],"overwhelm":[6,8,9],"overwrit":13,"own":[0,2,3,8,9,12,13,14,15],"owner":[0,15],"ownership":15,"p":[0,3,13],"pack":[0,9],"packag":[0,2,3,6,10,12],"packb":0,"packed_s":0,"packet":[0,2,5,6,8,9,10,13,14,15],"packet_callback":0,"packet_deliv":0,"packet_hash":0,"packet_receipt":[0,9],"packet_timed_out":0,"packetreceipt":[0,5,9],"pad":[12,14],"page":[5,12,13,15],"page_cont":3,"pagin":3,"pair":[6,9,12,13],"pamac":2,"panic":[0,13,15],"panic_on_interface_error":[0,13],"panopticon":15,"paper":10,"par":[0,2],"paradox":15,"parallel":2,"paralysi":15,"param":0,"paramet":[0,4,5,9,12,13],"paranoia":15,"parasit":15,"pariti":[0,6,13,14],"parity_even":0,"parity_non":0,"parity_odd":0,"pars":[0,3],"parse_arg":0,"parser":[0,3,5],"part":[0,2,3,6,8,9,10,12,13,15],"partial":3,"particip":[2,5,6,8,12,13,15],"particular":[0,4,6,7,12,13],"particularli":[3,6,13],"partner":15,"pass":[0,4,6,8,9,12,13,15],"passphras":[2,6,8,12],"passport":12,"past":13,"patch":15,"path":[0,2,3,4,5,8,9,12,13,15],"path_respons":9,"pathfinder_m":9,"patient":15,"pattern":[4,5,8,12],"payload":[0,6,9,12,13],"pdf":5,"peac":15,"peach":0,"peak":3,"peer":[0,2,3,6,9,10,12,13,15],"penalti":6,"pend":[0,12],"peopl":[2,10,12,15],"per":[3,6,8,9,10,12,13,14,15],"percent":[0,6],"percentag":9,"perfectli":2,"perform":[0,2,3,6,8,9,10,12,13,15],"perhap":[2,15],"period":[0,3,6,9,12,13],"peripher":10,"perm":3,"perman":[2,6,13],"permiss":[5,6,7,13,15],"permissionless":[12,13],"permit":7,"perpetu":15,"persecut":12,"persist":[6,13,15],"person":[5,6,7,8,11,12],"perspect":[6,8,9,12,14],"pet":0,"petit":15,"philosophi":[11,12,14,15],"phone":[2,5,8,15],"phonebook":10,"photo":15,"phy":13,"physic":[0,2,3,4,5,6,8,9,10,12,13,14],"pi":[0,5,8,12,13,14,15],"pick":12,"piec":12,"pillar":15,"ping":[13,15],"pip":[0,2,3,4,6,13],"pip3":2,"pipe":[5,10,13,14,15],"pipeinterfac":[4,6,10],"pipx":2,"pitfal":12,"pkcs7":[12,14],"pkg":2,"place":[0,2,3,6,8,12,13,15],"plaform":4,"plain":[0,4,6,9,12,15],"plain_mdu":9,"plaintext":[0,9,15],"plan":[8,12,15],"planet":15,"planetari":[14,15],"platform":[0,4,5,10,12,13,15],"pleas":[0,2,6,9,13,15],"plenti":[8,12],"plug":[13,15],"plugin":[10,15],"pmr":12,"poetri":15,"point":[2,3,4,6,8,10,11,12,13,15],"pointer":2,"polici":[13,15],"polit":15,"pomelo":0,"popul":9,"popular":14,"port":[0,2,4,5,6,8,12,14,15],"port0":13,"portabl":[5,6,8,12],"portion":7,"pose":[2,12],"posit":[0,3,13],"posix":2,"possess":[6,12,15],"possibl":[2,3,4,6,8,9,10,12,13,14],"possibli":[2,12],"post":[0,5],"postfix":13,"potenti":[0,2,3,6,11,12,13,14,15],"power":[2,4,5,6,8,10,12,13,14],"powershel":2,"ppp":0,"practic":[3,8,12,14,15],"pre":[2,8,9,12],"preambl":[6,13],"preced":[0,3],"preciou":8,"precompil":2,"predatori":15,"predict":12,"prefer":[2,3,11,12],"prefer_ipv6":6,"premis":[8,15],"prepar":[0,12],"prerequisit":9,"presenc":[5,6,9],"present":[6,8,10,12,13,15],"preserv":[2,5,9],"preshar":12,"press":0,"pretend":[10,12],"prettyhexrep":0,"prevent":[3,6,8,13,15],"preview":3,"previou":0,"previous":[6,9,12],"price":15,"primari":[12,15],"primarili":[6,8,10],"primarlii":2,"primit":[2,3,5],"principl":[5,8,12,14],"print":[0,3,6,13],"print_filelist":0,"print_help":0,"print_menu":0,"priorit":[8,12,15],"prioriti":12,"prioritis":[5,6,8,9],"privaci":[2,6,10,15],"privat":[2,3,6,8,9,10,11,12,13,14,15],"private_ret":2,"privileg":[13,15],"probabl":[0,2,8,12,13,14],"probe":13,"problem":[2,3,12,13,15],"problemat":3,"proc":13,"procedur":[2,9,12],"process":[0,2,3,4,6,8,9,12,13,15],"process_incom":0,"process_outgo":0,"product":[13,15],"profil":15,"profit":15,"profound":[8,15],"profoundli":15,"program":[0,3,4,5,6,9,12,14],"program_setup":0,"programm":12,"programmat":12,"progress":[0,3,9,13,14],"progress_callback":9,"project":[10,11,15],"promis":2,"prompt":[0,2],"proof":[0,6,8,9,12,13,15],"proof_packet":0,"proof_requested_callback":9,"proof_strategi":9,"propag":[5,6,8,9,10,13,15],"proper":2,"properli":2,"properti":[0,8,9],"proport":12,"propos":5,"protect":[2,13,15],"protocol":[2,3,4,5,6,8,14],"prove":[0,3,8,12,15],"prove_al":[0,9],"prove_app":9,"prove_non":9,"proven":[3,9,12],"provid":[0,2,3,4,5,6,7,8,9,10,12,13,14,15],"provis":[4,13],"prv_byte":9,"pseudo":13,"psycholog":15,"pub_byt":9,"pub_to_fil":9,"public":[0,3,5,6,8,9,11,13,14],"public_inform":0,"publicli":[2,6,12,13],"publish":[2,3,5,6,7,9,12],"publish_blackhol":13,"publish_blackhole_en":9,"publish_ifac":6,"pull":3,"puppet":15,"purchas":[2,12,14],"pure":[5,12],"purg":9,"purpos":[2,3,4,6,7,8,9,10,12,13,15],"purposefulli":7,"push":[3,10,15],"put":[0,4,6,13],"py":[0,3,12,13],"py3":2,"pyca":[2,12],"pygment":3,"pyseri":[0,2],"python":[0,3,5,6,9,12,13,14,15],"python3":[0,2,4],"q":[0,3,13],"qr":[8,10],"qualiti":[9,13,15],"queri":[0,2,3,9,13,15],"question":[2,4,6],"queu":[9,13],"queue":[6,12],"quick":13,"quickli":[6,10,11,12,14],"quiet":[3,6,13,15],"quinc":0,"quirk":2,"quit":[0,2],"qvist":[7,14],"r":[0,3,6,12,13],"radic":15,"radio":[5,6,8,9,10,12,13,14,15],"radon":0,"rais":[0,9],"rak":4,"ram":[2,6],"randint":0,"random":[0,9,11,12],"random_text_gener":0,"randomis":12,"randomli":[0,12],"rang":[0,2,3,4,6,8,12,13,14,15],"rapidli":6,"rare":[2,6],"raspberri":[5,8,12,13,14],"rasperri":2,"ratchet":[9,12],"ratchet_count":9,"ratchet_expiri":9,"ratchet_id_receiv":9,"ratchet_interv":9,"ratchets":9,"ratchets_path":9,"rate":[0,2,5,9,10,13],"rather":[2,9,10,13,15],"ratio":9,"raw":[0,3,4,9],"rawchannelread":[5,9],"rawchannelwrit":[5,9],"rawiobas":9,"rawmu":3,"rb":0,"rbrowser":5,"re":[0,6,8,9,12,13,15],"reach":[2,5,6,8,9,13,15],"reachabl":[0,2,6,8,9,10,12,13],"reachable_on":6,"read":[0,2,3,6,8,9,12,13,14,15],"read_loop":0,"readabl":[0,6,9,12,13,15],"reader":[0,9],"readi":[0,2,4,6,9,14,15],"readili":14,"readm":3,"readwrit":3,"ready_byt":[0,9],"ready_callback":9,"real":[2,4,6,8,10,13,14,15],"realiti":[2,11,15],"realiz":15,"realli":[6,9,13,15],"realm":15,"reappear":6,"reason":[2,6,12,13],"reassembl":12,"reboot":15,"rebroadcast":8,"rebuilt":15,"recal":[0,9,13],"recall_app_data":9,"recap":12,"receipt":[0,8,9,12],"receiv":[0,2,3,6,8,9,11,12,13,15],"receive_path_respons":9,"receive_stream_id":9,"received_announc":[0,9],"recent":[9,12],"recept":9,"reception_rssi":0,"reception_snr":0,"reception_stat":0,"recip":2,"recipi":[3,12,15],"reclaim":15,"recogn":[12,15],"recognis":13,"recognit":15,"recommend":[0,2,6,12],"recondit":13,"reconnect":[0,8,15],"reconnect_port":0,"reconstruct":12,"record":[2,3,12],"record_stat":3,"recoveri":6,"recreat":12,"recurs":[9,12],"reduc":[6,13],"redund":[2,8],"ref":3,"refer":[0,2,3,5,6,10,13,15],"refin":11,"refresh":13,"refus":8,"regain":2,"regard":12,"regardless":3,"region":6,"regist":[0,3,9,13],"register_announce_handl":[0,9],"register_message_typ":[0,9],"register_request_handl":[0,9],"registrar":15,"registri":15,"regul":6,"regular":13,"regulatori":15,"regurgit":15,"reject":[3,15],"rel":[3,4,6,8,12],"relai":[2,5],"relat":[2,3],"relationship":[8,12,13,15],"releas":[2,5,6,12,13,15],"relev":[0,2,3,4,6,9,12,13,15],"reli":[2,3,6,8,11,12,13,15],"reliabl":[2,4,6,8,9,12,14,15],"relianc":[2,15],"relief":8,"reload":13,"rem":0,"remain":[3,6,8,9,10,12,15],"rememb":[6,8,9,12],"remot":[0,5,9,12],"remote_ident":[0,3,9],"remote_identifi":0,"remote_management_allow":13,"remote_management_en":9,"remote_nod":3,"remote_p":0,"remotesensor":12,"remov":[3,9,13,15],"remove_message_handl":9,"remove_ready_callback":9,"render":[3,10,15],"rent":15,"reopen":3,"replac":[0,2,8,9,10,12,13,15],"repli":[0,13],"replic":[4,12],"reply_data":0,"reply_messag":0,"reply_text":0,"repo":[3,13],"repo_nam":3,"report":[6,9,11,13],"repositori":[2,5,12,13,15],"repres":[8,12,15],"represent":[0,9,15],"repurpos":2,"reput":[12,13],"request":[3,5,8,9,12,13,14,15],"request_destin":0,"request_fail":0,"request_id":[0,9],"request_packet":0,"request_path":[0,9],"request_receipt":[0,9],"request_receiv":0,"requested_at":[0,9],"requestexampl":0,"requestor":6,"requestreceipt":[5,9],"requir":[0,2,3,6,8,9,10,12,13,14,15],"require_shared_inst":9,"required_discovery_valu":[9,13],"rerout":15,"resend":9,"reserv":[0,8,9,15],"reset":3,"resid":[6,15],"resili":[2,8,10,13,14,15],"resist":8,"resiz":13,"resolut":[2,3,6,12],"resolv":[3,5,6,8,12,13],"resourc":[0,2,5,6,8,9,11,13,15],"resource_callback":9,"resource_sending_conclud":0,"resource_strategi":9,"respawn":6,"respawn_delai":6,"respawn_interv":6,"respect":[3,6,8,14,15],"respond":[0,8,9,13],"respond_to_prob":13,"respons":[5,6,9,12,14,15],"response_callback":[0,9],"response_gener":[0,9],"rest":[8,14,15],"restart":[6,13],"restartsec":13,"restor":[2,6,15],"restrict":[3,6,7,8,13,15],"resubmit":3,"result":[0,2,6,12,13],"ret":[5,12],"retain":[6,9],"retained_ratchet":9,"retibb":5,"reticulum":[0,6,8,9],"retipedia":5,"retransmiss":[8,12],"retransmit":[6,12],"retri":[0,3,9,12],"retriev":[3,9,13],"return":[0,6,9,13,15],"reveal":[2,9,12,14],"revers":13,"review":12,"revis":13,"revok":[3,15],"revolut":15,"rfe":13,"rich":10,"ridicul":12,"right":[2,3,6,7,15],"rigid":15,"rington":10,"rippl":15,"risc":5,"risk":[3,12],"riski":15,"rmap":2,"rn":[0,2,3,4,5,9,12,13,15],"rncp":5,"rngit":5,"rngit_config":3,"rnid":[3,5,12],"rnmon":5,"rnode":[2,5,12,13,14],"rnodeconf":[4,5],"rnodef3b9":6,"rnodeinterfac":[2,4,6,13],"rnodemultiinterfac":6,"rnpath":[2,5,6],"rnphone":10,"rnprobe":[2,5],"rns_bin_dir":13,"rns_config":3,"rns_remot":3,"rnsconfig":3,"rnsd":[2,5],"rnsh":[5,10],"rnspure":[2,12],"rnstatu":[2,5,6,12],"rnstransport":[6,13],"rnx":5,"road":15,"roadmap":[11,15],"roam":[5,6,8],"robot":12,"robust":[2,6,15],"role":8,"roll":6,"rom":13,"room":[10,15],"root":[3,12],"rotat":[9,12,13],"round":[0,9,13],"rout":[2,4,6,8,9,10,12,13,14,15],"router":[2,6,8,13,15],"rpc":13,"rpc_kei":13,"rprogress":0,"rrc":5,"rrcd":10,"rsg":3,"rsm":3,"rssi":[0,9,13],"rtsct":0,"rtt":[0,9,12],"rttstring":0,"rubber":15,"rule":[2,3,5,6,8,13,15],"run":[0,2,3,4,6,8,9,10,12,13,14,15],"runtim":[0,12],"rust":2,"rvp":3,"rw":3,"rx":[6,13],"rxb":0,"sa":10,"safe":[3,12,13,15],"safeguard":15,"sai":15,"said":12,"same":[0,2,3,4,6,8,9,10,12,13,15],"sand":15,"satellit":8,"satisfi":12,"save":[3,9,12,13],"save_error":0,"saved_filenam":0,"saw":10,"scalabl":[13,14],"scale":[12,14,15],"scan":[2,6],"scarc":15,"scarciti":5,"scatter":15,"scenario":[2,6,12],"schedul":[3,9],"scheme":[3,4,6,13],"scope":[3,6],"scrape":15,"scratch":[4,15],"screen":0,"script":[2,3,4,6,13],"scrutini":12,"seamless":[6,12],"seamlessli":[6,8],"search":[5,9,10],"second":[0,6,8,9,10,12,13,14,15],"secreci":[6,9,10,12,14],"secret":[8,12],"section":[2,3,4,6,8,10,12,13],"secur":[2,3,5,8,10,12,13,14,15],"see":[0,2,3,6,8,9,12,13,14,15],"seek":[12,15],"seen":[6,12,15],"segment":[0,2,6,8,9,12,13,14],"select":[0,2,3,6,15],"self":[0,2,12,14,15],"sell":7,"semi":[3,13],"semtech":4,"send":[0,3,6,8,9,12,13,15],"send_stream_id":9,"sender":[0,2,8,12,13],"sens":[8,15],"sensibl":[2,4,6],"sensit":15,"sensor":[8,12],"sent":[0,2,8,9,12,13,15],"sentiment":12,"separ":[0,6,8,10,12,13],"sequenc":[0,9,12,13,14],"sequenti":[3,14],"serfdom":15,"seri":4,"serial":[0,2,5,8,12,14,15],"serialinterfac":[4,6],"serv":[0,4,5,6,8,10,11,12,13,15],"serve_nomadnet":3,"serve_path":0,"server":[0,2,3,4,5,8,9,10,12,13,15],"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,3,5,6,8,10,12,15],"session":[2,10,12,13],"set":[0,2,3,4,6,8,9,10,12,13,14,15],"set_default_app_data":9,"set_delivery_callback":[0,9],"set_link_closed_callback":[0,9],"set_link_established_callback":[0,9],"set_packet_callback":[0,9],"set_proof_requested_callback":9,"set_proof_strategi":[0,9],"set_ratchet_interv":9,"set_remote_identified_callback":[0,9],"set_resource_callback":9,"set_resource_concluded_callback":[0,9],"set_resource_started_callback":[0,9],"set_resource_strategi":[0,9],"set_retained_ratchet":9,"set_timeout":[0,9],"set_timeout_callback":[0,9],"setup":[0,2,5,6,13],"sever":[2,3,8,9,13],"sf":13,"sh":6,"sha":[8,9,12],"sha256":[12,14],"shall":[7,12],"shape":[8,15],"share":[0,2,8,9,10,12,13,15],"share_inst":13,"shared_instance_port":13,"shared_instance_typ":[9,13],"shelf":[12,14],"shell":[2,3,5,13,15],"shift":15,"shine":15,"ship":[12,15],"shop":[0,15],"short":[4,5,6,12,13],"shorter":6,"shorthand":[6,13],"shot":2,"should":[0,2,3,6,8,9,12,13,15],"should_ingress_limit":0,"should_quit":0,"should_use_implicit_proof":9,"shout":15,"show":[2,3,13,15],"shown":[0,11],"shut":15,"side":[6,13,14],"sideband":[2,5,13],"sign":[5,6,8,9,12,13,15],"signal":[0,6,9,12,13,15],"signatur":[3,8,9,12,13,14,15],"signer":3,"signifi":12,"signific":8,"significantli":[6,9],"silent":13,"similar":[0,2,3,4,6,9,10,13,14],"simpl":[0,2,4,9,10,12,13,14,15],"simpler":[3,6,8,14],"simplest":[6,12],"simpli":[0,2,3,4,6,8,10,11,12,13,15],"simplic":12,"simplifi":0,"simplyequip":4,"simultan":[2,12],"sinc":[0,2,3,6,8,9,12,15],"singl":[0,2,3,6,8,9,12,13,14,15],"singular":12,"sit":[2,15],"site":[6,8,15],"situat":[2,3,4,6,8,12,13],"size":[0,2,3,6,9,12,13],"size_str":0,"skip":[0,3],"sky":5,"slap":15,"slave":15,"sleep":[0,2,13],"slice":[0,15],"slightli":[0,2,15],"sloppi":15,"slottim":[6,13],"slow":[0,6,8,10,12,15],"slower":[6,9,12],"small":[0,2,6,8,9,12,14,15],"smaller":9,"smallest":2,"snippet":13,"snr":[0,9,13],"so":[0,2,3,4,6,7,8,9,10,11,12,13,14,15],"social":[2,15],"societi":15,"socket":[6,13,14,15],"soft":15,"softwar":[2,3,4,6,7,10,12,13,15],"solar":15,"sole":6,"solid":11,"solut":[12,13],"solv":[12,15],"some":[0,2,4,6,8,9,10,12,13,15],"some_program":3,"some_program_1":3,"some_remot":3,"someon":[2,3,6,13,15],"someth":[3,6,8,12,15],"somethign":0,"sometim":[4,6,10,15],"somewhat":2,"somewher":15,"soon":[3,9,13],"sort":[6,12,13],"soul":15,"sound":15,"soundmodem":6,"sourc":[0,2,3,4,5,8,9,12,14,15],"sovereign":[2,12,15],"sovereignli":15,"sovereignti":[5,14],"space":[0,2,4,8,12,14,15],"spam":[2,6,12,13],"spammi":13,"span":[6,8,12],"spawn":6,"spe":6,"speak":[11,15],"spec":12,"special":[10,12,13],"specif":[0,3,4,5,6,8,9,13,14,15],"specifi":[0,2,3,4,6,8,9,12,13],"spectrum":[6,12,15],"speed":[0,6,9,12,13,15],"sphere":15,"spinner":15,"spirit":10,"split":0,"sponsor":11,"spoof":15,"spread":[6,13],"spreadingfactor":6,"squelch":6,"ssh":[3,10,13],"ssid":6,"ssl":15,"stabil":[8,15],"stabl":[2,6,8,12,14],"stack":[0,2,8,9,10,12,13,14,15],"stage":12,"stai":[0,12,13,15],"stale":[8,9],"stale_grac":9,"stale_tim":9,"stamp":[6,9,13],"stanc":15,"stand":15,"standalon":[5,10],"standard":[3,4,6,10,12,13],"start":[0,3,4,5,6,8,9,10,12,13,15],"startup":[0,2,13],"stat":[3,9,13],"state":[0,5,8,15],"static":[2,3,6,9,15],"staticmethod":0,"station":6,"stationari":[8,13,15],"statist":[0,5,6,9,11],"stats_ignore_ident":3,"statu":[0,2,3,5,6,9,10,12,13,15],"stderr":13,"stdin":[6,13],"stdio":14,"stdout":[0,3,6,13],"steel":15,"stem":11,"step":[0,2,4,15],"stewardship":15,"still":[0,2,3,6,8,12,13,15],"stock":0,"stone":15,"stop":[9,14,15],"stopbit":[0,6,13],"storag":[2,5,6,10,12,13,15],"store":[0,3,5,9,10,12,13],"store_tru":0,"storm":15,"str":0,"straightforward":6,"strang":15,"stranger":15,"strangl":15,"strateg":8,"strategi":[5,6,9],"stream":[0,9,10,12,13,15],"stream_id":[0,9],"street":15,"strength":[9,14,15],"strict":15,"strictli":[6,12],"string":[0,9,15],"stringmessag":0,"strip":[3,15],"strong":[2,3,12,15],"stronger":2,"strongli":2,"struct":0,"structur":[0,5,8,9,12,14,15],"style":6,"sub":[0,6],"subclass":[0,9],"subcommand":3,"subdirectori":3,"subinterfac":6,"subject":[2,7,13,14,15],"sublicens":7,"subnet":[2,8],"subscrib":[2,13,15],"subsequ":[0,3,12],"subset":6,"subsid":6,"substanti":7,"substrat":15,"subtl":15,"subtli":15,"succe":[2,3,13],"succeed":[0,9],"succesfulli":8,"success":[2,3,6],"successful":9,"successfulli":[0,9,12],"suddenli":15,"sudo":[2,13],"suffer":8,"suffic":12,"suffici":[2,6,12,13,14],"suffix":0,"suit":[2,4,10,12,13,15],"suitabl":[0,2,6,8,12,13,14],"sum":15,"super":0,"supersed":6,"suppli":[0,6,9,12,13,14],"supplier":2,"support":[0,2,3,5,6,8,9,10,12,13,14],"sure":[0,2,3,4,13],"surfac":15,"surround":15,"surveil":[12,15],"surviv":[2,12,13,15],"sustain":15,"switch":[4,6,8,12,13,15],"sx1262":4,"sx1268":4,"sx1276":4,"sx1278":4,"sx1280":4,"sy":0,"symlink":13,"symmetr":[9,12],"sync":3,"syncer":3,"synchron":[5,10,15],"syntax":5,"synthet":15,"system":[0,2,3,4,5,6,7,8,9,10,11,12,14],"systemctl":13,"systemd":13,"t":[0,2,3,6,8,9,12,13,15],"tabl":[2,6,8,12,13,15],"tablet":2,"tackl":10,"tag":[3,9],"tail":6,"tailor":12,"take":[0,2,3,6,10,12,13,14,15],"taken":[0,3,12,13,15],"talk":[10,15],"tamper":[3,15],"tangerin":0,"tap":[4,15],"tar":3,"target":[0,2,3,6,10,13,15],"target_hash":9,"target_host":6,"target_port":[6,13],"task":[3,13],"taught":15,"tcp":[2,4,5,8,12,13,14,15],"tcpclientinterfac":[2,4,6],"tcpinterfac":13,"tcpserverinterfac":[2,6],"tdata":0,"teach":[13,15],"teahous":11,"teardown":[0,9],"teardown_reason":0,"tech":15,"technician":15,"technologi":[2,8,15],"teffect":0,"telco":15,"telecom":15,"telemetri":[10,11],"telephon":5,"telephoni":10,"televis":15,"tell":[0,2,6,8,15],"temperatur":12,"templat":5,"temporari":[2,6,13],"temporarili":[6,8],"ten":12,"tenanc":15,"tenant":15,"tend":6,"tenuou":15,"term":[2,6,8,12,15],"termin":[0,2,3,9,10,13],"terminologi":[8,12],"termux":2,"terrifi":15,"test":[2,3,10,12,13,15],"testnet":13,"tether":15,"text":[0,10,12,13],"textur":15,"tfile":0,"tgz":13,"than":[0,2,3,6,8,9,10,11,12,13,14,15],"thank":3,"thei":[0,2,3,6,8,9,10,12,13,15],"them":[0,2,3,4,6,8,10,11,12,13,14,15],"theme":3,"themselv":[3,6,8,13],"theori":15,"thereaft":12,"therefor":[2,12,14,15],"thi":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15],"thing":[0,2,8,10],"think":[2,4,6,8,11,12,15],"those":[2,8,12,13,15],"though":[2,6,8,12],"thought":15,"thousand":[2,6,12,13,15],"thread":[0,3],"threat":13,"three":[2,12,15],"threshold":6,"throough":6,"throttl":[6,8],"through":[0,2,3,4,5,6,8,9,10,12,13,14],"throughout":[8,12],"throughput":[9,10,12,14],"thrown":[9,15],"thu":[8,9,12],"ti":[0,8,12],"tighten":15,"tightrop":15,"tild":13,"time":[0,2,3,4,5,6,8,9,10,11,12,13],"time_since_last":0,"timeout":[0,9,13,15],"timeoutarg":0,"timer":3,"timestamp":[0,3,12,15],"timestr":0,"tion":6,"titl":3,"tl":15,"tmp":13,"tnc":[4,6,9,10,13,14],"to_fil":9,"todai":[12,15],"togeth":[4,8,12,13,15],"toggl":13,"token":[9,12,14],"tokyo":15,"told":15,"toler":6,"tomorrow":15,"too":[0,8,15],"tool":[2,3,4,5,8,10,12,13,14],"toolkit":[2,8],"top":[10,12,13,15],"topic":[2,12],"topographi":[2,8,12,15],"topologi":[2,6,8,12,14,15],"torn":[9,13],"tort":7,"tortur":15,"total":[3,9,12,13,14],"total_s":0,"touch":15,"toward":[0,6,12],"tower":15,"track":[3,9,13,15],"track_phy_stat":9,"trade":[8,12],"tradit":[8,12,15],"traffic":[0,2,6,8,9,12,13,15],"train":[7,15],"transceiv":[2,4,6,10,12,14],"transfer":[0,3,9,12,13,14],"transfer_s":0,"transform":14,"transient":15,"transistor":15,"translat":8,"transmiss":[2,6,9,12,15],"transmit":[0,3,6,12,15],"transmitt":15,"transpar":[3,4,6,8,12,13],"transport":[0,2,3,5,6,9,10,13,14,15],"transport_en":9,"transport_ident":13,"travel":15,"travers":[2,6,9,12,15],"treat":[3,8,12,15],"tree":3,"tremend":8,"tri":0,"trip":[0,9,13],"trivial":[12,14],"troubl":15,"true":[0,2,6,9,13,15],"truli":[4,12,15],"truncat":[9,12,13],"truncated_hash":9,"truncated_hashlength":[0,9],"trust":[2,3,5,6,8,12,13],"trustless":[5,12,14],"trustworthi":[8,13],"truth":3,"try":[0,3,5,6,8,9,10],"ttime":0,"ttransfer":0,"ttyacm0":6,"ttyusb0":[0,6,13],"ttyusb1":6,"ttyusb2":6,"tun":[4,6],"tun0":6,"tune":6,"tunnel":[2,6,8,12,14,15],"tupl":9,"turn":[0,6,13,15],"turnaround":6,"tutori":2,"two":[0,3,4,6,8,9,12,13],"tx":[6,13],"txb":0,"txp":13,"txpower":6,"txt":[3,13],"txtail":[6,13],"type":[0,2,5,6,8,9,13],"typeerror":9,"typic":[3,6,8,12],"tyrant":15,"u":[12,13,15],"ubiqu":4,"ubuntu":[5,13],"uci":2,"udp":[5,8,12,13,14],"udpinterfac":6,"uhf":[13,14],"ui":[10,15],"ultim":[2,12,15],"umsgpack":0,"unblackhol":13,"unblock":13,"unbound":15,"uncar":15,"uncencrypt":0,"uncentraliz":5,"unchang":8,"uncoordin":[2,15],"under":[3,6,9,11,12,13,14,15],"underli":[0,6,8,9,12,14],"undermin":15,"underneath":15,"undersea":15,"understand":[2,5,6,8,9,13,14,15],"understood":15,"underwai":2,"underwear":15,"unencrypt":[0,9,12],"unequivoc":12,"unexplor":8,"unforg":[8,14],"unfortun":2,"unicod":3,"unicode_icon":3,"unidentifi":0,"unidirect":0,"unifi":[8,12],"uninterest":0,"uniqu":[0,6,8,9,10,12,13,14,15],"unit":[0,2,9,13],"univers":15,"unix":3,"unknown":[0,6,8,9,12,13],"unlearn":15,"unless":[0,2,6,8,9,12],"unlicens":12,"unlik":12,"unlock":13,"unnecessari":6,"unorganis":8,"unpack":[0,9],"unpackb":0,"unpaid":15,"unplug":[13,15],"unrecover":[0,13],"unreli":6,"unset":12,"unsupport":9,"until":[0,2,6,9],"untrust":[3,13],"untrustworthi":15,"unus":13,"unwant":[12,13],"up":[0,2,3,4,6,8,9,10,12,13,14,15],"updat":[0,2,3,9,12,13,15],"upgrad":[2,9,12],"upkeep":6,"upload":3,"upon":[0,6,12],"upset":0,"upstream":[3,13],"uptim":15,"urandom":[12,14],"urgent":15,"uri":10,"url":[3,13,15],"us":[0,3,4,5,6,7,8,9,15],"usabl":[6,12],"usag":[3,5,6,9,10,11,13],"usb":[4,12,13],"useabl":12,"useless":15,"user":[0,2,3,6,8,10,12,13,14,15],"user_input":0,"userland":14,"usernam":15,"usernameher":13,"usr":[6,13],"usual":[2,6,8],"utf":0,"util":[0,4,5,6,12,15],"utilis":[0,2,6,9,12,13,14],"ux":10,"v":[3,5,13],"v1":[],"valid":[0,2,5,6,8,9,12,13,15],"valu":[0,2,6,9,12,13,15],"valuabl":[3,4,11,15],"valueerror":[0,9],"vanish":15,"vanishingli":15,"var":3,"vari":[2,6,12,13],"variabl":[0,2,3,9],"varieti":[6,10,12,13,14],"variou":[0,2,6,8,10,12,13,14],"vast":[2,12,15],"vastli":8,"ve":8,"vehicl":6,"vendor":[0,4,14],"ventur":15,"verbos":[3,9,13],"veri":[2,3,4,6,8,9,10,11,12,13,14,15],"verif":[3,8,9,10,12,13,15],"verifi":[0,2,5,6,8,9,12,13,14,15],"versa":14,"version":[0,2,3,12,13,15],"vhf":[12,14],"vi":3,"via":[2,3,4,6,8,10,11,12,13,14,15],"viabl":8,"vice":14,"video":15,"view":[2,3,6,11,12,13],"viewabl":3,"vim":3,"violat":6,"virtual":[2,4,6,8,12,13,14],"virtuou":15,"visibl":[0,3,6],"visual":[3,15],"vital":15,"voic":[10,11,15],"voicemail":10,"volunt":2,"voluntari":2,"vouch":15,"vpn":[8,15],"vport":6,"vulner":8,"vv":13,"vvv":2,"w":[3,13],"wa":[0,3,4,6,8,9,12,13,14,15],"wai":[0,3,5,6,8,9,10,12,13,15],"wait":[0,2,6,10,12,13,15],"walk":15,"wall":15,"wander":15,"want":[0,2,3,6,8,10,11,12,13,15],"wantedbi":13,"warn":13,"warrant":14,"warranti":7,"wash":15,"wast":[6,8,11,15],"wave":[4,15],"wb":0,"we":[0,2,4,6,8,11,12,15],"weaken":12,"weapon":15,"wear":15,"weather":15,"weav":15,"web":[2,3,10,15],"websit":[2,6,15],"weigh":15,"weight":[3,13,15],"well":[3,4,6,8,9,10,11,12,13,14,15],"went":0,"were":[0,3,10,15],"what":[0,2,5,6,8,9,12,13,15],"whatev":[8,9,12],"wheel":2,"when":[0,2,3,4,6,8,9,10,12,13,15],"whenev":[0,9,12],"where":[2,3,4,5,6,8,9,10,12,13,15],"whereupon":12,"wherev":15,"whether":[0,2,3,6,7,8,9,12,15],"which":[0,2,3,6,7,8,9,10,12,13,14,15],"while":[0,2,3,4,6,8,9,10,12,13,14,15],"whim":15,"whitelist":12,"whl":2,"who":[2,3,6,8,12,13,15],"whole":[13,15],"whom":[7,15],"whose":[13,15],"why":15,"wide":[2,3,4,6,8,10,12,13,14],"wider":[2,6,8,12,13],"wifi":[2,5,6,8,10,12,13,14,15],"wikipedia":10,"wild":[3,13,15],"wildcard":0,"wilder":15,"willing":13,"window":[5,6,10,13],"windowsil":15,"wipe":13,"wire":[4,5,6,10,14,15],"wireless":[4,8],"wirelessli":6,"wish":[0,6,12,13,15],"within":[0,2,3,6,8,9,12,15],"without":[0,2,3,4,6,7,8,10,12,13,14,15],"wlan0":6,"wolf":4,"won":0,"word":[2,15],"work":[2,4,5,6,8,10,12,13,14],"workabl":8,"workflow":5,"world":[2,4,6,8,10,13,14,15],"worri":8,"worth":2,"would":[3,6,9,10,12,13,15],"wrap":3,"write":[0,2,3,4,6,9,10,12,13,15],"write_timeout":0,"writer":[0,9],"written":[0,12,14,15],"wrong":[0,2,6,15],"wrote":[0,6],"x":[3,9,12,13],"x25519":[12,14],"xenon":0,"xonxoff":0,"y":[0,3],"ye":[2,3,6,12,13,15],"year":[12,15],"yet":[0,6,12,15],"yggdrasil":6,"yi":0,"you":[0,2,3,4,5,6,8,9,10,11,12,13,14,15],"your":[0,3,4,5,6,8,11,12,14,15],"yourself":[2,12,13,14,15],"z":0,"zen":[5,14],"zero":[5,6,9,10,14],"zi":0,"zim":10,"zip":3,"zone":12,"zshrc":2},"titles":["Code Examples","An Explanation of Reticulum for Human Beings","Getting Started Fast","Git Over Reticulum","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":4,"1":4,"25":6,"A":15,"Beings":1,"For":15,"In":15,"Not":[8,15],"Of":[5,15],"Or":15,"The":[3,12,13,15],"To":15,"With":[2,3],"abil":15,"access":[3,12],"ad":2,"address":[8,15],"agenc":15,"alias":3,"an":1,"anchor":15,"android":2,"announc":[0,6,12,15],"api":9,"architectur":15,"arm64":2,"auto":6,"autom":13,"automat":3,"ax":6,"backbon":[2,6],"bandwidth":15,"base":[2,4],"basic":12,"beam":4,"blackhol":13,"board":4,"bookworm":2,"bootstrap":2,"broadcast":0,"buffer":0,"build":[2,8],"burst":6,"byte":15,"can":14,"carrier":15,"center":15,"channel":0,"chat":10,"client":[6,10],"cloud":15,"code":[0,12],"combin":4,"command":3,"common":6,"commun":4,"concept":8,"conceptu":12,"configur":[3,6,13],"connect":[2,6,8,10],"consider":[6,8],"content":5,"contribut":2,"control":6,"cost":15,"creat":[2,3,4,12],"creation":3,"creator":3,"cryptograph":12,"current":[12,14],"custom":[0,2,3,6],"data":13,"death":15,"debian":2,"decentr":15,"deck":4,"depend":2,"design":15,"destin":[3,6,8,12],"detail":12,"develop":2,"devic":[4,14],"disconnect":15,"discov":13,"discover":6,"discoveri":6,"distribut":2,"document":3,"doe":14,"domain":15,"donat":11,"echo":[0,4],"emerg":15,"empti":3,"enabl":[3,6],"encrypt":15,"entrypoint":2,"environ":15,"establish":12,"ethernet":4,"ethic":15,"exampl":[0,3,6],"exist":15,"explan":1,"fabric":15,"fallaci":15,"fast":2,"featur":15,"feedback":11,"filesync":10,"filetransf":0,"find":2,"finish":15,"fix":13,"flow":15,"fork":3,"form":3,"format":[3,12],"forward":15,"from":15,"function":12,"further":12,"futur":12,"get":[2,12],"git":3,"global":2,"goal":12,"grade":15,"group":3,"hardwar":4,"harm":15,"health":2,"heltec":4,"heterogen":8,"hierarchi":3,"highlight":3,"host":2,"hostil":15,"human":[1,15],"i":[14,15],"i2p":6,"ident":[3,12,15],"identif":0,"illus":15,"implement":14,"implic":12,"improv":13,"includ":[2,13],"independ":15,"indic":5,"infrastructur":[2,15],"instal":[2,4],"instanc":[2,8],"interact":[3,10],"interfac":[0,2,6,10,12,13,14,15],"internet":2,"introduct":12,"introductori":8,"ip":15,"issu":2,"j":10,"kei":12,"kiss":6,"liber":15,"licens":7,"lilygo":4,"limit":[6,15],"line":[3,4],"link":[0,12],"list":13,"listen":6,"local":13,"locat":3,"lora":6,"lora32":4,"lunar":2,"lxmf":10,"lxmfy":10,"lxst":10,"maco":2,"manag":[3,13],"manual":[3,5],"mechan":12,"medium":15,"merit":15,"meshchatx":10,"method":3,"micron":10,"minim":0,"mirror":3,"mix":2,"mode":6,"modem":4,"modul":10,"motiv":12,"multi":6,"name":[12,13,15],"network":[2,3,5,8,10,12],"new":6,"node":[3,8,10,12,15],"nomad":[3,10,15],"note":2,"obtain":3,"offer":14,"open":15,"opencom":4,"openwrt":2,"option":6,"over":[2,3],"overview":[8,12],"packet":[4,12],"page":[3,10],"paramet":[3,6],"parser":10,"path":6,"pattern":15,"permiss":3,"person":[2,15],"phone":10,"physic":15,"pi":2,"pipe":6,"platform":2,"port":13,"portabl":15,"post":15,"power":15,"presenc":15,"preserv":15,"primit":12,"principl":15,"prioritis":12,"program":[2,10,13],"propag":12,"propos":3,"protocol":[10,12,15],"provid":11,"public":[2,12,15],"publish":13,"pure":2,"python":2,"radio":[2,4],"rak4631":4,"raspberri":2,"rate":6,"rbrowser":10,"reach":12,"refer":[9,12,14],"relai":10,"releas":3,"remot":[3,6,10,13],"repositori":3,"request":[0,6],"resolv":2,"resourc":[10,12],"respons":[0,2],"ret":2,"retibb":10,"reticulum":[1,2,3,4,5,7,10,11,12,13,14,15],"retipedia":10,"risc":2,"rn":10,"rncp":13,"rngit":[3,13],"rnid":13,"rnmon":10,"rnode":[4,6],"rnodeconf":13,"rnpath":13,"rnprobe":13,"rnsd":13,"rnsh":13,"rnstatu":13,"rnx":13,"roam":15,"rrc":10,"rule":12,"scarciti":15,"secur":6,"serial":[4,6,13],"serv":3,"server":6,"servic":13,"setup":12,"shell":10,"short":3,"sideband":10,"sign":3,"sky":15,"sourc":13,"sovereignti":15,"specif":[2,12],"stack":5,"standalon":2,"start":2,"state":3,"statist":3,"statu":14,"storag":3,"store":15,"strategi":2,"structur":3,"support":[4,11],"suprem":4,"synchron":3,"syntax":3,"system":[13,15],"systemwid":13,"t":4,"t114":4,"t3s3":4,"tabl":5,"tcp":6,"telephon":10,"templat":3,"through":15,"time":15,"tool":15,"transport":[8,12],"trust":15,"trustless":8,"try":2,"type":[3,4,12,14],"ubuntu":2,"udp":6,"uncentraliz":15,"understand":12,"unsign":4,"us":[2,10,12,13,14],"usag":[4,12],"userspac":13,"util":[2,3,10,13],"v":2,"v1":4,"v2":4,"v3":4,"v4":4,"valid":3,"verifi":3,"wai":2,"what":14,"where":14,"wifi":4,"window":2,"wire":12,"work":[3,15],"workflow":3,"x":4,"xl":4,"your":[2,13],"zen":15,"zero":15}}) \ No newline at end of file diff --git a/docs/markdown/git.md b/docs/markdown/git.md index ffc90ee3..3da7c9bf 100644 --- a/docs/markdown/git.md +++ b/docs/markdown/git.md @@ -6,7 +6,7 @@ The system consists of two parts: The `rngit` node that hosts repositories, and If you set a branch to track a Reticulum remote as the default upstream, you can simply use `git` as you normally would; all commands work transparently and as expected. -#### WARNING +#### IMPORTANT **The rngit program is a new addition to RNS!** This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible [permission system](#permissions) for allowing many users to interact with many different repositories on a single node, `rngit` has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public. ## The rngit Utility @@ -480,6 +480,66 @@ Targets can also use short forms: - Repository permissions: `//.allowed` - Document permissions: `/.work/.allowed` +## Remote Permission Management + +While permissions can be configured directly on the node by editing configuration files and `.allowed` files, `rngit` also supports remote permission management through the `rngit perms` command. This allows administrators to modify access controls for groups and repositories over Reticulum, without requiring shell access to the hosting node. + +To use remote permission management, you must have `admin` permission on the target group or repository. The command opens your configured `$EDITOR` to modify permissions, using the same syntax and format as local `.allowed` files. When you save and exit the editor, the modified permissions are transmitted to the remote node and applied immediately. + +### Managing Group Permissions + +To view or modify permissions for an entire repository group, specify the group URL (ending with the group name): + +```text +$ rngit perms rns://50824b711717f97c2fb1166ceddd5ea9/public +``` + +This retrieves the current permission configuration from the `public.allowed` file and opens it in your editor. Any changes you make are validated for syntax correctness. Invalid permission rules will be rejected with an error message indicating the problematic line. + +### Managing Repository Permissions + +To manage permissions for a specific repository, include the repository name in the URL: + +```text +$ rngit perms rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo +``` + +This operates on the `myrepo.allowed` file next to the repository. Repository-level permissions take precedence over group-level permissions, allowing fine-grained access control for individual repositories within a group. + +### Permission Validation + +When modifying permissions remotely, `rngit` validates that: + +- Each permission line follows the correct `permission:target` syntax +- Permission types are valid (r, w, rw, c, s, rel, i, p, adm) +- Target specifications are valid (identity hashes, `all`, or `none`) +- Identity hashes, when specified, are the correct length (32 hexadecimal characters) + +If validation fails, the editor will reopen with an error message describing the issue, allowing you to correct the problem before resubmitting. + +**All Command-Line Options (rngit perms)** + +```text +usage: rngit perms [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] + [-i PATH] [-v] [-q] [--version] + remote + +Reticulum Git Permission Manager + +positional arguments: + remote URL of remote group or repository + +options: + -h, --help show this help message and exit + --config CONFIG path to alternative config directory + --rnsconfig RNSCONFIG + path to alternative Reticulum config directory + -i, --identity PATH path to identity + -v, --verbose + -q, --quiet + --version show program's version number and exit +``` + ## Identity & Destination Aliases To make permission and remote destination management easier, you can locally define aliases for commonly used identity and destination hashes. Identity aliases used in permissions resolution can be defined in the `[aliases]` section of the `~/.rngit/config` file, while destination aliases are defined in the `[aliases]` section of the `~/.rngit/client_config` file. @@ -639,6 +699,167 @@ A complete node configuration might look like this: unicode_icons = no ``` +## Verified Releases + +The `rngit` release system provides cryptographic provenance and integrity guarantees through automatic signing of release artifacts and signed release manifests. When you create a release, `rngit` generates an Ed25519 signature for each artifact and embeds these signatures in a cryptographically signed release manifest (`.rsm` file). This allows anyone who obtains the release to verify its authenticity and integrity, regardless of how the files were distributed. + +### Obtaining Verified Releases + +The `rngit` system lets you obtain releases securely and in a verified manner, by validating cryptographically signed release manifests in the `.rsm` format during the retrieval process. Once a release has been published with `rngit`, anyone that has read access to it can obtain the release with the `rngit release` command, for example: + +```text +$ rngit release rns://remote_node/group/some_program fetch latest:all +``` + +This command will connect to the remote, retrieve the latest release manifest, verify it’s signature and integrity (you can optionally specify a required signer identity with `--signer`), and then download and sequentially verify all artifacts included in the release. + +If verification succeeds, the retrieved artifact files, along with the release manifest will be saved in the current working directory. From the above example, you would end up with a number of downloaded files, and a version- and package specific release manifest, such as `some_program_1.5.2.rsm`. + +#### IMPORTANT +Keeping the retrieved release manifest is a **very** good idea! It allows you to easily obtain future releases and updates to the software directly, while verifying they came from the same publisher. + +**Obtaining & Updating Releases Using RSM Manifests** + +One of the key features of the `rngit` release system is the ability to fetch and verify new releases using only a signed release manifest. This is particularly valuable for distributing software over Reticulum. Once someone has an `.rsm` manifest of your package, they can use it to continually retrieve and update the software. + +To fetch a release using a manifest: + +```text +$ rngit release some_program_1.5.2.rsm fetch latest:all +``` + +This command: + +1. Validates the manifest signature to confirm authenticity +2. Extracts the origin node and repository path from the signed manifest +3. Connects to the origin node over Reticulum +4. Gets the *latest* release manifest from the developer +5. Verifies it against the existing manifest +6. Fetches each artifact listed in the manifest +7. Verifies each downloaded file against the signature embedded in the manifest + +If any artifact fails signature verification, the fetch aborts with an error, preventing the installation of corrupted or tampered files. + +**Specifying Required Signers** + +You can require that releases be signed by specific identities. When fetching a release, use the `--signer` option to specify the identity hash of the required signer: + +```text +$ rngit release rns://remote_node/public/myrepo fetch latest:all --signer 21a8daa6d9c3d3b8aab6e94b6bcb0e33 +``` + +If the release was not signed by the specified identity, the fetch will abort before any files are downloaded. Likewise, if any downloaded artifacts were not signed by the required identity, the process will abort at the first invalid signature. This provides strong guarantees about the provenance of the software you are installing. + +The signer check also works when fetching from a local manifest: + +```text +$ rngit release manifest.rsm fetch latest:all --signer 21a8daa6d9c3d3b8aab6e94b6bcb0e33 +``` + +**Selective & Partial Fetches** + +You can fetch individual artifacts from a release by specifying the artifact name instead of `all`: + +```text +$ rngit release rns://remote_node/public/myrepo fetch 1.2.0:myapp-1.2.0.tar.gz +``` + +This downloads only the specified artifact and verifies its signature against the manifest. If a file already exists locally, `rngit` verifies it against the manifest signature and skips the download if valid, making it safe to run the command multiple times. When fetching releases, `rngit release` will only download files that are missing or invalid according to the manifest. This means that partially completed release fetches can be continued later, if interrupted. + +**Offline Verification** + +Because the release manifest contains embedded signatures, you can verify the integrity of release artifacts offline, without connecting to the repository node. The `rnid` and `rngit` utilities can validate artifact signatures against `.rsg` and manifest files. + +**For individual files:** + +Ensure the `.rsg` signature is located in the same directory as the release artifact, then run: + +```text +$ rnid -V myapp-1.2.0.tar.gz +``` + +This validates that the artifact file matches the signature created during the release process. Combined with the manifest’s own signature, this provides end-to-end verification from the original release creation to the final installation. + +**For a complete release:** + +Ensure the release manifest is located in the same directory as the release artifacts, then run: + +```text +$ rngit release myapp-1.2.0.rsm --offline +``` + +This will load the manifest, and verify all files currently on-disk, but will not attempt to fetch the latest release manifest from the origin, or update local files to match it. + +### Creating Signed Releases + +Reticulum and the `rngit` system makes it easy to create signed releases that your users can verify and update securely. When you create a release using `rngit`, the program automatically: + +1. Generates an Ed25519 signature for each artifact file using your identity’s signing key +2. Creates `.rsg` signature files alongside each artifact in your distribution directory +3. Constructs a signed release manifest (`manifest.rsm`) containing metadata, an artifact list, and embedded signatures +4. Transmits both artifacts, signatures and manifest to the remote node specified as release origin + +As an example, to create and publish a release from all files in the folder named `dist`, simply run: + +```text +$ rngit release rns://my_node/group/myrepo create 1.2.0:./dist +``` + +Everything is automatically signed and uploaded to your node, and the release manifest will now include the following signed attestation information: + +- Package name and version +- The release notes for this release +- Release timestamp and commit hash +- Origin node identity and repository path +- Complete list of artifacts +- Embedded signatures for each artifact + +That’s it, there’s nothing more to it than one command. Users can now securely obtain your release using `rngit release fetch`. + +**Release Manifest Format** + +Release manifests use the `.rsm` format (a general-purpose, structured signed message format) and are themselves cryptographically signed documents. The manifest format embeds the signing identity’s public key and a detached signature that covers the entire manifest content. This creates a chain of trust: the manifest signature proves the manifest’s authenticity, and the embedded artifact signatures prove each file’s integrity. + +When a release is created, the manifest is stored as `manifest.rsm` in the release artifacts directory. You can also generate a local release manifest without uploading by using the `--local` flag: + +```text +$ rngit release rns://f2d31b2e080e5d4e358d32822ee4a3b7/public/myrepo create 1.2.0:./dist --local +``` + +This creates the `.rsg` signature files and `manifest.rsm` in your local distribution directory without connecting to the remote node, allowing you to inspect or distribute the signed release through alternative channels. + +**Signature File Format** + +Individual artifact signatures use the Reticulum Signature (`.rsg`) format and contain: + +- The Ed25519 signature of the file +- The signing identity’s public key +- Optional metadata, such as timestamps or notes + +These signature files are created automatically during the release process and can be used independently of the manifest for verification purposes. The `rnid` utility can create and validate RSG signatures for any file, making this signature format useful beyond the `rngit` release system. + +**Good Practices for Signature Distribution** + +While release manifests in the `.rsm` format *include* embedded `.rsg` signatures for every listed artifact, it is dependent on the situation and requirements whether individual `.rsg` signatures are distributed as well. It is generally a good idea to do so, since they are very light-weight, and provide an easy and convenient way to validate and authenticate *individual* files, as opposed to entire releases. + +When distributing software through multiple channels (direct download, mirror networks, physical media), including the `.rsm` manifest allows recipients to verify authenticity regardless of how they obtained the files. This is particularly valuable in low-connectivity environments where Reticulum may be the only available communication channel, as the manifest ensures that software updates can be verified even when received via store-and-forward mechanisms or physical media transport. + +**Integration with Package Management** + +While this functionality is still under development, the signed release manifest format is designed to be consumed by package management systems and automated deployment tools. Because the manifest is cryptographically signed and contains all necessary metadata and integrity checks, it can serve as a trusted source of truth for software distribution, even when fetched over untrusted channels or stored for long periods. + +**Release Encryption** + +While API primitives and command-line tools are currently not implemented for this, the release, distribution and verification system has been designed to also support *encrypted* releases, which can be distributed securely to authorized recipients. + +**Verified Package Format** + +The current system is being expanded to also include an `.rvp` package format, which can contain packaged releases including all relevant artifacts, metadata, manifest and signatures. + +**Automated Mirror Discovery** + +The `rngit` release system is designed to support automated mirror discovery and distribution package retrieval over Reticulum networks. Since everything is cryptographically signed and verified, it is possible to create automated mirror and distribution networks, where users can obtain software and information from local sources, without risking malicious modifications to the software they rely on. This functionality is currently in development. + ## Release Management In addition to hosting Git repositories, `rngit` provides a complete release management system. This allows you to publish versioned releases with associated artifacts, release notes and metadata. Releases are managed through the `rngit release` subcommand, and are also viewable through the Nomad Network page interface. @@ -650,12 +871,12 @@ Creating a release involves specifying a Git tag and a directory containing buil To create a release, specify the tag name and path to artifacts: ```text -$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create v1.2.0:./dist +$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create 1.2.0:./dist ``` This will: -1. Verify that the tag `v1.2.0` exists in the repository +1. Verify that the tag `1.2.0` exists in the repository 2. Open your editor to write release notes 3. Upload all files from the `./dist` directory 4. Publish the release @@ -682,9 +903,9 @@ $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo list Tag Status Created Objs Notes ------------------------------------------------------------------ -v1.2.0 published 2025-01-15 14:32 3 Another release -v1.1.0 published 2024-12-03 09:15 2 Bug fix release -v1.0.0 published 2024-10-20 16:45 2 Initial release +1.2.0 published 2025-01-15 14:32 3 Another release +1.1.0 published 2024-12-03 09:15 2 Bug fix release +1.0.0 published 2024-10-20 16:45 2 Initial release ``` **Viewing Release Details** @@ -692,9 +913,9 @@ v1.0.0 published 2024-10-20 16:45 2 Initial release To see full information about a specific release: ```text -$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo view v1.2.0 +$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo view 1.2.0 -Release : 0.9.2 +Release : 1.2.0 Status : published Created : 2026-05-04 23:53:09 Thanks : 5 @@ -711,15 +932,35 @@ Artifacts (4) - checksums.txt (256 B) ``` +**Fetching Releases** + +To fetch a release, specify the remote URL, version and artifacts: + +```text +$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo fetch latest:all +``` + +This process is described in greater detail in the [Obtaining Verified Releases](#git-release-obtain) section. + +**Creating Releases** + +To fetch a release, specify the remote URL, version and artifacts: + +```text +$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create 1.3.9:artifacts_dir +``` + +This process is described in greater detail in the [Creating Signed Releases](#git-release-create) section. + **Deleting Releases** To remove a release: ```text -$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo delete v1.2.0 +$ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo delete 1.2.0 -Are you sure you want to delete release 'v1.2.0'? [y/N]: y -Release v1.2.0 deleted +Are you sure you want to delete release '1.2.0'? [y/N]: y +Release 1.2.0 deleted ``` **Requirements & Validation** @@ -747,15 +988,16 @@ When the Nomad Network page node is enabled, releases are displayed on a dedicat **All Command-Line Options (rngit release)** ```text -usage: rngit release [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] - [-i PATH] [-v] [-q] [--version] - [repository] [operation] [target] +usage: python -m RNS.Utilities.rngit.server [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] + [-i PATH] [-s PATH] [-n name] [-L] + [-o] [-v] [-q] [--version] + [repository] [operation] [target] Reticulum Git Release Manager positional arguments: - repository URL of remote repository - operation list, view, create or delete + repository URL of remote repository, or path to RSM manifest + operation list, view, fetch, create, latest or delete target tag and path to release artifacts directory options: @@ -764,6 +1006,10 @@ options: --rnsconfig RNSCONFIG path to alternative Reticulum config directory -i, --identity PATH path to release identity + -s, --signer PATH path to signing identity, if different from release identity + -n, --name name package name if different from repo name + -L, --local generate release locally, but don't upload + -o, --offline verify manifest locally, but don't fetch updates -v, --verbose -q, --quiet --version show program's version number and exit diff --git a/docs/markdown/index.md b/docs/markdown/index.md index 5bcd3f2f..77678e91 100644 --- a/docs/markdown/index.md +++ b/docs/markdown/index.md @@ -209,6 +209,10 @@ to participate in the development of Reticulum itself. * [Permission Examples](git.md#permission-examples) * [Permission Short Forms](git.md#permission-short-forms) * [Permission Configuration Locations](git.md#permission-configuration-locations) + * [Remote Permission Management](git.md#remote-permission-management) + * [Managing Group Permissions](git.md#managing-group-permissions) + * [Managing Repository Permissions](git.md#managing-repository-permissions) + * [Permission Validation](git.md#permission-validation) * [Identity & Destination Aliases](git.md#identity-destination-aliases) * [Serving Pages Over Nomad Network](git.md#serving-pages-over-nomad-network) * [Enabling the Git Page Node](git.md#enabling-the-git-page-node) @@ -217,6 +221,9 @@ to participate in the development of Reticulum itself. * [Customizing Templates](git.md#customizing-templates) * [Repository Statistics](git.md#repository-statistics) * [Configuration Example](git.md#configuration-example) + * [Verified Releases](git.md#verified-releases) + * [Obtaining Verified Releases](git.md#obtaining-verified-releases) + * [Creating Signed Releases](git.md#creating-signed-releases) * [Release Management](git.md#release-management) * [The Release Workflow](git.md#the-release-workflow) * [Release Storage & Structure](git.md#release-storage-structure) diff --git a/docs/source/git.rst b/docs/source/git.rst index 6ba2f285..51faf555 100644 --- a/docs/source/git.rst +++ b/docs/source/git.rst @@ -10,7 +10,7 @@ The system consists of two parts: The ``rngit`` node that hosts repositories, an If you set a branch to track a Reticulum remote as the default upstream, you can simply use ``git`` as you normally would; all commands work transparently and as expected. -.. warning:: +.. important:: **The rngit program is a new addition to RNS!** This functionality was introduced in RNS 1.2.0. While great care has been taken to design a secure, but highly configurable and flexible `permission system`_ for allowing many users to interact with many different repositories on a single node, ``rngit`` has not been tested extensively in the wild! Be careful when hosting repositories, especially if they are public or semi-public. .. _permission system: #permissions @@ -321,8 +321,6 @@ These parameters are used by the sync system and can be queried using standard G 1716230400 - - Repository Structure ==================== @@ -511,6 +509,75 @@ Permission Configuration Locations - Repository permissions: ``//.allowed`` - Document permissions: ``/.work/.allowed`` + +Remote Permission Management +============================ + +While permissions can be configured directly on the node by editing configuration files and ``.allowed`` files, ``rngit`` also supports remote permission management through the ``rngit perms`` command. This allows administrators to modify access controls for groups and repositories over Reticulum, without requiring shell access to the hosting node. + +To use remote permission management, you must have ``admin`` permission on the target group or repository. The command opens your configured ``$EDITOR`` to modify permissions, using the same syntax and format as local ``.allowed`` files. When you save and exit the editor, the modified permissions are transmitted to the remote node and applied immediately. + +Managing Group Permissions +-------------------------- + +To view or modify permissions for an entire repository group, specify the group URL (ending with the group name): + +.. code:: text + + $ rngit perms rns://50824b711717f97c2fb1166ceddd5ea9/public + +This retrieves the current permission configuration from the ``public.allowed`` file and opens it in your editor. Any changes you make are validated for syntax correctness. Invalid permission rules will be rejected with an error message indicating the problematic line. + +Managing Repository Permissions +------------------------------- + +To manage permissions for a specific repository, include the repository name in the URL: + +.. code:: text + + $ rngit perms rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo + +This operates on the ``myrepo.allowed`` file next to the repository. Repository-level permissions take precedence over group-level permissions, allowing fine-grained access control for individual repositories within a group. + +Permission Validation +--------------------- + +When modifying permissions remotely, ``rngit`` validates that: + +- Each permission line follows the correct ``permission:target`` syntax +- Permission types are valid (r, w, rw, c, s, rel, i, p, adm) +- Target specifications are valid (identity hashes, ``all``, or ``none``) +- Identity hashes, when specified, are the correct length (32 hexadecimal characters) + +If validation fails, the editor will reopen with an error message describing the issue, allowing you to correct the problem before resubmitting. + +.. caution:: + Remote permission modification requires administrative access (the ``adm`` permission), which grants full control over the repository or group. The permission change request is transmitted over the encrypted Reticulum link, and the remote node verifies your identity cryptographically before applying changes. However, be aware that granting ``adm`` permissions to remote identities effectively delegates full control, including the ability to revoke your own access or modify permissions in ways you may not anticipate. + +**All Command-Line Options (rngit perms)** + +.. code:: text + + usage: rngit perms [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] + [-i PATH] [-v] [-q] [--version] + remote + + Reticulum Git Permission Manager + + positional arguments: + remote URL of remote group or repository + + options: + -h, --help show this help message and exit + --config CONFIG path to alternative config directory + --rnsconfig RNSCONFIG + path to alternative Reticulum config directory + -i, --identity PATH path to identity + -v, --verbose + -q, --quiet + --version show program's version number and exit + + Identity & Destination Aliases ============================== @@ -679,6 +746,175 @@ A complete node configuration might look like this: unicode_icons = no +Verified Releases +================= + +The ``rngit`` release system provides cryptographic provenance and integrity guarantees through automatic signing of release artifacts and signed release manifests. When you create a release, ``rngit`` generates an Ed25519 signature for each artifact and embeds these signatures in a cryptographically signed release manifest (``.rsm`` file). This allows anyone who obtains the release to verify its authenticity and integrity, regardless of how the files were distributed. + +.. _git-release-obtain: + +Obtaining Verified Releases +--------------------------- + +The ``rngit`` system lets you obtain releases securely and in a verified manner, by validating cryptographically signed release manifests in the ``.rsm`` format during the retrieval process. Once a release has been published with ``rngit``, anyone that has read access to it can obtain the release with the ``rngit release`` command, for example: + +.. code:: text + + $ rngit release rns://remote_node/group/some_program fetch latest:all + +This command will connect to the remote, retrieve the latest release manifest, verify it's signature and integrity (you can optionally specify a required signer identity with ``--signer``), and then download and sequentially verify all artifacts included in the release. + +If verification succeeds, the retrieved artifact files, along with the release manifest will be saved in the current working directory. From the above example, you would end up with a number of downloaded files, and a version- and package specific release manifest, such as ``some_program_1.5.2.rsm``. + +.. important:: + Keeping the retrieved release manifest is a **very** good idea! It allows you to easily obtain future releases and updates to the software directly, while verifying they came from the same publisher. + +**Obtaining & Updating Releases Using RSM Manifests** + +One of the key features of the ``rngit`` release system is the ability to fetch and verify new releases using only a signed release manifest. This is particularly valuable for distributing software over Reticulum. Once someone has an ``.rsm`` manifest of your package, they can use it to continually retrieve and update the software. + +To fetch a release using a manifest: + +.. code:: text + + $ rngit release some_program_1.5.2.rsm fetch latest:all + +This command: + +1. Validates the manifest signature to confirm authenticity +2. Extracts the origin node and repository path from the signed manifest +3. Connects to the origin node over Reticulum +4. Gets the *latest* release manifest from the developer +5. Verifies it against the existing manifest +6. Fetches each artifact listed in the manifest +7. Verifies each downloaded file against the signature embedded in the manifest + +If any artifact fails signature verification, the fetch aborts with an error, preventing the installation of corrupted or tampered files. + +**Specifying Required Signers** + +You can require that releases be signed by specific identities. When fetching a release, use the ``--signer`` option to specify the identity hash of the required signer: + +.. code:: text + + $ rngit release rns://remote_node/public/myrepo fetch latest:all --signer 21a8daa6d9c3d3b8aab6e94b6bcb0e33 + +If the release was not signed by the specified identity, the fetch will abort before any files are downloaded. Likewise, if any downloaded artifacts were not signed by the required identity, the process will abort at the first invalid signature. This provides strong guarantees about the provenance of the software you are installing. + +The signer check also works when fetching from a local manifest: + +.. code:: text + + $ rngit release manifest.rsm fetch latest:all --signer 21a8daa6d9c3d3b8aab6e94b6bcb0e33 + +**Selective & Partial Fetches** + +You can fetch individual artifacts from a release by specifying the artifact name instead of ``all``: + +.. code:: text + + $ rngit release rns://remote_node/public/myrepo fetch 1.2.0:myapp-1.2.0.tar.gz + +This downloads only the specified artifact and verifies its signature against the manifest. If a file already exists locally, ``rngit`` verifies it against the manifest signature and skips the download if valid, making it safe to run the command multiple times. When fetching releases, ``rngit release`` will only download files that are missing or invalid according to the manifest. This means that partially completed release fetches can be continued later, if interrupted. + +**Offline Verification** + +Because the release manifest contains embedded signatures, you can verify the integrity of release artifacts offline, without connecting to the repository node. The ``rnid`` and ``rngit`` utilities can validate artifact signatures against ``.rsg`` and manifest files. + +**For individual files:** + +Ensure the ``.rsg`` signature is located in the same directory as the release artifact, then run: + +.. code:: text + + $ rnid -V myapp-1.2.0.tar.gz + +This validates that the artifact file matches the signature created during the release process. Combined with the manifest's own signature, this provides end-to-end verification from the original release creation to the final installation. + +**For a complete release:** + +Ensure the release manifest is located in the same directory as the release artifacts, then run: + +.. code:: text + + $ rngit release myapp-1.2.0.rsm --offline + +This will load the manifest, and verify all files currently on-disk, but will not attempt to fetch the latest release manifest from the origin, or update local files to match it. + +.. _git-release-create: + +Creating Signed Releases +------------------------ + +Reticulum and the ``rngit`` system makes it easy to create signed releases that your users can verify and update securely. When you create a release using ``rngit``, the program automatically: + +1. Generates an Ed25519 signature for each artifact file using your identity's signing key +2. Creates ``.rsg`` signature files alongside each artifact in your distribution directory +3. Constructs a signed release manifest (``manifest.rsm``) containing metadata, an artifact list, and embedded signatures +4. Transmits both artifacts, signatures and manifest to the remote node specified as release origin + +As an example, to create and publish a release from all files in the folder named ``dist``, simply run: + +.. code:: text + + $ rngit release rns://my_node/group/myrepo create 1.2.0:./dist + +Everything is automatically signed and uploaded to your node, and the release manifest will now include the following signed attestation information: + +- Package name and version +- The release notes for this release +- Release timestamp and commit hash +- Origin node identity and repository path +- Complete list of artifacts +- Embedded signatures for each artifact + +That's it, there's nothing more to it than one command. Users can now securely obtain your release using ``rngit release fetch``. + +**Release Manifest Format** + +Release manifests use the ``.rsm`` format (a general-purpose, structured signed message format) and are themselves cryptographically signed documents. The manifest format embeds the signing identity's public key and a detached signature that covers the entire manifest content. This creates a chain of trust: the manifest signature proves the manifest's authenticity, and the embedded artifact signatures prove each file's integrity. + +When a release is created, the manifest is stored as ``manifest.rsm`` in the release artifacts directory. You can also generate a local release manifest without uploading by using the ``--local`` flag: + +.. code:: text + + $ rngit release rns://f2d31b2e080e5d4e358d32822ee4a3b7/public/myrepo create 1.2.0:./dist --local + +This creates the ``.rsg`` signature files and ``manifest.rsm`` in your local distribution directory without connecting to the remote node, allowing you to inspect or distribute the signed release through alternative channels. + +**Signature File Format** + +Individual artifact signatures use the Reticulum Signature (``.rsg``) format and contain: + +- The Ed25519 signature of the file +- The signing identity's public key +- Optional metadata, such as timestamps or notes + +These signature files are created automatically during the release process and can be used independently of the manifest for verification purposes. The ``rnid`` utility can create and validate RSG signatures for any file, making this signature format useful beyond the ``rngit`` release system. + +**Good Practices for Signature Distribution** + +While release manifests in the ``.rsm`` format *include* embedded ``.rsg`` signatures for every listed artifact, it is dependent on the situation and requirements whether individual ``.rsg`` signatures are distributed as well. It is generally a good idea to do so, since they are very light-weight, and provide an easy and convenient way to validate and authenticate *individual* files, as opposed to entire releases. + +When distributing software through multiple channels (direct download, mirror networks, physical media), including the ``.rsm`` manifest allows recipients to verify authenticity regardless of how they obtained the files. This is particularly valuable in low-connectivity environments where Reticulum may be the only available communication channel, as the manifest ensures that software updates can be verified even when received via store-and-forward mechanisms or physical media transport. + +**Integration with Package Management** + +While this functionality is still under development, the signed release manifest format is designed to be consumed by package management systems and automated deployment tools. Because the manifest is cryptographically signed and contains all necessary metadata and integrity checks, it can serve as a trusted source of truth for software distribution, even when fetched over untrusted channels or stored for long periods. + +**Release Encryption** + +While API primitives and command-line tools are currently not implemented for this, the release, distribution and verification system has been designed to also support *encrypted* releases, which can be distributed securely to authorized recipients. + +**Verified Package Format** + +The current system is being expanded to also include an ``.rvp`` package format, which can contain packaged releases including all relevant artifacts, metadata, manifest and signatures. + +**Automated Mirror Discovery** + +The ``rngit`` release system is designed to support automated mirror discovery and distribution package retrieval over Reticulum networks. Since everything is cryptographically signed and verified, it is possible to create automated mirror and distribution networks, where users can obtain software and information from local sources, without risking malicious modifications to the software they rely on. This functionality is currently in development. + + Release Management ================== @@ -693,11 +929,11 @@ To create a release, specify the tag name and path to artifacts: .. code:: text - $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create v1.2.0:./dist + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create 1.2.0:./dist This will: -1. Verify that the tag ``v1.2.0`` exists in the repository +1. Verify that the tag ``1.2.0`` exists in the repository 2. Open your editor to write release notes 3. Upload all files from the ``./dist`` directory 4. Publish the release @@ -728,9 +964,9 @@ To view all releases for a repository: Tag Status Created Objs Notes ------------------------------------------------------------------ - v1.2.0 published 2025-01-15 14:32 3 Another release - v1.1.0 published 2024-12-03 09:15 2 Bug fix release - v1.0.0 published 2024-10-20 16:45 2 Initial release + 1.2.0 published 2025-01-15 14:32 3 Another release + 1.1.0 published 2024-12-03 09:15 2 Bug fix release + 1.0.0 published 2024-10-20 16:45 2 Initial release **Viewing Release Details** @@ -738,9 +974,9 @@ To see full information about a specific release: .. code:: text - $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo view v1.2.0 + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo view 1.2.0 - Release : 0.9.2 + Release : 1.2.0 Status : published Created : 2026-05-04 23:53:09 Thanks : 5 @@ -756,16 +992,37 @@ To see full information about a specific release: - myapp-1.2.0.zip (1.6 MB) - checksums.txt (256 B) + +**Fetching Releases** + +To fetch a release, specify the remote URL, version and artifacts: + +.. code:: text + + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo fetch latest:all + +This process is described in greater detail in the :ref:`Obtaining Verified Releases` section. + +**Creating Releases** + +To fetch a release, specify the remote URL, version and artifacts: + +.. code:: text + + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo create 1.3.9:artifacts_dir + +This process is described in greater detail in the :ref:`Creating Signed Releases` section. + **Deleting Releases** To remove a release: .. code:: text - $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo delete v1.2.0 + $ rngit release rns://50824b711717f97c2fb1166ceddd5ea9/public/myrepo delete 1.2.0 - Are you sure you want to delete release 'v1.2.0'? [y/N]: y - Release v1.2.0 deleted + Are you sure you want to delete release '1.2.0'? [y/N]: y + Release 1.2.0 deleted **Requirements & Validation** @@ -793,15 +1050,16 @@ When the Nomad Network page node is enabled, releases are displayed on a dedicat .. code:: text - usage: rngit release [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] - [-i PATH] [-v] [-q] [--version] - [repository] [operation] [target] + usage: python -m RNS.Utilities.rngit.server [-h] [--config CONFIG] [--rnsconfig RNSCONFIG] + [-i PATH] [-s PATH] [-n name] [-L] + [-o] [-v] [-q] [--version] + [repository] [operation] [target] Reticulum Git Release Manager positional arguments: - repository URL of remote repository - operation list, view, create or delete + repository URL of remote repository, or path to RSM manifest + operation list, view, fetch, create, latest or delete target tag and path to release artifacts directory options: @@ -810,6 +1068,10 @@ When the Nomad Network page node is enabled, releases are displayed on a dedicat --rnsconfig RNSCONFIG path to alternative Reticulum config directory -i, --identity PATH path to release identity + -s, --signer PATH path to signing identity, if different from release identity + -n, --name name package name if different from repo name + -L, --local generate release locally, but don't upload + -o, --offline verify manifest locally, but don't fetch updates -v, --verbose -q, --quiet --version show program's version number and exit