omniwire 3.4.0 → 3.5.0

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.
@@ -1,57 +1,62 @@
1
1
  ---
2
2
  name: omniwire
3
- version: 2.1.0
4
- description: "Control your entire server mesh from chat. Execute commands, transfer files, manage Docker, sync configs, and monitor all your nodes — VPS, Raspberry Pi, laptop, desktop — through one unified interface. 30 MCP tools. Works on any architecture (x64, ARM, Apple Silicon). SSH2 with compression, encrypted config sync, 1Password secrets backend. Just say what you need and your agent runs it across every machine."
5
- tags: [infrastructure, mesh, ssh, devops, servers, vps, docker, remote, mcp, file-transfer, monitoring, config-sync, secrets, multi-node, raspberry-pi, arm]
3
+ version: 3.5.0
4
+ description: "Infrastructure layer for AI agent swarms 88 MCP tools for mesh control, A2A protocol, OmniMesh VPN, CyberSync, web scraping, firewall management, browser automation, and more. ~80ms execution."
5
+ tags: [infrastructure, mesh, ssh, devops, servers, docker, remote, mcp, vpn, wireguard, a2a, cybersync, firewall, scraping, browser, security, arm, monitoring, latest]
6
6
  author: VoidChecksum
7
7
  homepage: https://github.com/VoidChecksum/omniwire
8
+ license: GPL-3.0-only
8
9
  metadata:
9
10
  openclaw:
10
11
  emoji: "🌐"
12
+ primaryEnv: ""
13
+ skillKey: omniwire
11
14
  requires:
12
15
  bins: ["node", "ssh"]
13
16
  env: []
17
+ install:
18
+ - kind: node
19
+ package: omniwire@latest
20
+ bins: ["omniwire", "ow"]
14
21
  stateDirs: ["~/.omniwire"]
15
- persistence: "This skill uses OmniWire (npm package) to manage SSH connections to your mesh nodes. Config lives in ~/.omniwire/mesh.json. Encrypted secrets in ~/.omniwire/secret.key. No data leaves your network all operations run over your own SSH connections."
22
+ persistence: "OmniWire uses SSH2 to control mesh nodes. Config in ~/.omniwire/mesh.json. Encrypted secrets in ~/.omniwire/secret.key. CyberSync stores knowledge in PostgreSQL. No data leaves your network."
16
23
  ---
17
24
 
18
- # OmniWire — Mesh Control for OpenClaw
25
+ # OmniWire v3.5.0 — Mesh Control for AI Agent Swarms
19
26
 
20
- > **Your entire infrastructure, controlled from chat.**
27
+ > **88 MCP tools. 12 categories. Every machine, one agent, zero friction.**
21
28
 
22
- Tell your agent to run commands on any server, transfer files between nodes, manage Docker containers, check system health, sync configurations, and manage secrets across every machine you own. One skill. Any architecture.
29
+ OmniWire is the infrastructure layer for AI agent swarms. It connects your entire mesh (VPS, laptops, Raspberry Pis, Docker hosts) into a single controllable surface with 88 tools spanning execution, A2A protocol, OmniMesh VPN, CyberSync, web scraping, firewall management, CDP browser automation, and more.
23
30
 
24
31
  ```
25
- You: check disk usage on all my servers
32
+ You: check disk and container status on all servers
26
33
 
27
- Agent: [runs across all nodes simultaneously]
34
+ Agent: [omniwire_broadcast + omniwire_docker — parallel across all nodes]
28
35
 
29
- [server1] (142ms)
30
- /dev/sda1 1.2T 178G 16% /
31
-
32
- [server2] (198ms)
33
- /dev/sda1 50G 31G 61% /
34
-
35
- [rpi] (215ms)
36
- /dev/mmcblk0 32G 6.4G 20% /
36
+ contabo | 10.0.0.1 | ONLINE | 78ms | disk=16% | containers: 12 running
37
+ kali | 10.0.0.2 | ONLINE | 91ms | disk=34% | containers: 4 running
38
+ rpi | 10.0.0.3 | ONLINE | 112ms | disk=20% | containers: 2 running
37
39
  ```
38
40
 
39
41
  ---
40
42
 
41
43
  ## What It Does
42
44
 
43
- OmniWire connects all your machines (VPS, laptops, Raspberry Pis, desktops) into one mesh that your OpenClaw agent can control. It provides **30 tools** across 8 categories:
44
-
45
- | Category | What your agent can do |
46
- |----------|----------------------|
47
- | **Execute** | Run any command on any node or all nodes at once |
48
- | **Files** | Read, write, list, search files on any machine |
49
- | **Transfer** | Move files between nodes (auto-selects fastest method) |
50
- | **Docker** | Manage containers, images, logs across nodes |
51
- | **Monitor** | CPU, memory, disk, network, processes live |
52
- | **Services** | Start/stop/restart systemd services remotely |
53
- | **Secrets** | Store, retrieve, sync secrets (1Password or file-based) |
54
- | **Sync** | Keep configs synchronized across all machines |
45
+ | Category | Tools | What your agent can do |
46
+ |----------|-------|----------------------|
47
+ | **Execution** | 6 | Run commands, scripts, pipelines, background jobs on any node |
48
+ | **Agentic / A2A** | 13 | Agent tasks, messaging, blackboard, workflows, semaphores, registries |
49
+ | **Files** | 6 | Read, write, list, find, transfer, deploy files across nodes |
50
+ | **Monitoring** | 4 | Mesh health, live metrics, benchmarks, node info |
51
+ | **System / DevOps** | 14 | Processes, disks, packages, services, Docker, kernel, cron, git, logs |
52
+ | **Network / VPN** | 7 | VPN switching, port forwarding, browser, shell, streams, proxy, scraping |
53
+ | **Security** | 6 | Firewall, certs, audit, 2FA/TOTP, cookies, user management |
54
+ | **CyberSync** | 9 | Bi-directional config sync for 6 AI tools + knowledge/memory |
55
+ | **Knowledge** | 2 | Store and search unified knowledge base (pgvector) |
56
+ | **OmniMesh** | 3 | WireGuard mesh manager, expose services, gateway routing |
57
+ | **Events** | 1 | Webhook + WebSocket + SSE event bus |
58
+ | **CDP Browser** | 1 | 18 browser actions via persistent Docker Chrome |
59
+ | **Utilities** | 10+ | Alerts, aliases, backups, snippets, DNS, diagnostics, scheduling |
55
60
 
