Lleva la IA a la mesh — sin Internet
English | 中文 | 日本語 | Français | Português | Español
MeshClaw es un plugin de canal para OpenClaw que conecta agentes de IA con redes mesh LoRa de Meshtastic. Envía y recibe mensajes potenciados por IA vía radio — desde la montaña, el océano o cualquier lugar donde no llega la red.
flowchart LR
subgraph mesh ["📻 LoRa Mesh Network"]
N["Meshtastic Nodes"]
end
subgraph gw ["⚙️ OpenClaw Gateway"]
P["Meshtastic Plugin"]
AI["AI Agent"]
end
subgraph llm ["🧠 AI Backend"]
CLOUD["Cloud (OpenAI, Anthropic, …)"]
LOCAL["Local (Ollama, llama.cpp, …)"]
end
N -- "Serial (USB)" --> P
N -- "HTTP (WiFi)" --> P
N -. "MQTT (Broker)" .-> P
P <--> AI
AI -- "Cloud API" --> CLOUD
AI -. "Private" .-> LOCAL
Documentación · Guía de hardware · Reportar bug · Solicitar funcionalidad
- Características
- Inicio rápido
- Casos de uso
- Demo
- Hardware recomendado
- Asistente de configuración
- Configuración
- Solución de problemas
- Hoja de ruta
- Desarrollo
- Contribuciones
- Integración con AI Agent — Conecta AI Agents de OpenClaw con redes mesh LoRa de Meshtastic. Funciona con IA en la nube desde el primer momento; opcionalmente, todo local (ver Hardware).
- DM y canales de grupo con control de acceso — Soporta ambos modos de conversación con listas de permitidos para DM, reglas de respuesta por canal y filtrado por @mention
- Soporte multicuenta — Ejecuta múltiples conexiones independientes a la vez
- Comunicación mesh resiliente — Reconexión automática con reintentos configurables. Tolera caídas de conexión sin romperse.
Requisitos previos: Una instancia de OpenClaw en ejecución (Node.js 22+).
# 1. Install plugin
openclaw plugins install @seeed-studio/meshtastic
# 2. Guided setup — walks you through transport, region, and access policy
openclaw onboard
# 3. Verify
openclaw channels status --probeTres comandos. Tu IA ya está en la mesh.
- Investigación de campo — Científicos y equipos de prospección consultan bases de conocimiento de IA desde zonas remotas sin cobertura celular
- Respuesta a desastres — Brigadas de emergencia reciben apoyo a la decisión con IA cuando la infraestructura está caída
- Marítimo y aviación — Embarcaciones y aeronaves mantienen interacción con IA lejos de la costa o estaciones terrestres
- Comunidades fuera de la red — Poblaciones rurales o de frontera acceden a herramientas de IA vía redes mesh comunitarias
- Operaciones con privacidad primero — Empareja con un LLM local para despliegues aislados (air-gapped) donde la soberanía del dato importa
- Puente entre canales — Envía desde LoRa fuera de la red y recibe la respuesta de la IA en Telegram, Discord o cualquier canal de OpenClaw
demo.mp4
Alternativa: media/demo.mp4
Izquierda: consultas a conocimiento de IA sin conexión vía LoRa · Derecha: puente entre canales — envías desde la mesh, recibes en Telegram
| Dispositivo | Ideal para | Enlace |
|---|---|---|
| XIAO ESP32S3 + Wio-SX1262 kit | Desarrollo de entrada | Comprar |
| Wio Tracker L1 Pro | Gateway de campo portátil | Comprar |
| SenseCAP Card Tracker T1000-E | Rastreador compacto | Comprar |
Host de gateway: reComputer R1024 — No necesitas un Mac Mini. El reComputer R1024 (~$189, ~5 W) es un ordenador edge industrial sin ventilador que ejecuta OpenClaw 24/7. Alimentado por PoE, montable en riel DIN, con doble Ethernet y módulos opcionales LoRa/4G — ideal como gateway siempre encendido en el campo. Guía de inicio →
Opcional: pila de IA totalmente offline — ¿Quieres cero dependencia de la nube? Añade un reComputer serie J ejecutando un LLM local (via Ollama, llama.cpp, etc.) y toda la cadena — radio, gateway e inferencia — queda en tu propio hardware. Sin API keys, ningún dato sale de tu red.
¿Sin hardware? El transporte MQTT conecta vía broker — no necesitas un dispositivo local.
Cualquier dispositivo compatible con Meshtastic funciona.
Ejecutar openclaw onboard abre un asistente interactivo que te guía por cada paso de configuración. Abajo verás qué significa cada paso y cómo elegir.
Cómo se conecta el gateway a la mesh de Meshtastic:
| Opción | Descripción | Requiere |
|---|---|---|
| Serial (USB) | Conexión USB directa a un dispositivo local. Detecta puertos disponibles automáticamente. | Dispositivo Meshtastic conectado por USB |
| HTTP (WiFi) | Conecta a un dispositivo por red local. | IP o nombre de host del dispositivo (p. ej. meshtastic.local) |
| MQTT (broker) | Conecta a la mesh vía un broker MQTT — no necesitas hardware local. | Dirección del broker, credenciales y topic de suscripción |
Solo Serial y HTTP. En MQTT la región se deduce del topic de suscripción.
Configura la región de frecuencias de radio en el dispositivo. Debe cumplir la normativa local y coincidir con los otros nodos de la mesh. Opciones comunes:
| Región | Frecuencia |
|---|---|
US |
902–928 MHz |
EU_868 |
869 MHz |
CN |
470–510 MHz |
JP |
920 MHz |
UNSET |
Mantener valor por defecto del dispositivo |
Consulta la documentación de regiones de Meshtastic para la lista completa.
El nombre visible del dispositivo en la mesh. También se usa como disparador de @mention en canales de grupo — otros usuarios envían @OpenClaw para hablar con tu bot.
- Serial / HTTP: opcional — si lo dejas vacío, se detecta automáticamente del dispositivo conectado.
- MQTT: obligatorio — no hay un dispositivo físico del cual leer el nombre.
Controla si (y cómo) el bot responde en canales de grupo de la mesh (p. ej. LongFast, Emergency):
| Política | Comportamiento |
|---|---|
disabled (por defecto) |
Ignora todos los mensajes de canales de grupo. Solo se procesan DMs. |
open |
Responde en todos los canales de la mesh. |
allowlist |
Responde solo en los canales listados. Se te pedirá ingresar nombres de canal (separados por comas, p. ej. LongFast, Emergency). Usa * como comodín para coincidir con todos. |
Solo aparece cuando el acceso a canales está habilitado (no
disabled).
Si está activado (predeterminado: sí), el bot solo responde en canales de grupo cuando alguien menciona su nombre de nodo (p. ej. @OpenClaw ¿cómo está el clima?). Esto evita que el bot responda a cada mensaje del canal.
Si está desactivado, el bot responde a todos los mensajes en los canales permitidos.
Controla quién puede enviar mensajes directos al bot:
| Política | Comportamiento |
|---|---|
pairing (por defecto) |
Nuevos remitentes disparan una solicitud de emparejamiento que debe aprobarse antes de chatear. |
open |
Cualquiera en la mesh puede enviar DMs al bot libremente. |
allowlist |
Solo los nodos listados en allowFrom pueden enviar DMs. El resto se ignora. |
Solo aparece cuando
dmPolicyesallowlist, o cuando el asistente determina que hace falta.
Una lista de IDs de usuario de Meshtastic permitidos para enviar mensajes directos. Formato: !aabbccdd (ID de usuario en hex). Varias entradas separadas por comas.
Solo aparece en configuraciones multicuenta. Opcional.
Asigna nombres legibles a tus cuentas. Por ejemplo, una cuenta con ID home podría mostrarse como "Home Station". Si lo omites, se usa el ID de cuenta tal cual. Es puramente cosmético y no afecta la funcionalidad.
El asistente (openclaw onboard) cubre todo lo de abajo. Para configurar manualmente, edita con openclaw config edit.
channels:
meshtastic:
transport: serial
serialPort: /dev/ttyUSB0
nodeName: OpenClawchannels:
meshtastic:
transport: http
httpAddress: meshtastic.local
nodeName: OpenClawchannels:
meshtastic:
transport: mqtt
nodeName: OpenClaw
mqtt:
broker: mqtt.meshtastic.org
username: meshdev
password: large4cats
topic: "msh/US/2/json/#"channels:
meshtastic:
accounts:
home:
transport: serial
serialPort: /dev/ttyUSB0
remote:
transport: mqtt
mqtt:
broker: mqtt.meshtastic.org
topic: "msh/US/2/json/#"Referencia de todas las opciones
| Clave | Tipo | Predeterminado | Notas |
|---|---|---|---|
transport |
serial | http | mqtt |
serial |
|
serialPort |
string |
— | Requerido para serial |
httpAddress |
string |
meshtastic.local |
Requerido para HTTP |
httpTls |
boolean |
false |
|
mqtt.broker |
string |
mqtt.meshtastic.org |
|
mqtt.port |
number |
1883 |
|
mqtt.username |
string |
meshdev |
|
mqtt.password |
string |
large4cats |
|
mqtt.topic |
string |
msh/US/2/json/# |
Topic de suscripción |
mqtt.publishTopic |
string |
derived | |
mqtt.tls |
boolean |
false |
|
region |
enum | UNSET |
US, EU_868, CN, JP, ANZ, KR, TW, RU, IN, NZ_865, TH, EU_433, UA_433, UA_868, MY_433, MY_919, SG_923, LORA_24. Solo Serial/HTTP. |
nodeName |
string |
auto-detect | Nombre visible y disparador de @mention. Requerido para MQTT. |
dmPolicy |
open | pairing | allowlist |
pairing |
Quién puede enviar mensajes directos. Ver Política de acceso a mensajes directos (DM). |
allowFrom |
string[] |
— | IDs de nodo para la lista de permitidos de DM, p. ej. ["!aabbccdd"] |
groupPolicy |
open | allowlist | disabled |
disabled |
Política de respuesta en canales de grupo. Ver Acceso a canales. |
channels |
Record<string, object> |
— | Configuración por canal: requireMention, allowFrom, tools |
Overrides mediante variables de entorno
Estas variables sobrescriben la configuración de la cuenta por defecto (el YAML tiene prioridad para cuentas con nombre):
| Variable | Clave de configuración equivalente |
|---|---|
MESHTASTIC_TRANSPORT |
transport |
MESHTASTIC_SERIAL_PORT |
serialPort |
MESHTASTIC_HTTP_ADDRESS |
httpAddress |
MESHTASTIC_MQTT_BROKER |
mqtt.broker |
MESHTASTIC_MQTT_TOPIC |
mqtt.topic |
| Síntoma | Revisa |
|---|---|
| Serial no conecta | ¿Ruta del dispositivo correcta? ¿El host tiene permisos? |
| HTTP no conecta | ¿httpAddress es alcanzable? ¿httpTls coincide con el dispositivo? |
| MQTT no recibe nada | ¿La región en mqtt.topic es correcta? ¿Credenciales del broker válidas? |
| No hay respuestas por DM | ¿dmPolicy y allowFrom configurados? Ver Política de acceso a mensajes directos (DM). |
| No hay respuestas en grupo | ¿groupPolicy habilitado? ¿El canal está en la lista de permitidos? ¿Requiere @mention? Ver Acceso a canales. |
¿Encontraste un bug? Abre una issue con el tipo de transporte, la configuración (sin secretos) y la salida de openclaw channels status --probe.
Planeamos ingerir datos de nodos en tiempo real (ubicación GPS, sensores ambientales, estado del dispositivo) en el contexto de OpenClaw, habilitando que la IA monitoree la salud de la red mesh y emita alertas proactivas — sin esperar a que el usuario pregunte.
git clone https://github.com/Seeed-Solution/MeshClaw.git
cd MeshClaw
npm install
openclaw plugins install -l ./MeshClawSin paso de build — OpenClaw carga el código TypeScript directamente. Usa openclaw channels status --probe para verificar.
¡Toda contribución es bienvenida!
- Reportes de bugs y solicitudes de funcionalidades — Abre una issue
- Contribuciones de código — Haz fork del repositorio, crea una rama y envía un Pull Request. Mantén el código alineado con las convenciones existentes de TypeScript.
- Documentación y traducciones — Siempre se agradecen mejoras de docs y nuevas traducciones.
Mira Desarrollo para instrucciones de setup local.
Si MeshClaw te resulta útil, déjanos una estrella ⭐ — ¡ayuda a que más gente descubra el proyecto!





