diff --git a/build.py b/build.py
index 3664c62..9e1c0aa 100644
--- a/build.py
+++ b/build.py
@@ -1,10 +1,10 @@
import markdown
import os
-SOURCES_PATH="./source"
-BUILD_PATH="./build"
-INPUT_ENCODING="utf-8"
-OUTPUT_ENCODING="utf-8"
+SOURCES_PATH = "./source"
+BUILD_PATH = "./build"
+INPUT_ENCODING = "utf-8"
+OUTPUT_ENCODING = "utf-8"
document_start = """
@@ -32,6 +32,7 @@ langs = [
{"name": "English", "ext": "en"},
{"name": "Nederlands", "ext": "nl"},
{"name": "Polski", "ext": "pl"},
+ {"name": "Español", "ext": "es"},
{"name": "Português", "ext": "pt-br"},
{"name": "Türkçe", "ext": "tr"},
{"name": "日本語", "ext": "jp"},
@@ -93,7 +94,8 @@ menu_translations = {
"CREDITS": "Credits",
"SOURCE": "Quellcode",
"DONATE": "Unterstützen",
- },"pl": {
+ },
+ "pl": {
"RETICULUM": "Reticulum",
"START": "Jak Zacząć",
"HARDWARE": "Hardware",
@@ -115,6 +117,17 @@ menu_translations = {
"SOURCE": "Código",
"DONATE": "Ajude",
},
+ "es": {
+ "RETICULUM": "Reticulum",
+ "START": "Empezas",
+ "HARDWARE": "Hardware",
+ "TESTNET": "Testnet",
+ "MANUAL": "Manual",
+ "CRYPTO": "Crypto",
+ "CREDITS": "Creditos",
+ "SOURCE": "Código fuente",
+ "DONATE": "Donar",
+ },
"zh-cn": {
"RETICULUM": "Reticulum",
"START": "开始使用",
@@ -125,9 +138,10 @@ menu_translations = {
"CREDITS": "致谢",
"SOURCE": "源代码",
"DONATE": "支持开发",
- }
+ },
}
+
def get_page_lang(page):
page_lang = primary_lang
for lang in langs:
@@ -137,11 +151,12 @@ def get_page_lang(page):
page_lang = lang["ext"]
return page_lang
+
def get_languages_md(page):
page = page.replace(SOURCES_PATH, ".")
current_page_lang = get_page_lang(page)
if current_page_lang != primary_lang:
- page_base_name = page.replace("_"+current_page_lang+".md", "")
+ page_base_name = page.replace("_" + current_page_lang + ".md", "")
else:
page_base_name = page.replace(".md", "")
@@ -150,12 +165,12 @@ def get_languages_md(page):
lang = lang_entry["name"]
lang_ext = lang_entry["ext"]
if lang_ext != primary_lang:
- lang_ext_str = "_"+lang_ext
+ lang_ext_str = "_" + lang_ext
else:
lang_ext_str = ""
- link_target = page_base_name+lang_ext_str+".html"
- link_md = "["+lang+"]("+link_target+") | "
+ link_target = page_base_name + lang_ext_str + ".html"
+ link_md = "[" + lang + "](" + link_target + ") | "
lang_list += link_md
return langs_md.replace("{LANGS}", lang_list[:-3])
@@ -164,25 +179,37 @@ def get_languages_md(page):
def get_menu_md(lang):
local_menu_md = menu_md
for entry in menu_translations[lang]:
- local_menu_md = local_menu_md.replace("{"+entry+"}", menu_translations[lang][entry])
+ local_menu_md = local_menu_md.replace(
+ "{" + entry + "}", menu_translations[lang][entry]
+ )
return local_menu_md
+
def scan_pages(base_path):
- files = [file for file in os.listdir(base_path) if os.path.isfile(os.path.join(base_path, file)) and file[:1] != "."]
- directories = [file for file in os.listdir(base_path) if os.path.isdir(os.path.join(base_path, file)) and file[:1] != "."]
+ files = [
+ file
+ for file in os.listdir(base_path)
+ if os.path.isfile(os.path.join(base_path, file)) and file[:1] != "."
+ ]
+ directories = [
+ file
+ for file in os.listdir(base_path)
+ if os.path.isdir(os.path.join(base_path, file)) and file[:1] != "."
+ ]
page_sources = []
for file in files:
if file.endswith(".md"):
- page_sources.append(base_path+"/"+file)
+ page_sources.append(base_path + "/" + file)
for directory in directories:
- page_sources.append(scan_pages(base_path+"/"+directory))
+ page_sources.append(scan_pages(base_path + "/" + directory))
return page_sources
+
source_files = scan_pages(SOURCES_PATH)
for mdf in source_files:
@@ -190,15 +217,17 @@ for mdf in source_files:
page_lang = get_page_lang(mdf)
if page_lang != primary_lang:
- page_lang_ext = "_"+page_lang
+ page_lang_ext = "_" + page_lang
else:
page_lang_ext = ""
md = f.read().decode(INPUT_ENCODING)
- page_md = "
"+get_languages_md(mdf)+""+get_menu_md(page_lang).replace("{LANG_EXT}", page_lang_ext) + "\n\n" + md
- html = markdown.markdown(page_md, extensions=["markdown.extensions.fenced_code"])
+ page_md = "" + get_languages_md(mdf) + "" + get_menu_md(page_lang).replace("{LANG_EXT}", page_lang_ext) + "\n\n" + md
+ html = markdown.markdown(
+ page_md, extensions=["markdown.extensions.fenced_code"]
+ )
html = document_start + html + document_end
- of = BUILD_PATH+mdf.replace(SOURCES_PATH, "").replace(".md", ".html")
+ of = BUILD_PATH + mdf.replace(SOURCES_PATH, "").replace(".md", ".html")
with open(of, "wb") as wf:
wf.write(html.encode(OUTPUT_ENCODING))
diff --git a/source/connect_es.md b/source/connect_es.md
new file mode 100644
index 0000000..9992a1f
--- /dev/null
+++ b/source/connect_es.md
@@ -0,0 +1,35 @@
+# Testnet publica
+
+
+Si sólo quiere empezar a experimentar sin construir ninguna red física, le invitamos a unirse a la red pública de pruebas de Reticulum.
+La red de pruebas es precisamente eso, una red informal para probar y experimentar. Estará activa la mayor parte del tiempo y cualquiera puede unirse a ella, pero esto también significa que no hay garantías de disponibilidad del servicio.
+
+La red de pruebas ejecuta la últimisima versión de Reticulum (a menudo incluso un poco antes de su lanzamiento público). A veces pueden desplegarse versiones experimentales de Reticulum en nodos de la red de pruebas, lo que significa que pueden producirse comportamientos extraños. Si nada de esto le asusta, puede unirse a la red de prueba a través de TCP o I2P.
+
+Sólo tiene que añadir una de las siguientes interfaces a su archivo de configuración de Reticulum:
+
+```
+# TCP/IP interfaz al Dublin Hub
+ [[RNS Testnet Dublin]]
+ type = TCPClientInterface
+ enabled = yes
+ target_host = dublin.connect.reticulum.network
+ target_port = 4965
+
+# TCP/IP interfaz al BetweenTheBorders Hub (proporcionado por la comunidad)
+ [[RNS Testnet BetweenTheBorders]]
+ type = TCPClientInterface
+ enabled = yes
+ target_host = betweentheborders.com
+ target_port = 4242
+
+# Interfaz a I2P Hub A
+ [[RNS Testnet I2P Hub A]]
+ type = I2PInterface
+ enabled = yes
+ peers = g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq.b32.i2p
+```
+
+La red de pruebas también contiene varios nodos de [Nomad Network](https://github.com/markqvist/nomadnet), y nodos de propagación [LXMF](https://github.com/markqvist/lxmf).
+
+Siguiente tema: Leer el manual
diff --git a/source/credits_es.md b/source/credits_es.md
new file mode 100644
index 0000000..374e245
--- /dev/null
+++ b/source/credits_es.md
@@ -0,0 +1,28 @@
+# Agradecimientos y créditos
+
+Reticulum sólo puede existir gracias a la montaña de trabajo de código abierto sobre la que se construyó, a las contribuciones de todos los implicados y a todos los que han apoyado el proyecto a lo largo de los años. A todos los que han ayudado, muchas gracias.
+
+Otros módulos y proyectos forman parte o son utilizados por Reticulum. Nuestro más sincero agradecimiento a los autores y colaboradores de los siguientes proyectos:
+
+- [PyCA/cryptography](https://github.com/pyca/cryptography), *Licencia BSD*
+- [Pure-25519](https://github.com/warner/python-pure25519) por [Brian Warner](https://github.com/warner), *Licencia MIT*
+- [Pysha2](https://github.com/thomdixon/pysha2) por [Thom Dixon](https://github.com/thomdixon), *Licencia MIT*
+- [Python-AES](https://github.com/orgurar/python-aes) por [Or Gur Arie](https://github.com/orgurar), *Licencia MIT*
+- [Curve25519.py](https://gist.github.com/nickovs/cc3c22d15f239a2640c185035c06f8a3#file-curve25519-py) por [Nicko van Someren](https://gist.github.com/nickovs), *Public Domain*
+- [I2Plib](https://github.com/l-n-s/i2plib) por [Viktor Villainov](https://github.com/l-n-s)
+- [PySerial](https://github.com/pyserial/pyserial) por Chris Liechti, * Licencia BSD*
+- [Netifaces](https://github.com/al45tair/netifaces) por [Alastair Houghton](https://github.com/al45tair), *Licencia MIT*
+- [Configobj](https://github.com/DiffSK/configobj) por Michael Foord, Nicola Larosa, Rob Dennis & Eli Courtwright, *Licencia BSD*
+- [Six](https://github.com/benjaminp/six) por [Benjamin Peterson](https://github.com/benjaminp), *Licencia MIT*
+- [Umsgpack.py](https://github.com/vsergeev/u-msgpack-python) por [Ivan A. Sergeev](https://github.com/vsergeev)
+- [Python](https://www.python.org)
+
+El diseño del protocolo y la implementación de referencia para Reticulum se llevaron a cabo entre 2014 y 2022 por Mark Qvist.
+
+La [referencia de la implementación de Reticulum en Python](https://github.com/markqvist/reticulum) y este sitio estan licenciados bajo la [Licencia MIT](license_es.html). Por favor dona para apoyar el desarrollo.
+
+----------------
+
+El Protocolo de Reticulum es propiedad compartida de todas las personas,
Lo contribuyo al dominio público.
Dedicado con esperanza y fe en el futuro
libertad y prosperidad para todos,
en la Tierra y más allá.
Gracias
+
+----------------
diff --git a/source/crypto_es.md b/source/crypto_es.md
new file mode 100644
index 0000000..e6f4b81
--- /dev/null
+++ b/source/crypto_es.md
@@ -0,0 +1,25 @@
+# Primitivas Criptográficas
+Reticulum utiliza un conjunto sencillo de primitivas criptográficas eficientes, potentes y modernas, con implementaciones ampliamente disponibles que pueden utilizarse tanto en CPU de propósito general como en microcontroladores. Las primitivas necesarias son:
+
+- Ed25519 para firmas
+- X22519 para cambios de llaves ECDH
+- HKDF para derivación de llaves
+- AES-128 en modo CBC
+- HMAC-SHA256 para autenticación de mensajes
+- SHA-256
+- SHA-512
+
+En la configuración de instalación por defecto, las primitivas `X25519`, `Ed25519` y `AES-128-CBC` son proporcionadas por [OpenSSL](https://www.openssl.org/) (a través del paquete [PyCA/cryptography](https://github.com/pyca/cryptography)). Las funciones hash `SHA-256` y `SHA-512` las proporciona el paquete estándar de Python [hashlib](https://docs.python.org/3/library/hashlib.html). Las primitivas `HKDF`, `HMAC`, `Fernet` y la función de relleno `PKCS7` son siempre proporcionadas por las siguientes implementaciones internas:
+
+- [HKDF.py](https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/HKDF.py)
+- [HMAC.py](https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/HMAC.py)
+- [Fernet.py](https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/Fernet.py)
+- [PKCS7.py](https://github.com/markqvist/Reticulum/blob/master/RNS/Cryptography/PKCS7.py)
+
+Reticulum también incluye una implementación completa de todas las primitivas necesarias en Python puro. Si OpenSSL y PyCA no están disponibles en el sistema cuando se inicia Reticulum, éste utilizará en su lugar las primitivas internas de Python puro. Una consecuencia trivial de esto es el rendimiento, ya que el backend OpenSSL es *mucho* más rápido. Sin embargo, la consecuencia más importante es la pérdida potencial de seguridad al utilizar primitivas que no han sido sometidas a la misma cantidad de escrutinio, pruebas y revisiones que las de OpenSSL.
+
+Si desea utilizar las primitivas internas de Python puro, es **altamente recomendable** que usted tenga una buena comprensión de los riesgos que esto plantea, y tomar una decisión informada sobre si esos riesgos son aceptables para usted.
+
+Reticulum es un software relativamente joven y debe ser considerado como tal. Aunque se ha construido teniendo muy presentes las mejores prácticas criptográficas, _no_ ha sido auditado externamente en materia de seguridad, y es muy posible que haya errores que rompan la privacidad o la seguridad. Si quieres ayudar o patrocinar una auditoría, ponete en contacto con nosotros.
+
+Siguiente tema: Agradecimientos y créditos
diff --git a/source/docs_es.md b/source/docs_es.md
new file mode 100644
index 0000000..40b82ae
--- /dev/null
+++ b/source/docs_es.md
@@ -0,0 +1,9 @@
+# Leer el manual
+
+Puede consultar la documentación completa de Reticulum [en este sitio](manual/index.html) o [en GitHub Pages](https://markqvist.github.io/Reticulum/manual/).
+
+También puede [descargar el manual de Reticulum en formato PDF](manual/Reticulum%20Manual.pdf) o en [formato EPUB](manual/Reticulum%20Manual.epub).
+
+Por el momento solo esta disponible en Ingles.
+
+Ooootro tema: Primitivas criptográficas
diff --git a/source/donate_es.md b/source/donate_es.md
new file mode 100644
index 0000000..cffd539
--- /dev/null
+++ b/source/donate_es.md
@@ -0,0 +1,20 @@
+## Apoya Reticulum
+Puede contribuir al desarrollo continuado de sistemas de comunicaciones abiertos, libres y privados haciendo una donación a través de uno de los siguientes canales:
+
+- Monero
+ ```
+ 84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
+ ```
+
+- Ethereum
+ ```
+ 0xFDabC71AC4c0C78C95aDDDe3B4FA19d6273c5E73
+ ```
+
+- Bitcoin
+ ```
+ 35G9uWVzrpJJibzUwpNUQGQNFzLirhrYAH
+ ```
+
+- Ko-Fi
+ `https://ko-fi.com/markqvist`
diff --git a/source/hardware_es.md b/source/hardware_es.md
new file mode 100644
index 0000000..2fe6004
--- /dev/null
+++ b/source/hardware_es.md
@@ -0,0 +1,21 @@
+# Hardware soportado
+Reticulum puede utilizarse en prácticamente cualquier medio que admita al menos un canal semidúplex con un rendimiento de 500 bits por segundo y una MTU de 500 bytes. Radios de datos, módems, radios LoRa, líneas seriales, TNC AX.25, modos digitales de radioaficionados, dispositivos WiFi y Ethernet, enlaces ópticos de espacio libre y sistemas similares son ejemplos de los tipos de dispositivos físicos que puede utilizar Reticulum. Los tipos de interfaz admitidos incluyen:
+
+- Cualquier dispositivo Ethernet
+- Casi todo el hardware basado en WiFi
+- LoRa utilizando [RNode](https://unsigned.io/rnode/)
+- TNCs de Radio en paquetes (con o sin AX.25)
+- Módems de hardware y software compatibles con KISS
+- Cualquier dispositivo con puerto serial
+- TCP sobre redes IP
+- UDP sobre redes IP
+- Programas externos a través de stdio o pipes
+- Hardware personalizado a través de stdio o pipes
+
+Para obtener información más detallada y una lista completa de los tipos de interfaz compatibles, lea los capítulos [Hardware de comunicaciones](manual/hardware.html) e [Interfaces compatibles](manual/interfaces.html) del manual.
+
+Reticulum también puede encapsularse sobre redes IP existentes, por lo que nada le impide utilizarlo a través de Ethernet por cable, su red WiFi local o Internet, donde funcionará igual de bien. De hecho, uno de los puntos fuertes de Reticulum es la facilidad con la que permite conectar diferentes medios en una malla autoconfigurable, resistente y encriptada, utilizando cualquier mezcla de infraestructura disponible.
+
+Como ejemplo, se puede setear una Raspberry Pi conectada a un dispositivo LoRa, una radio en paquetes TNC y una red WiFi. Cuando las interfaces esten configuradas, Reticulum se hace cargo del resto, y cualquier dispositivo en la red se va a poder comunitar con nodos en los lados de LoRa y radio en paquetes de la red y viceversa.
+
+Siguiente tema: Testnet publica
diff --git a/source/index_es.md b/source/index_es.md
new file mode 100644
index 0000000..911911e
--- /dev/null
+++ b/source/index_es.md
@@ -0,0 +1,31 @@
+# Reticulum
+
+Reticulum es la infraestructura basada en criptografía para construir redes locales y redes de área amplia (WAN) utilizando hardware disponible fácilmente. Reticulum puede continuar operando incluso en condiciones adversas con latencia muy alta y ancho de banda extremadamente bajo.
+
+ La visión de Reticulum es permitir que cualquiera operé sus propias redes de comunicación soberanas, hacerlo barato y que cubrir vastas áreas con una multitud de redes independientes, interconectables y autónomas sea fácil. Reticulum es Redes Imparables para La Gente.
+
+
+
+Reticulum no es una red. Es una herramienta para construir miles de redes. Redes sin interruptores de apagado, vigilancia, censura y control. Redes que pueden operar libremente entre sí, asociarse y desasociarse entre ellas. Reticulum es Redes para Personas.
+
+
+Desde la perspectiva de un usuario, Reticulum permite crear aplicaciones que respetan y fortalezcan la autonomía y soberanía de comunidades y individuos.
+Reticulum ofrece comunicación digital segura que no puede someterse a control externo, manipulación o censura.
+
+Reticulum permite la construcción de redes tanto pequeñas como potencialmente a escala planetaria, sin necesidad de estructuras jerárquicas o burocráticas para controlarlas o administrarlas, mientras garantiza que las personas y comunidades tengan plena soberanía sobre sus propios segmentos de red.
+
+## Características Destacadas
+
+Reticulum resuelve el mismo problema que cualquier infraestructura de redes, es decir, transmitir información de forma fiable de un punto a otro a través de un número de intermediarios, pero lo hace de una manera muy diferente de otras tecnologías de redes.
+
+- Reticulum no utiliza direcciones de origen. Ningún paquete transmitido incluye información sobre la dirección, lugar, máquina o persona de donde se originó.
+- No hay control central sobre el espacio de direcciones en Reticulum. Cada uno puede asignar tantas direcciones como necesite, cuando lo necesite.
+- Reticulum garantiza conexión de extremo a extremo. Las direcciones recién generadas se vuelven globalmente alcanzables en un plazo de segundos a unos minutos.
+- Las direcciones son *soberanas* y *portátiles*. Una vez creada una dirección, puede ser movida físicamente a otro lugar en la red y seguir siendo alcanzable.
+- Toda la comunicación está cifrada de forma predeterminada con [encriptación potente y moderna](crypto_es.html).
+- Todas las claves de encriptación son efímeras, y la comunicación ofrece secreto hacía adelante por defecto.
+- Es imposible establecer enlaces sin cifrar en redes Reticulum.
+- Es imposible enviar paquetes sin cifrar a destinos en la red.
+- Las destinos que reciban paquetes sin cifrar los descartarán como inválidos.
+
+Siguiente tema: Empezar
diff --git a/source/license_es.md b/source/license_es.md
new file mode 100644
index 0000000..d21ef78
--- /dev/null
+++ b/source/license_es.md
@@ -0,0 +1,20 @@
+```
+MIT License
+
+Copyright (c) 2016-2024 Mark Qvist / unsigned.io
+
+Por la presente se concede permiso, libre de cargos, a cualquier persona que obtenga una copia
+de este software y de los archivos de documentación asociados (el "Software"), a utilizar el
+Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar,
+fusionar, publicar, distribuir, sublicenciar, y/o vender copias del Software, y a permitir a
+las personas a las que se les proporcione el Software a hacer lo mismo, sujeto a las siguientes condiciones:
+
+El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
+
+EL SOFTWARE SE PROPORCIONA "COMO ESTÁ", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA,
+INCLUYENDO PERO NO LIMITADO A GARANTÍAS DE COMERCIALIZACIÓN, IDONEIDAD PARA UN PROPÓSITO
+PARTICULAR E INCUMPLIMIENTO. EN NINGÚN CASO LOS AUTORES O PROPIETARIOS DE LOS DERECHOS
+DE AUTOR SERÁN RESPONSABLES DE NINGUNA RECLAMACIÓN, DAÑOS U OTRAS RESPONSABILIDADES, YA
+SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, DERIVADAS DE, FUERA DE O
+EN CONEXIÓN CON EL SOFTWARE O SU USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.
+```
diff --git a/source/start_es.md b/source/start_es.md
new file mode 100644
index 0000000..685c38a
--- /dev/null
+++ b/source/start_es.md
@@ -0,0 +1,78 @@
+# Empezar
+La mejor manera de empezar a utilizar el protocolo de Reticulum depende de lo que
+quieras hacer. Para más detalles y ejemplos, consulte la sección [Empezar rapidito](manual/gettingstartedfast.html) del [Manual de Reticulum](manual/index.html).
+
+## Software experimental
+**¡A saber!** Reticulum todavía está en fase beta. Esto significa que, aunque ya funciona muy bien y es muy estable, es muy
+posible que todavía haya errores o fallos críticos en el comportamiento, la privacidad o la seguridad del sistema en su conjunto.
+Utilice Reticulum si se siente cómodo con esto y comprende las implicaciones.
+
+## Comunidad y Soporte
+
+Si estas teniendo algún problema o algo no esta funcionando, estos son algunos excelentes lugares para pedir ayuda:
+
+- El [foro de discusión](https://github.com/markqvist/Reticulum/discussions) en Github
+- El [Canal de Reticulum en Matrix](https://matrix.to/#/#reticulum:matrix.org) en `#reticulum:matrix.org`
+- El [Subreddit de Reticulum](https://reddit.com/r/reticulum)
+
+## Instalación
+Para instalar reticulum y utilidades relacionadas, la forma más fácil es usando pip:
+
+```bash
+pip install rns
+```
+
+Podes ejecutar entonces cualquier programa que use Reticulum, o iniciar Reticulum como un servicio del sistema con [the rnsd utility](manual/using.html#the-rnsd-utility).
+
+Si `pip` no es disponible en tu sistema, instala primero `python3` y `python3-pip` para tu sistema operativo.
+
+La primera vez que inicia, Reticulum crea un archivo de configuración por defecto, proporcionando conectividad basica con pares
+de Reticulum que puedan ser localmente localizables. Si cualquiera de esos pares locales son instancias de transporte, puede que
+te conecten con redes más grandes. El archivo de configuración contiene algunos ejemplos y referencias para crear configuraciones
+más complejas.
+
+Para ejemplos más detallados sobre como expandir la comunicación a más medios, como paquetes de radio o Lora, puertos seriales,
+o a traves de enlaces rápidos de IP e Internet utilizando las interfaces UDP y TCP, peguele una mirada a la sección
+[Interfaces soportadas](manual/interfaces.html) del [Manual de Reticulum](manual/index.html).
+
+## Utilidades Incluidas
+
+Reticulum incluye una serie de utilidades para gestionar sus redes, ver el estado y la información, y otras tareas. Puede leer
+más sobre estos programas en la sección [Utilidades Incluidas](manual/using.html#utilidades-incluidas) del [Manual de Reticulum](manual/index.html).
+
+- El servicio/daemon `rnsd` para correr Reticulum como un servicio siempre disponible
+- Una utilidad de estado de la interfaz llamada `rnstatus`, para mostrar info sobre interfaces
+- La herramienta de búsqueda y gestión de rutas `rnpath` le permite ver y modificar tablas de rutas
+- Una herramienta de diagnóstico llamada `rnprobe` para comprobar la conectividad con los destinos, similar a `ping`
+- Un sencillo programa de transferencia de archivos llamado `rncp` que facilita la copia de archivos a sistemas remotos.
+- El programa de ejecución remota de comandos `rnx` que le permite ejecutar comandos, programas y recuperar output de sistemas remotos.
+
+Todas las herramientas, incluidas `rnx` y `rncp`, funcionan bien y con fiabilidad incluso en enlaces de muy bajo ancho de banda como LoRa o radio por paquetes.
+
+## Programas que usan Reticulum
+Si quiere hacerse rápidamente una idea de lo que puede hacer Reticulum, peguele una mirada a los siguientes recursos.
+
+- Para una plataforma de comunicaciones *mesh* sin conexión a la red, encriptada y resistente, consulte [Nomad Network](https://github.com/markqvist/NomadNet)
+- La aplicación para Android, Linux y macOS [Sideband](https://github.com/markqvist/sideband) tiene una interfaz gráfica y se centra en la facilidad de uso.
+- [LXMF](https://github.com/markqvist/lxmf) es un protocolo de transferencia de mensajes distribuido, tolerante a retrasos e interrupciones y basado en Reticulum.
+
+## Dependencias
+
+La instalación del paquete `rns` requiere las dependencias que se enumeran a continuación. Casi todos los sistemas y distribuciones tienen paquetes disponibles para estas dependencias, y cuando se instala el paquete `rns` con `pip`, también se descargan e instalan.
+
+- [PyCA/cryptography](https://github.com/pyca/cryptography)
+- [netifaces](https://github.com/al45tair/netifaces)
+- [pyserial](https://github.com/pyserial/pyserial)
+
+En sistemas más inusuales, y en algunos casos raros, puede que no sea posible instalar o incluso compilar uno o más de los módulos anteriores. En tales situaciones, puede utilizar en su lugar el paquete `rnspure`, que no requiere dependencias externas para su instalación. Tenga en cuenta que el contenido de los paquetes `rns` y `rnspure` es *idéntico*.La única diferencia es que el paquete `rnspure` no necesita dependencias externas para su instalación.
+
+Independientemente de cómo se instale e inicie Reticulum, cargará las dependencias externas sólo si son *necesarias* y están *disponibles*. Si, por ejemplo, desea utilizar Reticulum en un sistema que no admite [pyserial](https://github.com/pyserial/pyserial), es perfectamente posible hacerlo utilizando el paquete `rnspure`, pero Reticulum no podrá utilizar interfaces basadas en serial. Todos los demás módulos disponibles seguirán cargándose cuando sea necesario.
+
+**Atenti!** Si utiliza el paquete `rnspure` para ejecutar Reticulum en sistemas que no soportan [PyCA/cryptography](https://github.com/pyca/cryptography), es importante que lea y comprenda la sección [Primitivas Criptográficas](crypto_es.html) de este sitio.
+
+ ## Desempeño
+Reticulum busca cubrir un amplio rango de desempeño utilizable, pero prioriza la funcionalidad y el desempeño sobre medios de baja capacidad de ancho de banda. El objetivo es ofrecer un entorno de desempeño dinámico que va desde 250 bit por segundo hasta 1 gigabit por segundo en hardware normal.
+
+Actualmente, el rango de desempeño utilizable está aproximadamente en 150 bit por segundo a 40 megabits por segundo, mientras que los medios físicos más rápidos no están saturados. El desempeño superior a este nivel se reserva para actualizaciones futuras, pero no es prioritario hasta que la formatos de cable y API hayan sido establecidos.
+
+Próximo Tema: Hardware soportado