56
61
  ---
57
62
 
@@ -61,199 +66,396 @@ OmniWire connects all your machines (VPS, laptops, Raspberry Pis, desktops) into
61
66
 
62
67
  > **AGENT: Run this via exec. User just clicks Approve.**
63
68
 
64
- ```
65
- npm install -g omniwire
69
+ ```bash
70
+ npm install -g omniwire@latest
66
71
  ```
67
72
 
68
- Works on: Linux (x64, ARM, armv7l), macOS (Intel + Apple Silicon), Windows, Raspberry Pi.
73
+ Works on: Linux (x64, ARM64, ARMv7), macOS (Intel + Apple Silicon), Windows (x64).
69
74
 
70
75
  ### Step 2: Configure Your Mesh
71
76
 
72
77
  Create the mesh config. Ask the user for their server details:
73
78
 
74
79
  > **AGENT: Ask the user:**
75
- > "What servers do you want to control? I need for each one:
76
- > - A name (e.g., `server1`, `rpi`, `laptop`)
80
+ > "What servers do you want to control? For each one I need:
81
+ > - A name (e.g., `contabo`, `kali`, `rpi`)
77
82
  > - IP address or hostname
78
83
  > - SSH user (usually `root`)
79
- > - SSH key filename in ~/.ssh/ (e.g., `id_ed25519`)"
84
+ > - SSH key filename in ~/.ssh/ (e.g., `id_ed25519`)
85
+ > - Role: `storage`, `compute`, `gpu+browser`, or leave blank"
80
86
 
81
- Then create the config via exec:
87
+ Then create the config:
82
88
 
83
- ```
89
+ ```bash
84
90
  mkdir -p ~/.omniwire
85
91
  cat > ~/.omniwire/mesh.json << 'EOF'
86
92
  {
87
93
  "nodes": [
88
94
  {
89
- "id": "SERVER_NAME",
90
- "host": "SERVER_IP",
95
+ "id": "contabo",
96
+ "host": "10.0.0.1",
91
97
  "user": "root",
92
98
  "identityFile": "id_ed25519",
93
99
  "role": "storage",
94
- "tags": ["vps"]
100
+ "tags": ["vps", "docker"]
101
+ },
102
+ {
103
+ "id": "kali",
104
+ "host": "10.0.0.2",
105
+ "user": "root",
106
+ "identityFile": "id_ed25519",
107
+ "role": "compute",
108
+ "tags": ["kali", "pentest"]
95
109
  }
96
- ]
110
+ ],
111
+ "cyberbase": {
112
+ "host": "10.10.0.1",
113
+ "port": 5432,
114
+ "database": "cyberbase",
115
+ "user": "cyberbase"
116
+ }
97
117
  }
98
118
  EOF
99
119
  ```
100
120
 
101
- **Roles:** `storage` (file server/DB), `compute` (heavy processing), `gpu+browser` (GPU/display), or omit for general.
102
-
103
121
  ### Step 3: Verify
104
122
 
105
- ```
106
- echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' | omniwire --stdio --no-sync 2>/dev/null | head -1
123
+ ```bash
124
+ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' \
125
+ | omniwire --stdio --no-sync 2>/dev/null | head -1
107
126
  ```
108
127
 
109
- Should show `omniwire v2.1.0`. Done.
128
+ Should respond with `omniwire v3.5.0`. Done.
110
129
 
111
- ---
130
+ **Transport options:**
112
131
 
113
- ## How to Use Just Talk
132
+ | Transport | Command | Port |
133
+ |-----------|---------|------|
134
+ | stdio (MCP default) | `omniwire --stdio` | — |
135
+ | SSE (HTTP streaming) | `omniwire --sse` | 3200 |
136
+ | REST (HTTP JSON) | `omniwire --rest` | 3201 |
137
+ | Events (WebSocket) | `omniwire --events` | 3202 |
114
138
 
115
- Once set up, just tell your agent what you need. It uses OmniWire's MCP tools automatically.
139
+ ---
116
140
 
117
- ### Run commands anywhere
141
+ ## Usage Examples
142
+
143
+ ### Execute commands anywhere
118
144
 
119
145
  ```
120
- You: restart nginx on server1
146
+ You: restart nginx on contabo
121
147
 
122
- Agent: [exec on server1] systemctl restart nginx
123
- nginx restarted
148
+ Agent: [omniwire_exec node=contabo command="systemctl restart nginx"]
149
+ OK nginx restarted (0ms)
124
150
 
125
- You: show me what's using the most CPU on all servers
151
+ You: run uptime on every server
126
152
 
127
- Agent: [broadcast to all nodes]
128
- [server1] node (45% CPU) — omnibus-hub
129
- [server2] python3 (23% CPU) — training job
130
- [rpi] chromium (12% CPU) — dashboard
153
+ Agent: [omniwire_broadcast command="uptime"]
154
+ contabo | up 42 days, 3:21
155
+ kali | up 7 days, 11:04
156
+ rpi | up 2 days, 0:15
131
157
  ```
132
158
 
133
- ### Transfer files between machines
159
+ ### Transfer files between nodes
134
160
 
135
161
  ```
