@seeed-studio/meshtastic 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/scripts/translate_readme.py +632 -0
- package/.github/translate/do-not-translate.md +6 -0
- package/.github/translate/glossary/es.md +23 -0
- package/.github/translate/glossary/fr.md +23 -0
- package/.github/translate/glossary/ja.md +23 -0
- package/.github/translate/glossary/pt.md +23 -0
- package/.github/translate/glossary/zh-CN.md +23 -0
- package/.github/translate/languages.json +37 -0
- package/.github/translate/prompts/es.md +16 -0
- package/.github/translate/prompts/fr.md +16 -0
- package/.github/translate/prompts/ja.md +17 -0
- package/.github/translate/prompts/pt.md +16 -0
- package/.github/translate/prompts/zh-CN.md +15 -0
- package/.github/workflows/readme-translate.yml +166 -0
- package/AGENTS.md +172 -0
- package/README.es.md +337 -0
- package/README.fr.md +350 -0
- package/README.ja.md +344 -0
- package/README.md +139 -101
- package/README.pt.md +337 -0
- package/README.zh-CN.md +183 -152
- package/package.json +4 -3
- package/src/channel.ts +3 -3
- package/src/config-schema.ts +1 -1
- package/src/inbound.ts +2 -2
- package/src/monitor.ts +3 -3
- package/src/onboarding.ts +9 -5
- package/src/send.ts +2 -2
- package/src/types.ts +2 -2
package/README.md
CHANGED
|
@@ -1,51 +1,50 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="media/GoMeshClaw.png" width="700" alt="Meshtastic LoRa hardware" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# MeshClaw: OpenClaw Meshtastic Channel Plugin
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@seeed-studio/meshtastic">
|
|
9
|
+
<img alt="npm version" src="https://img.shields.io/npm/v/@seeed-studio/meshtastic.svg" />
|
|
10
|
+
</a>
|
|
11
|
+
<a href="https://www.npmjs.com/package/@seeed-studio/meshtastic">
|
|
12
|
+
<img alt="license" src="https://img.shields.io/npm/l/@seeed-studio/meshtastic.svg" />
|
|
13
|
+
</a>
|
|
14
|
+
<a href="https://github.com/openclaw/openclaw">
|
|
15
|
+
<img alt="openclaw compat" src="https://img.shields.io/badge/OpenClaw-2026.3.x-blue" />
|
|
16
|
+
</a>
|
|
17
|
+
</p>
|
|
2
18
|
|
|
3
|
-
|
|
4
|
-
|
|
19
|
+
<!-- LANG_SWITCHER_START -->
|
|
20
|
+
<p align="center">
|
|
21
|
+
<b>English</b> | <a href="README.zh-CN.md">中文</a> | <a href="README.ja.md">日本語</a> | <a href="README.fr.md">Français</a> | <a href="README.pt.md">Português</a> | <a href="README.es.md">Español</a>
|
|
22
|
+
</p>
|
|
23
|
+
<!-- LANG_SWITCHER_END -->
|
|
5
24
|
|
|
6
|
-
**
|
|
25
|
+
**MeshClaw** is an OpenClaw channel plugin that lets your AI gateway send and receive messages over Meshtastic — no internet, no cell towers, just radio waves. Talk to your AI assistant from the mountains, the ocean, or anywhere the grid doesn't reach.
|
|
7
26
|
|
|
8
|
-
|
|
27
|
+
⭐ Star us on GitHub — it motivates us a lot!
|
|
9
28
|
|
|
10
29
|
> [!IMPORTANT]
|
|
11
30
|
> This is a **channel plugin** for the [OpenClaw](https://github.com/openclaw/openclaw) AI gateway — not a standalone application. You need a running OpenClaw instance (Node.js 22+) to use it.
|
|
12
31
|
|
|
13
32
|
[Documentation][docs] · [Hardware Guide](#recommended-hardware) · [Report Bug][issues] · [Request Feature][issues]
|
|
14
33
|
|
|
15
|
-
<p align="center">
|
|
16
|
-
<img src="media/hardware.jpg" width="420" alt="Meshtastic LoRa hardware" />
|
|
17
|
-
</p>
|
|
18
|
-
|
|
19
34
|
## Table of Contents
|
|
20
35
|
|
|
21
|
-
- [Quick Start](#quick-start)
|
|
22
36
|
- [How It Works](#how-it-works)
|
|
23
37
|
- [Recommended Hardware](#recommended-hardware)
|
|
24
|
-
- [Demo](#demo)
|
|
25
38
|
- [Features](#features)
|
|
39
|
+
- [Capabilities & Roadmap](#capabilities--roadmap)
|
|
40
|
+
- [Demo](#demo)
|
|
41
|
+
- [Quick Start](#quick-start)
|
|
26
42
|
- [Setup Wizard](#setup-wizard)
|
|
27
43
|
- [Configuration](#configuration)
|
|
28
44
|
- [Troubleshooting](#troubleshooting)
|
|
29
45
|
- [Development](#development)
|
|
30
46
|
- [Contributing](#contributing)
|
|
31
47
|
|
|
32
|
-
## Quick Start
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# 1. Install plugin
|
|
36
|
-
openclaw plugins install @seeed-studio/meshtastic
|
|
37
|
-
|
|
38
|
-
# 2. Guided setup — walks you through transport, region, and access policy
|
|
39
|
-
openclaw setup
|
|
40
|
-
|
|
41
|
-
# 3. Verify
|
|
42
|
-
openclaw channels status --probe
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
<p align="center">
|
|
46
|
-
<img src="media/setup-screenshot.png" width="700" alt="OpenClaw setup wizard" />
|
|
47
|
-
</p>
|
|
48
|
-
|
|
49
48
|
## How It Works
|
|
50
49
|
|
|
51
50
|
```mermaid
|
|
@@ -77,40 +76,75 @@ Inbound messages go through access control (DM policy, group policy, mention gat
|
|
|
77
76
|
<img src="media/XIAOclaw.png" width="760" alt="Meshtastic device with Seeed XIAO module" />
|
|
78
77
|
</p>
|
|
79
78
|
|
|
80
|
-
| Device
|
|
81
|
-
|
|
82
|
-
| XIAO ESP32S3 + Wio-SX1262 kit |
|
|
83
|
-
| Wio Tracker L1 Pro
|
|
84
|
-
| SenseCAP Card Tracker T1000-E | Compact
|
|
79
|
+
| Device | Best for | Link |
|
|
80
|
+
| ----------------------------- | ----------------------- | ------------------ |
|
|
81
|
+
| XIAO ESP32S3 + Wio-SX1262 kit | Entry-level development | [Buy][hw-xiao] |
|
|
82
|
+
| Wio Tracker L1 Pro | Portable field gateway | [Buy][hw-wio] |
|
|
83
|
+
| SenseCAP Card Tracker T1000-E | Compact tracker | [Buy][hw-sensecap] |
|
|
85
84
|
|
|
86
|
-
|
|
85
|
+
No hardware? MQTT transport connects via broker — no local device required.
|
|
86
|
+
|
|
87
|
+
Any Meshtastic-compatible device works.
|
|
88
|
+
|
|
89
|
+
## Features
|
|
90
|
+
|
|
91
|
+
- **AI Agent Integration** — Bridges OpenClaw AI agents with Meshtastic LoRa mesh networks. Enables intelligent communication without cloud dependency.
|
|
92
|
+
|
|
93
|
+
- **Three Transport Modes** — Serial (USB), HTTP (WiFi), and MQTT support
|
|
94
|
+
|
|
95
|
+
- **DM & Group Channels with Access Control** — Supports both conversation modes with DM allowlists, channel response rules, and mention-gating
|
|
96
|
+
|
|
97
|
+
- **Multi-Account Support** — Run multiple independent connections simultaneously
|
|
98
|
+
|
|
99
|
+
- **Resilient Mesh Communication** — Auto-reconnect with configurable retries. Handles connection drops gracefully.
|
|
100
|
+
|
|
101
|
+
## Capabilities & Roadmap
|
|
102
|
+
|
|
103
|
+
The plugin treats Meshtastic as a first-class channel — just like Telegram or Discord — enabling AI conversations and skill invocation entirely over LoRa radio, without internet dependency.
|
|
104
|
+
|
|
105
|
+
| Query Information Offline | Cross-Channel Bridge: Send from off-grid, receive anywhere | 🔜 What's next: |
|
|
106
|
+
| ------------------------------------------------------------ | ---------------------------------------------------------- | ------------------------------------------------------------ |
|
|
107
|
+
| <img src="media/image1.png" alt="Query Information Offline" /> | <img src="media/image2.png" alt="Cross-Channel Bridge" /> | We plan to ingest real-time node data (GPS location, environmental sensors, device status) into OpenClaw's context, enabling the AI to monitor mesh network health and broadcast proactive alerts without waiting for user queries. |
|
|
87
108
|
|
|
88
109
|
## Demo
|
|
89
110
|
|
|
90
|
-
|
|
111
|
+
<div align="center">
|
|
112
|
+
|
|
113
|
+
https://github.com/user-attachments/assets/837062d9-a5bb-4e0a-b7cf-298e4bdf2f7c
|
|
114
|
+
|
|
115
|
+
</div>
|
|
91
116
|
|
|
92
117
|
Fallback: [media/demo.mp4](media/demo.mp4)
|
|
93
118
|
|
|
94
|
-
##
|
|
119
|
+
## Quick Start
|
|
95
120
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
121
|
+
```bash
|
|
122
|
+
# 1. Install plugin
|
|
123
|
+
openclaw plugins install @seeed-studio/meshtastic
|
|
124
|
+
|
|
125
|
+
# 2. Guided setup — walks you through transport, region, and access policy
|
|
126
|
+
openclaw onboard
|
|
127
|
+
|
|
128
|
+
# 3. Verify
|
|
129
|
+
openclaw channels status --probe
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
<p align="center">
|
|
133
|
+
<img src="media/setup-screenshot.png" width="700" alt="OpenClaw setup wizard" />
|
|
134
|
+
</p>
|
|
101
135
|
|
|
102
136
|
## Setup Wizard
|
|
103
137
|
|
|
104
|
-
Running `openclaw
|
|
138
|
+
Running `openclaw onboard` launches an interactive wizard that walks you through each configuration step. Below is what each step means and how to choose.
|
|
105
139
|
|
|
106
140
|
### 1. Transport
|
|
107
141
|
|
|
108
142
|
How the gateway connects to the Meshtastic mesh:
|
|
109
143
|
|
|
110
|
-
| Option
|
|
111
|
-
|
|
112
|
-
| **Serial** (USB)
|
|
113
|
-
| **HTTP** (WiFi)
|
|
144
|
+
| Option | Description | Requires |
|
|
145
|
+
| ----------------- | ------------------------------------------------------------ | ------------------------------------------------ |
|
|
146
|
+
| **Serial** (USB) | Direct USB connection to a local device. Auto-detects available ports. | Meshtastic device plugged in via USB |
|
|
147
|
+
| **HTTP** (WiFi) | Connects to a device over the local network. | Device IP or hostname (e.g. `meshtastic.local`) |
|
|
114
148
|
| **MQTT** (broker) | Connects to the mesh via an MQTT broker — no local hardware needed. | Broker address, credentials, and subscribe topic |
|
|
115
149
|
|
|
116
150
|
### 2. LoRa Region
|
|
@@ -119,13 +153,13 @@ How the gateway connects to the Meshtastic mesh:
|
|
|
119
153
|
|
|
120
154
|
Sets the radio frequency region on the device. Must match your local regulations and other nodes on the mesh. Common choices:
|
|
121
155
|
|
|
122
|
-
| Region
|
|
123
|
-
|
|
124
|
-
| `US`
|
|
125
|
-
| `EU_868` | 869 MHz
|
|
126
|
-
| `CN`
|
|
127
|
-
| `JP`
|
|
128
|
-
| `UNSET`
|
|
156
|
+
| Region | Frequency |
|
|
157
|
+
| -------- | ------------------- |
|
|
158
|
+
| `US` | 902–928 MHz |
|
|
159
|
+
| `EU_868` | 869 MHz |
|
|
160
|
+
| `CN` | 470–510 MHz |
|
|
161
|
+
| `JP` | 920 MHz |
|
|
162
|
+
| `UNSET` | Keep device default |
|
|
129
163
|
|
|
130
164
|
See [Meshtastic region docs](https://meshtastic.org/docs/getting-started/initial-config/#lora) for the full list.
|
|
131
165
|
|
|
@@ -140,11 +174,11 @@ The device's display name on the mesh. Also used as the **@mention trigger** in
|
|
|
140
174
|
|
|
141
175
|
Controls whether and how the bot responds in **mesh group channels** (e.g. LongFast, Emergency):
|
|
142
176
|
|
|
143
|
-
| Policy
|
|
144
|
-
|
|
145
|
-
| `disabled` (default) | Ignores all group channel messages. Only DMs are processed.
|
|
146
|
-
| `open`
|
|
147
|
-
| `allowlist`
|
|
177
|
+
| Policy | Behavior |
|
|
178
|
+
| -------------------- | ------------------------------------------------------------ |
|
|
179
|
+
| `disabled` (default) | Ignores all group channel messages. Only DMs are processed. |
|
|
180
|
+
| `open` | Responds in **every** channel on the mesh. |
|
|
181
|
+
| `allowlist` | Responds only in **listed** channels. You will be prompted to enter channel names (comma-separated, e.g. `LongFast, Emergency`). Use `*` as a wildcard to match all. |
|
|
148
182
|
|
|
149
183
|
### 5. Require Mention
|
|
150
184
|
|
|
@@ -158,17 +192,21 @@ When disabled, the bot responds to **all** messages in allowed channels.
|
|
|
158
192
|
|
|
159
193
|
Controls who can send **direct messages** to the bot:
|
|
160
194
|
|
|
161
|
-
| Policy
|
|
162
|
-
|
|
195
|
+
| Policy | Behavior |
|
|
196
|
+
| ------------------- | ------------------------------------------------------------ |
|
|
163
197
|
| `pairing` (default) | New senders trigger a pairing request that must be approved before they can chat. |
|
|
164
|
-
| `open`
|
|
165
|
-
| `allowlist`
|
|
198
|
+
| `open` | Anyone on the mesh can DM the bot freely. |
|
|
199
|
+
| `allowlist` | Only nodes listed in `allowFrom` can DM. All others are ignored. |
|
|
166
200
|
|
|
167
201
|
### 7. DM Allowlist (`allowFrom`)
|
|
168
202
|
|
|
169
203
|
> Only appears when `dmPolicy` is `allowlist`, or when the wizard determines one is needed.
|
|
170
204
|
|
|
171
|
-
A list of Meshtastic
|
|
205
|
+
A list of Meshtastic User IDs allowed to send direct messages. Format: `!aabbccdd` (hex User ID). Multiple entries are comma-separated.
|
|
206
|
+
|
|
207
|
+
<p align="center">
|
|
208
|
+
<img src="media/image3.jpg" width="400" />
|
|
209
|
+
</p>
|
|
172
210
|
|
|
173
211
|
### 8. Account Display Names
|
|
174
212
|
|
|
@@ -178,7 +216,7 @@ Assigns human-readable display names to your accounts. For example, an account w
|
|
|
178
216
|
|
|
179
217
|
## Configuration
|
|
180
218
|
|
|
181
|
-
The guided setup (`openclaw
|
|
219
|
+
The guided setup (`openclaw onboard`) covers everything below. See [Setup Wizard](#setup-wizard) for a step-by-step walkthrough. For manual config, edit with `openclaw config edit`.
|
|
182
220
|
|
|
183
221
|
### Serial (USB)
|
|
184
222
|
|
|
@@ -233,25 +271,25 @@ channels:
|
|
|
233
271
|
<details>
|
|
234
272
|
<summary><b>All Options Reference</b></summary>
|
|
235
273
|
|
|
236
|
-
| Key
|
|
237
|
-
|
|
238
|
-
| `transport`
|
|
239
|
-
| `serialPort`
|
|
240
|
-
| `httpAddress`
|
|
241
|
-
| `httpTls`
|
|
242
|
-
| `mqtt.broker`
|
|
243
|
-
| `mqtt.port`
|
|
244
|
-
| `mqtt.username`
|
|
245
|
-
| `mqtt.password`
|
|
246
|
-
| `mqtt.topic`
|
|
247
|
-
| `mqtt.publishTopic` | `string`
|
|
248
|
-
| `mqtt.tls`
|
|
249
|
-
| `region`
|
|
250
|
-
| `nodeName`
|
|
251
|
-
| `dmPolicy`
|
|
252
|
-
| `allowFrom`
|
|
253
|
-
| `groupPolicy`
|
|
254
|
-
| `channels`
|
|
274
|
+
| Key | Type | Default | Notes |
|
|
275
|
+
| ------------------- | ------------------------------- | --------------------- | ------------------------------------------------------------ |
|
|
276
|
+
| `transport` | `serial \| http \| mqtt` | `serial` | |
|
|
277
|
+
| `serialPort` | `string` | — | Required for serial |
|
|
278
|
+
| `httpAddress` | `string` | `meshtastic.local` | Required for HTTP |
|
|
279
|
+
| `httpTls` | `boolean` | `false` | |
|
|
280
|
+
| `mqtt.broker` | `string` | `mqtt.meshtastic.org` | |
|
|
281
|
+
| `mqtt.port` | `number` | `1883` | |
|
|
282
|
+
| `mqtt.username` | `string` | `meshdev` | |
|
|
283
|
+
| `mqtt.password` | `string` | `large4cats` | |
|
|
284
|
+
| `mqtt.topic` | `string` | `msh/US/2/json/#` | Subscribe topic |
|
|
285
|
+
| `mqtt.publishTopic` | `string` | derived | |
|
|
286
|
+
| `mqtt.tls` | `boolean` | `false` | |
|
|
287
|
+
| `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`. Serial/HTTP only. |
|
|
288
|
+
| `nodeName` | `string` | auto-detect | Display name and @mention trigger. Required for MQTT. |
|
|
289
|
+
| `dmPolicy` | `open \| pairing \| allowlist` | `pairing` | Who can send direct messages. See [DM Access Policy](#6-dm-access-policy-dmpolicy). |
|
|
290
|
+
| `allowFrom` | `string[]` | — | Node IDs for DM allowlist, e.g. `["!aabbccdd"]` |
|
|
291
|
+
| `groupPolicy` | `open \| allowlist \| disabled` | `disabled` | Group channel response policy. See [Channel Access](#4-channel-access-grouppolicy). |
|
|
292
|
+
| `channels` | `Record<string, object>` | — | Per-channel overrides: `requireMention`, `allowFrom`, `tools` |
|
|
255
293
|
|
|
256
294
|
</details>
|
|
257
295
|
|
|
@@ -260,35 +298,35 @@ channels:
|
|
|
260
298
|
|
|
261
299
|
These override the default account's config (YAML takes precedence for named accounts):
|
|
262
300
|
|
|
263
|
-
| Variable
|
|
264
|
-
|
|
265
|
-
| `MESHTASTIC_TRANSPORT`
|
|
266
|
-
| `MESHTASTIC_SERIAL_PORT`
|
|
267
|
-
| `MESHTASTIC_HTTP_ADDRESS` | `httpAddress`
|
|
268
|
-
| `MESHTASTIC_MQTT_BROKER`
|
|
269
|
-
| `MESHTASTIC_MQTT_TOPIC`
|
|
301
|
+
| Variable | Equivalent config key |
|
|
302
|
+
| ------------------------- | --------------------- |
|
|
303
|
+
| `MESHTASTIC_TRANSPORT` | `transport` |
|
|
304
|
+
| `MESHTASTIC_SERIAL_PORT` | `serialPort` |
|
|
305
|
+
| `MESHTASTIC_HTTP_ADDRESS` | `httpAddress` |
|
|
306
|
+
| `MESHTASTIC_MQTT_BROKER` | `mqtt.broker` |
|
|
307
|
+
| `MESHTASTIC_MQTT_TOPIC` | `mqtt.topic` |
|
|
270
308
|
|
|
271
309
|
</details>
|
|
272
310
|
|
|
273
311
|
## Troubleshooting
|
|
274
312
|
|
|
275
|
-
| Symptom
|
|
276
|
-
|
|
277
|
-
| Serial won't connect
|
|
278
|
-
| HTTP won't connect
|
|
279
|
-
| MQTT receives nothing | Region in `mqtt.topic` correct? Broker credentials valid?
|
|
280
|
-
| No DM responses
|
|
281
|
-
| No group replies
|
|
313
|
+
| Symptom | Check |
|
|
314
|
+
| --------------------- | ------------------------------------------------------------ |
|
|
315
|
+
| Serial won't connect | Device path correct? Host has permission? |
|
|
316
|
+
| HTTP won't connect | `httpAddress` reachable? `httpTls` matches device? |
|
|
317
|
+
| MQTT receives nothing | Region in `mqtt.topic` correct? Broker credentials valid? |
|
|
318
|
+
| No DM responses | `dmPolicy` and `allowFrom` configured? See [DM Access Policy](#6-dm-access-policy-dmpolicy). |
|
|
319
|
+
| No group replies | `groupPolicy` enabled? Channel in allowlist? Mention required? See [Channel Access](#4-channel-access-grouppolicy). |
|
|
282
320
|
|
|
283
321
|
Found a bug? [Open an issue][issues] with transport type, config (redact secrets), and `openclaw channels status --probe` output.
|
|
284
322
|
|
|
285
323
|
## Development
|
|
286
324
|
|
|
287
325
|
```bash
|
|
288
|
-
git clone https://github.com/Seeed-Solution/
|
|
289
|
-
cd
|
|
326
|
+
git clone https://github.com/Seeed-Solution/MeshClaw.git
|
|
327
|
+
cd MeshClaw
|
|
290
328
|
npm install
|
|
291
|
-
openclaw plugins install -l ./
|
|
329
|
+
openclaw plugins install -l ./MeshClaw
|
|
292
330
|
```
|
|
293
331
|
|
|
294
332
|
No build step — OpenClaw loads TypeScript source directly. Use `openclaw channels status --probe` to verify.
|
|
@@ -300,7 +338,7 @@ No build step — OpenClaw loads TypeScript source directly. Use `openclaw chann
|
|
|
300
338
|
|
|
301
339
|
<!-- Reference-style links -->
|
|
302
340
|
[docs]: https://meshtastic.org/docs/
|
|
303
|
-
[issues]: https://github.com/Seeed-Solution/
|
|
341
|
+
[issues]: https://github.com/Seeed-Solution/MeshClaw/issues
|
|
304
342
|
[hw-xiao]: https://www.seeedstudio.com/Wio-SX1262-with-XIAO-ESP32S3-p-5982.html
|
|
305
343
|
[hw-wio]: https://www.seeedstudio.com/Wio-Tracker-L1-Pro-p-6454.html
|
|
306
344
|
[hw-sensecap]: https://www.seeedstudio.com/SenseCAP-Card-Tracker-T1000-E-for-Meshtastic-p-5913.html
|