136
- You: copy /var/log/app.log from server1 to server2
162
+ You: copy the pentest report from kali to contabo
137
163
 
138
- Agent: Transferred 4.2MB via netcat+gzip in 180ms (23.3 MB/s)
164
+ Agent: [omniwire_transfer_file src_node=kali dest_node=contabo src=/root/report.pdf dest=/var/reports/]
165
+ Transferred 2.4MB — LZ4 compressed — 83ms
139
166
  ```
140
167
 
141
- OmniWire auto-selects the fastest transfer mode:
142
- - **SFTP** for files under 10MB (zero overhead)
143
- - **netcat+gzip** for 10MB-1GB (compressed TCP stream)
168
+ Transfer modes (auto-selected):
169
+ - **SFTP** for files under 10MB
170
+ - **netcat + LZ4** for 10MB1GB
144
171
  - **aria2c** for files over 1GB (16 parallel connections)
145
172
 
146
- ### Manage Docker
173
+ ### Docker management
147
174
 
148
175
  ```
149
- You: what containers are running on server1?
176
+ You: what containers are running on contabo?
150
177
 
151
- Agent: [server1] docker ps
152
- 12 running · 3 stopped
153
- kali-htb redamon-agent omnibus-hub neo4j postgres ...
178
+ Agent: [omniwire_docker node=contabo action=ps]
179
+ 12 running neo4j, postgres, omnibus-hub, kali-htb, omniwire-events...
154
180
 
155
- You: restart the neo4j container
181
+ You: pull and start the latest omniwire-events image
156
182
 
157
- Agent: [server1] docker restart neo4j
158
- neo4j restarted (healthy)
183
+ Agent: [omniwire_container node=contabo action=pull image=omniwire-events:latest]
184
+ Pulled. Starting...
185
+ ✓ omniwire-events running (healthy)
159
186
  ```
160
187
 
161
- ### Monitor everything
188
+ ### Monitor mesh health
162
189
 
163
190
  ```
164
- You: how are my servers doing?
191
+ You: how are all my servers doing?
165
192
 
166
- Agent: [mesh status — all nodes parallel]
193
+ Agent: [omniwire_mesh_status]
167
194
 
168
- server1 (storage) | 10.0.0.1 | ONLINE | 142ms | load=2.3 | mem=26% | disk=16%
169
- server2 (compute) | 10.0.0.2 | ONLINE | 198ms | load=1.4 | mem=27% | disk=61%
170
- rpi (gpu) | 10.0.0.3 | ONLINE | 215ms | load=0.7 | mem=21% | disk=20%
195
+ contabo | 10.0.0.1 | ONLINE | 78ms | load=1.2 | mem=31% | disk=16%
196
+ kali | 10.0.0.2 | ONLINE | 91ms | load=0.4 | mem=19% | disk=34%
197
+ rpi | 10.0.0.3 | ONLINE | 112ms | load=0.7 | mem=22% | disk=20%
171
198
  ```
172
199
 
173
- ### Manage secrets across nodes
200
+ ### VPN switching
201
+
202
+ ```
203
+ You: switch to Mullvad on the kali node
174
204
 
205
+ Agent: [omniwire_vpn node=kali action=connect provider=mullvad country=nl]
206
+ Connected — Netherlands exit — mesh routes preserved
207
+ New IP: 185.65.134.x
175
208
  ```
176
- You: store my API key across all servers
177
209
 
178
- Agent: What's the key name and value?
210
+ Supported providers: Mullvad, OpenVPN, WireGuard, Tailscale. OmniMesh routes are protected during VPN switches.
179
211
 
180
- You: OPENAI_KEY = sk-proj-abc123...
212
+ ### Web scraping with Cloudflare bypass
181
213
 
182
- Agent: [omniwire_secrets set + sync]
183
- server1: OK
184
- server2: OK
185
- rpi: OK
186
- ✓ Synced OPENAI_KEY to 3 nodes
187
214
  ```
215
+ You: scrape the pricing table from example.com
188
216
 
189
- Supports **1Password** backend configure in `~/.omniwire/secrets.json`:
190
- ```json
191
- {"backend": "onepassword", "vault": "Infrastructure"}
217
+ Agent: [omniwire_scrape node=contabo url=https://example.com/pricing selector=".pricing-table"]
218
+ Scraped 4.2KB — Scrapling engine — Cloudflare bypassed
219
+ [returns structured data]
192
220
  ```
193
221
 
194
- ### Sync configurations
222
+ ### A2A agent messaging
195
223
 
196
- CyberSync keeps your AI tool configs (Claude Code, OpenCode, OpenClaw, Codex, Gemini) synchronized across all machines:
224
+ ```
225
+ You: send a task to the pentest agent on kali
226
+
227
+ Agent: [omniwire_agent_task node=kali agent_id=pentest-agent task={type:"scan", target:"192.168.1.0/24"}]
228
+ Task queued — ID: task_abc123
197
229
 
230
+ Agent: [omniwire_blackboard action=watch key=task_abc123/result]
231
+ Result ready: {hosts: 12, open_ports: [...]}
198
232
  ```
199
- You: sync my claude code settings to all servers
200
233
 
201
- Agent: [cybersync_sync_now]
202
- Reconciled: pushed=3, pulled=0, conflicts=0
203
- ✓ All nodes up to date
234
+ ### COC — Unified CyberBase + Obsidian + Canvas sync
235
+
204
236
  ```
237
+ You: COC save — OmniWire v3.5.0 deployed with 88 tools
205
238
 
206
- Sensitive files (settings.json, credentials, memory) are encrypted at rest with **XChaCha20-Poly1305**.
239
+ Agent: [omniwire_coc action=save note="OmniWire v3.5.0 deployed with 88 tools"]
240
+ Saved to CyberBase (knowledge table)
241
+ Mirrored to Obsidian vault: CyberBase/omniwire-v350.md
242
+ Canvas node updated: CyberBase MindMap.canvas
243
+ ✓ All 3 sync targets confirmed
244
+ ```
207
245
 
208
246
  ---
209
247
 
210
- ## All 30 Tools
248
+ ## Full Tool Reference
249
+
250
+ <details>
251
+ <summary><strong>Execution (6 tools)</strong></summary>
252
+
253
+ | Tool | Description |
254
+ |------|-------------|
255
+ | `omniwire_exec` | Execute a command on a specific node. Args: `node`, `command`, `timeout`, `background` |
256
+ | `omniwire_run` | Run a named script or predefined task. Args: `node`, `script`, `args` |
257
+ | `omniwire_batch` | Execute multiple commands across multiple nodes in one call. Args: `commands[]` |
258
+ | `omniwire_broadcast` | Execute command on ALL nodes simultaneously. Args: `command`, `tags` (filter by tag) |
259
+ | `omniwire_pipeline` | Chain commands where output of one feeds into next. Args: `node`, `steps[]` |
260
+ | `omniwire_bg` | Background task manager — dispatch, poll, get result. Args: `action`, `task_id` |
261
+
262
+ </details>
263
+
264
+ <details>
265
+ <summary><strong>Agentic / A2A Protocol (13 tools)</strong></summary>
266
+
267
+ | Tool | Description |
268
+ |------|-------------|
269
+ | `omniwire_store` | Key-value store for agents. Actions: get, set, delete, list. Args: `key`, `value`, `ttl` |
270
+ | `omniwire_watch` | Watch a key for changes (long-poll). Args: `key`, `timeout` |
271
+ | `omniwire_healthcheck` | Check agent health status across nodes. Args: `agent_id`, `node` |
272
+ | `omniwire_agent_task` | Dispatch a structured task to a named agent. Args: `node`, `agent_id`, `task` |
273
+ | `omniwire_a2a_message` | Send an A2A protocol message between agents. Args: `to`, `from`, `message`, `reply_to` |
274
+ | `omniwire_semaphore` | Distributed semaphore for agent coordination. Actions: acquire, release. Args: `name`, `count` |
275
+ | `omniwire_event` | Emit a named event into the event bus. Args: `event`, `data`, `targets[]` |
276
+ | `omniwire_workflow` | Execute a multi-step workflow definition. Args: `workflow_id`, `input` |
277
+ | `omniwire_agent_registry` | Register/discover agents by capability. Actions: register, lookup, list |
278
+ | `omniwire_blackboard` | Shared blackboard for agent state. Actions: read, write, watch, clear |
279
+ | `omniwire_task_queue` | Distributed task queue. Actions: push, pop, peek, size |
280
+ | `omniwire_capability` | Declare/query agent capabilities. Args: `agent_id`, `capabilities[]` |
281
+ | `omniwire_coc` | COC — unified CyberBase + Obsidian + Canvas sync. Actions: save, read, search, update |
282
+
283
+ </details>
284
+
285
+ <details>
286
+ <summary><strong>Files (6 tools)</strong></summary>
287
+
288
+ | Tool | Description |
289
+ |------|-------------|
290
+ | `omniwire_read_file` | Read file from any node. Args: `node`, `path`, `encoding`, `lines` |
291
+ | `omniwire_write_file` | Write file to any node. Args: `node`, `path`, `content`, `mode` |
292
+ | `omniwire_list_files` | List directory on any node. Args: `node`, `path`, `recursive`, `filter` |
293
+ | `omniwire_find_files` | Search files across nodes by name/content/pattern. Args: `node`, `query`, `path` |
294
+ | `omniwire_transfer_file` | Copy files between nodes (auto-selects SFTP/LZ4/aria2c). Args: `src_node`, `dest_node`, `src`, `dest` |
295
+ | `omniwire_deploy` | Push files or directories to multiple nodes simultaneously. Args: `src`, `nodes[]`, `dest` |
296
+
297
+ </details>
298
+
299
+ <details>
300
+ <summary><strong>Monitoring (4 tools)</strong></summary>
301
+
302
+ | Tool | Description |
303
+ |------|-------------|
304
+ | `omniwire_mesh_status` | Health check all nodes — latency, load, memory, disk. Cached 5s. |
305
+ | `omniwire_node_info` | Detailed info for one node — OS, CPU, uptime, IPs. Args: `node` |
306
+ | `omniwire_live_monitor` | Live system metrics snapshot. Args: `node`, `interval`, `metrics[]` |
307
+ | `omniwire_benchmark` | Benchmark node performance — CPU, disk, network. Args: `node`, `type` |
308
+
309
+ </details>
310
+
311
+ <details>
312
+ <summary><strong>System / DevOps (14 tools)</strong></summary>
313
+
314
+ | Tool | Description |
315
+ |------|-------------|
316
+ | `omniwire_process_list` | List and filter processes. Args: `node`, `filter`, `sort` |
317
+ | `omniwire_disk_usage` | Disk usage — all mounts or specific path. Args: `node`, `path` |
318
+ | `omniwire_install_package` | Install packages via apt/npm/pip/brew. Args: `node`, `package`, `manager` |
319
+ | `omniwire_service_control` | systemd start/stop/restart/status/enable. Args: `node`, `service`, `action` |
320
+ | `omniwire_docker` | Docker commands (ps, logs, exec, stats, images). Args: `node`, `action`, `container` |
321
+ | `omniwire_container` | Container lifecycle — pull, run, stop, rm, inspect. Args: `node`, `action`, `image` |
322
+ | `omniwire_kernel` | dmesg, sysctl, modprobe, strace, perf. Args: `node`, `action`, `args` |
323
+ | `omniwire_cron` | Manage cron jobs — list, add, remove. Args: `node`, `action`, `schedule`, `command` |
324
+ | `omniwire_env` | Read/write environment variables. Args: `node`, `action`, `key`, `value` |
325
+ | `omniwire_network` | Network info — interfaces, routes, connections, iptables. Args: `node`, `action` |
326
+ | `omniwire_git` | Git operations on remote nodes. Args: `node`, `repo`, `action`, `args` |
327
+ | `omniwire_syslog` | Read system logs. Args: `node`, `service`, `lines`, `since` |
328
+ | `omniwire_log_aggregate` | Aggregate logs from multiple nodes. Args: `nodes[]`, `service`, `query` |
329
+ | `omniwire_metrics` | Push/pull metrics (Prometheus-compatible). Args: `node`, `action`, `metrics` |
330
+
331
+ </details>
332
+
333
+ <details>
334
+ <summary><strong>Network / VPN (7 tools)</strong></summary>
335
+
336
+ | Tool | Description |
337
+ |------|-------------|
338
+ | `omniwire_vpn` | VPN management — Mullvad, OpenVPN, WireGuard, Tailscale. Args: `node`, `action`, `provider`, `country` |
339
+ | `omniwire_port_forward` | SSH tunnel / port forwarding. Args: `node`, `local_port`, `remote_host`, `remote_port` |
340
+ | `omniwire_open_browser` | Open URL on GPU/display node. Args: `node`, `url` |
341
+ | `omniwire_shell` | Persistent shell session (state preserved). Args: `node`, `session_id`, `command` |
342
+ | `omniwire_stream` | Real-time streaming output from long-running commands. Args: `node`, `command` |
343
+ | `omniwire_proxy` | HTTP/SOCKS proxy management. Args: `node`, `action`, `port`, `type` |
344
+ | `omniwire_scrape` | Scrapling-powered web scraping with Cloudflare bypass. Args: `node`, `url`, `selector`, `format` |
345
+
346
+ </details>
347
+
348
+ <details>
349
+ <summary><strong>Security (6 tools)</strong></summary>
211
350
 
212
- Your agent has access to these automatically via MCP:
351
+ | Tool | Description |
352
+ |------|-------------|
353
+ | `omniwire_firewall` | iptables / ufw / nftables management. Args: `node`, `action`, `rule` |
354
+ | `omniwire_cert` | TLS certificate management (Let's Encrypt, self-signed). Args: `node`, `domain`, `action` |
355
+ | `omniwire_audit` | Security audit — open ports, SUID files, cron jobs, users. Args: `node`, `checks[]` |
356
+ | `omniwire_2fa` | TOTP manager — generate, add, delete codes. CyberBase + 1Password persistence. Args: `action`, `service` |
357
+ | `omniwire_cookies` | Browser cookie export/import (JSON, Header String, Netscape). Args: `node`, `action`, `browser` |
358
+ | `omniwire_user` | User account management — create, delete, sudo, SSH keys. Args: `node`, `action`, `username` |
359
+
360
+ </details>
361
+
362
+ <details>
363
+ <summary><strong>CyberSync (9 tools)</strong></summary>
364
+
365
+ CyberSync provides bi-directional config sync for 6 AI tools: **Claude Code, OpenCode, OpenClaw, Codex, Gemini, PaperClip**. All sensitive files encrypted with XChaCha20-Poly1305 at rest.
213
366
 
214
- ### Core (22 tools)
215
367
  | Tool | Description |
216
368
  |------|-------------|
217
- | `omniwire_exec` | Execute command on a specific node |
218
- | `omniwire_broadcast` | Execute on all nodes simultaneously |
219
- | `omniwire_mesh_status` | Health + resources for all nodes |
220
- | `omniwire_node_info` | Detailed info for one node |
221
- | `omniwire_read_file` | Read file from any node |
222
- | `omniwire_write_file` | Write file to any node |
223
- | `omniwire_transfer_file` | Copy files between nodes (auto mode) |
224
- | `omniwire_list_files` | List directory on any node |
225
- | `omniwire_find_files` | Search files across all nodes |
226
- | `omniwire_tail_log` | Read last N lines of a log |
227
- | `omniwire_process_list` | List processes (filterable) |
228
- | `omniwire_disk_usage` | Disk usage across nodes |
229
- | `omniwire_install_package` | Install via apt/npm/pip |
230
- | `omniwire_service_control` | systemd start/stop/restart/status |
231
- | `omniwire_docker` | Docker commands on any node |
232
- | `omniwire_open_browser` | Open URL on GUI node |
233
- | `omniwire_port_forward` | SSH tunnel management |
234
- | `omniwire_deploy` | Push files to multiple nodes |
235
- | `omniwire_kernel` | dmesg, sysctl, modprobe, strace, perf |
236
- | `omniwire_shell` | Persistent shell sessions (preserves state) |
237
- | `omniwire_stream` | Real-time streaming output |
238
- | `omniwire_live_monitor` | Live system metrics snapshot |
239
-
240
- ### CyberSync (8 tools)
369
+ | `omniwire_sync` | Sync a specific file or directory across nodes. Args: `path`, `nodes[]`, `direction` |
370
+ | `omniwire_sync_rules` | Manage sync rules (include/exclude patterns). Args: `action`, `rule` |
371
+ | `omniwire_sync_hooks` | Pre/post sync hooks. Args: `action`, `hook_script` |
372
+ | `omniwire_sync_memory` | Sync Claude/agent memory to CyberBase. Args: `action`, `node` |
373
+ | `omniwire_sync_agents` | Sync agent definitions across nodes. Args: `action`, `nodes[]` |
374
+ | `cybersync_status` | Sync status item counts, heartbeats, last sync time per tool |
375
+ | `cybersync_sync_now` | Force immediate reconciliation across all nodes |
376
+ | `cybersync_diff` | Show what's out of sync before committing |
377
+ | `cybersync_history` | Sync event log what changed, when, which node |
378
+
379
+ </details>
380
+
381
+ <details>
382
+ <summary><strong>Knowledge (2 tools)</strong></summary>
383
+
241
384
  | Tool | Description |
242
385
  |------|-------------|
243
- | `cybersync_status` | Sync status, item counts, heartbeats |
244
- | `cybersync_sync_now` | Force immediate reconciliation |
245
- | `cybersync_diff` | Show what needs syncing |
246
- | `cybersync_history` | Sync event log |
247
- | `cybersync_search_knowledge` | Search unified knowledge base |
248
- | `cybersync_get_memory` | Query Claude memory from DB |
249
- | `cybersync_manifest` | Show tracked files per tool |
250
- | `cybersync_force_push` | Push specific file to all nodes |
251
-
252
- ### Secrets + Update
386
+ | `omniwire_knowledge` | Store knowledge entries in CyberBase with vector embedding. Args: `action`, `key`, `content`, `tags` |
387
+ | `omniwire_search_knowledge` | Semantic search over knowledge base (pgvector). Args: `query`, `limit`, `tags` |
388
+
389
+ </details>
390
+
391
+ <details>
392
+ <summary><strong>OmniMesh (3 tools)</strong></summary>
393
+
394
+ OmniMesh is OmniWire's built-in WireGuard mesh manager. It provisions, rotates keys, and manages peer routing automatically.
395
+
253
396
  | Tool | Description |
254
397
  |------|-------------|
255
- | `omniwire_secrets` | Get/set/delete/list/sync secrets |
256
- | `omniwire_update` | Check for updates + self-update |
398
+ | `omniwire_omnimesh` | Mesh lifecycle — init, add-node, remove-node, rotate-keys, status. Args: `action`, `node` |
399
+ | `omniwire_mesh_expose` | Expose a local service to the mesh via WireGuard. Args: `node`, `service`, `port`, `mesh_port` |
400
+ | `omniwire_mesh_gateway` | Configure a node as a mesh gateway (egress/ingress). Args: `node`, `action`, `routes[]` |
401
+
402
+ </details>
403
+
404
+ <details>
405
+ <summary><strong>Events (1 tool)</strong></summary>
406
+
407
+ | Tool | Description |
408
+ |------|-------------|
409
+ | `omniwire_events` | Event bus — subscribe, publish, list. Supports Webhook callbacks, WebSocket push (port 3202), and SSE streaming. Args: `action`, `event`, `handler_url` |
410
+
411
+ </details>
412
+
413
+ <details>
414
+ <summary><strong>CDP Browser (1 tool)</strong></summary>
415
+
416
+ `omniwire_cdp` provides 18 browser actions via a persistent Docker Chrome instance on any node. Sessions persist between calls. Cookies auto-exported in JSON + Header String + Netscape format.
417
+
418
+ | Action | Description |
419
+ |--------|-------------|
420
+ | `navigate` | Navigate to URL |
421
+ | `screenshot` | Capture page screenshot |
422
+ | `click` | Click element by selector |
423
+ | `type` | Type text into input |
424
+ | `scroll` | Scroll page |
425
+ | `evaluate` | Execute JavaScript |
426
+ | `get_html` | Get page HTML |
427
+ | `get_text` | Get visible text |
428
+ | `wait_for` | Wait for selector/navigation |
429
+ | `fill_form` | Fill multiple form fields |
430
+ | `select` | Select dropdown option |
431
+ | `hover` | Hover element |
432
+ | `upload` | Upload file to input |
433
+ | `download` | Download file |
434
+ | `cookies_get` | Export cookies |
435
+ | `cookies_set` | Import cookies |
436
+ | `session_save` | Persist session state |
437
+ | `session_load` | Restore session state |
438
+
439
+ </details>
440
+
441
+ <details>
442
+ <summary><strong>Utilities (10+ tools)</strong></summary>
443
+
444
+ | Tool | Description |
445
+ |------|-------------|
446
+ | `omniwire_alert` | Send alert via Telegram/webhook/email. Args: `message`, `channel`, `priority` |
447
+ | `omniwire_alias` | Manage command aliases for nodes. Args: `action`, `name`, `command` |
448
+ | `omniwire_backup` | Backup files/DBs to remote storage. Args: `node`, `path`, `dest`, `compress` |
449
+ | `omniwire_clipboard` | Read/write clipboard on GUI node. Args: `node`, `action`, `content` |
450
+ | `omniwire_snippet` | Store and retrieve command snippets. Args: `action`, `name`, `content` |
451
+ | `omniwire_tail_log` | Tail last N lines of a log file. Args: `node`, `path`, `lines` |
452
+ | `omniwire_trace` | Distributed trace for debugging command chains. Args: `trace_id`, `action` |
453
+ | `omniwire_update` | Check for OmniWire updates + self-update. Args: `action` |
454
+ | `omniwire_schedule` | Schedule tasks (cron-style). Args: `action`, `schedule`, `task` |
455
+ | `omniwire_dns` | DNS lookup and management. Args: `node`, `query`, `type` |
456
+ | `omniwire_doctor` | Diagnose OmniWire setup issues. Args: `checks[]` |
457
+
458
+ </details>
257
459
 
258
460
  ---
259
461
 
@@ -261,13 +463,16 @@ Your agent has access to these automatically via MCP:
261
463
 
262
464
  | Operation | Speed |
263
465
  |-----------|-------|
264
- | Command execution | ~120ms per node |
265
- | File read (< 1MB) | ~80ms (SFTP) |
266
- | File transfer (10MB) | ~200ms (gzip netcat) |
267
- | Config sync (push all) | ~200ms (parallel) |
268
- | Mesh status check | ~150ms (cached 5s) |
466
+ | Command execution | ~80ms per node |
467
+ | File read (< 1MB) | ~60ms (SFTP) |
468
+ | File transfer (10MB) | ~150ms (LZ4 netcat) |
469
+ | Mesh status check | ~100ms (cached 5s) |
470
+ | COC sync (all 3 targets) | ~200ms (parallel) |
471
+ | Web scrape (no JS) | ~300ms |
472
+ | Web scrape (Cloudflare) | ~800ms |
473
+ | CDP browser action | ~120ms |
269
474
 
270
- All connections use **SSH2 with zlib compression** over your existing network (WireGuard, Tailscale, direct SSH — anything works).
475
+ Encryption: **AES-128-GCM** for transport, **XChaCha20-Poly1305** for at-rest sync items. Compression: **LZ4** for transfers.
271
476
 
272
477
  ---
273
478
 
@@ -275,24 +480,30 @@ All connections use **SSH2 with zlib compression** over your existing network (W
275
480
 
276
481
  | Platform | Architecture | Status |
277
482
  |----------|-------------|--------|
278
- | Linux | x64 | |
279
- | Linux | arm64 (RPi 4/5, AWS Graviton) | |
280
- | Linux | armv7l (RPi 3, older ARM) | |
281
- | macOS | Intel (x64) | |
282
- | macOS | Apple Silicon (arm64) | |
283
- | Windows | x64 | |
483
+ | Linux | x64 | Supported |
484
+ | Linux | arm64 (RPi 4/5, AWS Graviton) | Supported |
485
+ | Linux | armv7l (RPi 3, older ARM) | Supported |
486
+ | macOS | Intel (x64) | Supported |
487
+ | macOS | Apple Silicon (arm64) | Supported |
488
+ | Windows | x64 | Supported |
489
+
490
+ No native compilation. Pure JavaScript + SSH2. `npm install -g omniwire` works everywhere Node.js 18+ runs.
284
491
 
285
- No native compilation required pure JavaScript + SSH2. `npm install -g omniwire` works everywhere Node.js runs.
492
+ **Transports:** stdio (MCP standard), SSE port 3200, REST port 3201, Events/WebSocket port 3202.
286
493
 
287
494
  ---
288
495
 
289
496
  ## Security
290
497
 
291
- - **Transport**: SSH2 with zlib compression (encrypted by default)
292
- - **At-rest encryption**: XChaCha20-Poly1305 for sensitive sync items
293
- - **Secrets**: 1Password, file-based, or env var backends
294
- - **No external services**: Everything runs on your own infrastructure
295
- - **Key management**: Master key in `~/.omniwire/secret.key` (generated locally, never transmitted)
498
+ | Layer | Implementation |
499
+ |-------|---------------|
500
+ | Transport | SSH2 with zlib compression |
501
+ | At-rest (sync items) | XChaCha20-Poly1305 |
502
+ | Transfer compression | LZ4 |
503
+ | Secrets backend | 1Password, file-based, or env vars |
504
+ | Network | All traffic over your own infrastructure (WireGuard, Tailscale, direct SSH) |
505
+ | Key management | Master key in `~/.omniwire/secret.key` — generated locally, never transmitted |
506
+ | Mesh auth | Per-node WireGuard keypairs, auto-rotated by OmniMesh |
296
507
 
297
508
  ---
298
509
 
@@ -300,55 +511,122 @@ No native compilation required — pure JavaScript + SSH2. `npm install -g omniw
300
511
 
301
512
  ### When to use OmniWire tools
302
513
 
303
- Use OmniWire tools when the user:
304
- - Mentions servers, VPS, nodes, infrastructure, or "my machines"
305
- - Wants to run commands remotely ("run X on server1", "check Y on all servers")
306
- - Needs to transfer, read, or write files on remote machines
307
- - Asks about Docker containers on remote nodes
308
- - Wants to monitor system resources across machines
309
- - Needs to manage secrets or sync configurations
310
- - Mentions "deploy", "restart service", "install package" on remote targets
514
+ Use OmniWire when the user:
515
+ - Mentions servers, VPS, nodes, mesh, or "my machines"
516
+ - Wants commands run remotely or on all servers
517
+ - Needs files read, written, or transferred between nodes
518
+ - Asks about Docker, services, processes, or system health on remote nodes
519
+ - Wants to switch VPN, manage firewall rules, or handle certs
520
+ - Mentions "scrape", "browser", "CDP", or web automation on a remote node
521
+ - Wants to sync configs, save memory, or COC/save something
522
+ - Uses agent-to-agent workflows (A2A, blackboard, task queues)
523
+ - Needs TOTP codes, cookies, or security audit
524
+ - Mentions "COC", "Save to CyberBase", "Obsidian", or canvas sync
311
525
 
312
526
  ### How to pick the right tool
313
527
 
314
- - **Single node command** → `omniwire_exec`
315
- - **All nodes at once** → `omniwire_broadcast`
316
- - **Read a remote file** `omniwire_read_file`
317
- - **Copy between nodes** `omniwire_transfer_file`
318
- - **Docker anything** `omniwire_docker`
319
- - **Check health** `omniwire_mesh_status`
320
- - **Store a secret** `omniwire_secrets` (action: set)
321
- - **Sync configs** `cybersync_sync_now`
322
-
323
- ### Default node selection
528
+ | Intent | Tool |
529
+ |--------|------|
530
+ | Single node command | `omniwire_exec` |
531
+ | All nodes at once | `omniwire_broadcast` |
532
+ | Read remote file | `omniwire_read_file` |
533
+ | Copy between nodes | `omniwire_transfer_file` |
534
+ | Docker anything | `omniwire_docker` |
535
+ | Container lifecycle | `omniwire_container` |
536
+ | Mesh health check | `omniwire_mesh_status` |
537
+ | VPN switch | `omniwire_vpn` |
538
+ | Firewall rule | `omniwire_firewall` |
539
+ | Web scrape | `omniwire_scrape` |
540
+ | Browser automation | `omniwire_cdp` |
541
+ | Send agent task | `omniwire_agent_task` |
542
+ | Shared state | `omniwire_blackboard` |
543
+ | Event bus | `omniwire_event` or `omniwire_events` |
544
+ | COC save/sync | `omniwire_coc` |
545
+ | Semantic search | `omniwire_search_knowledge` |
546
+ | Background job | `omniwire_bg` |
547
+ | Sync AI configs | `cybersync_sync_now` |
548
+
549
+ ### Node selection defaults
324
550
 
325
551
  If the user doesn't specify a node:
326
- - File storage operationsuse the node with `role: "storage"`
327
- - Docker operationsuse the node with `role: "storage"` (usually the Docker host)
328
- - Browser operations use the node with `role: "gpu+browser"`
329
- - Heavy compute → use `role: "compute"`
330
- - If unclear, ask: "Which server should I run this on?"
552
+ - File storage, databases, Docker → node with `role: "storage"`
553
+ - Security/pentest tools → node with tag `"kali"` or `"pentest"`
554
+ - GPU / display / browser node with `role: "gpu+browser"`
555
+ - Heavy compute → node with `role: "compute"`
556
+ - Background task dispatch `omniwire_bg` with any available node
557
+ - If ambiguous, ask: "Which server should I run this on?"
558
+
559
+ ### Background mode
560
+
561
+ All 88 tools support `background: true`. Use it for:
562
+ - Any operation expected to take > 5 seconds
563
+ - Builds, installs, deploys, large transfers
564
+ - Scraping and CDP sessions
565
+ - Long-running pipelines
566
+
567
+ ```
568
+ omniwire_exec(node="contabo", command="apt upgrade -y", background=true)
569
+ → returns task_id immediately
570
+ → poll with omniwire_bg(action="poll", task_id="...")
571
+ → get result with omniwire_bg(action="result", task_id="...")
572
+ ```
331
573
 
332
574
  ### Error handling
333
575
 
334
- - If a node is offline, tell the user and offer to try another node
335
- - If a command fails, show the error and suggest fixes
336
- - If transfer fails, retry with a different mode
576
+ - If a node is offline, report it and offer alternatives
577
+ - If exec fails, show stderr and suggest fixes
578
+ - If transfer fails, retry with a different mode (SFTP → LZ4 → aria2c)
579
+ - If VPN connects but mesh breaks, restore mesh routes automatically (built-in)
580
+ - For persistent shell failures, use `omniwire_shell` with a new `session_id`
337
581
 
338
582
  ---
339
583
 
340
- ## Links
584
+ ## OpenClaw + PaperClip Integration
341
585
 
342
- - **GitHub**: https://github.com/VoidChecksum/omniwire
343
- - **NPM**: https://www.npmjs.com/package/omniwire
344
- - **Issues**: https://github.com/VoidChecksum/omniwire/issues
586
+ OmniWire is the primary infrastructure backend for OpenClaw agents and PaperClip workflows.
587
+
588
+ ### OpenClaw
589
+
590
+ OpenClaw agents use OmniWire for all remote operations. The skill is auto-loaded when OpenClaw detects `omniwire` in the installed MCP servers. Agents can:
591
+ - Execute tasks across the mesh without user intervention
592
+ - Use the A2A protocol to coordinate multi-agent workflows
593
+ - Persist state via the blackboard and knowledge base
594
+ - Dispatch background jobs and collect results asynchronously
595
+
596
+ ### PaperClip
597
+
598
+ PaperClip workflows integrate with OmniWire via CyberSync. Any workflow that produces knowledge, memory, or config changes can route through `omniwire_coc` for unified persistence across CyberBase, Obsidian vault, and Canvas.
599
+
600
+ **COC workflow from PaperClip:**
601
+
602
+ ```
603
+ 1. Workflow completes → calls omniwire_coc(action="save", ...)
604
+ 2. Saved to CyberBase knowledge table with pgvector embedding
605
+ 3. Mirrored to Obsidian vault as .md file
606
+ 4. Canvas node created/updated in CyberBase MindMap.canvas
607
+ 5. All nodes confirmed in one response
608
+ ```
609
+
610
+ ### Sync coverage — CyberSync 6 AI tools
611
+
612
+ | Tool | Synced Config |
613
+ |------|-------------|
614
+ | Claude Code | `~/.claude/settings.json`, CLAUDE.md, memory, agents/ |
615
+ | OpenCode | `~/.opencode/config.json`, rules/ |
616
+ | OpenClaw | `~/.openclaw/config.json`, skills/, agents/ |
617
+ | Codex | `~/.codex/config.json` |
618
+ | Gemini | `~/.gemini/settings.json` |
619
+ | PaperClip | `~/.paperclip/config.json`, workflows/ |
345
620
 
346
621
  ---
347
622
 
348
- ## License
623
+ ## Links
349
624
 
350
- MIT Use freely, modify, distribute.
625
+ - **GitHub**: https://github.com/VoidChecksum/omniwire
626
+ - **NPM**: https://www.npmjs.com/package/omniwire
627
+ - **Issues**: https://github.com/VoidChecksum/omniwire/issues
628
+ - **License**: GPL-3.0-only
351
629
 
352
630
  ---
353
631
 
354
- *OmniWire — Every machine, one agent, zero friction.*
632
+ *OmniWire v3.5.0 88 tools. Every machine. One agent.*