omniwire 3.4.1 → 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.
- package/.omc/state/agent-replay-834b010e-b80d-4721-b297-777fbd0099c1.jsonl +3 -0
- package/.omc/state/hud-state.json +3 -3
- package/.omc/state/hud-stdin-cache.json +1 -1
- package/.omc/state/last-tool-error.json +7 -0
- package/.omc/state/subagent-tracking.json +7 -0
- package/.omniwire-state/update-state.json +1 -1
- package/README.md +200 -0
- package/clawhub-skill/SKILL.md +465 -187
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-03-
|
|
2
|
+
"timestamp": "2026-03-30T01:25:32.860Z",
|
|
3
3
|
"backgroundTasks": [],
|
|
4
|
-
"sessionStartTimestamp": "2026-03-
|
|
5
|
-
"sessionId": "
|
|
4
|
+
"sessionStartTimestamp": "2026-03-30T01:09:39.072Z",
|
|
5
|
+
"sessionId": "834b010e-b80d-4721-b297-777fbd0099c1"
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"session_id":"
|
|
1
|
+
{"session_id":"834b010e-b80d-4721-b297-777fbd0099c1","transcript_path":"C:\\Users\\Admin\\.claude\\projects\\C--Users-Admin\\834b010e-b80d-4721-b297-777fbd0099c1.jsonl","cwd":"C:\\Users\\Admin\\omniwire","model":{"id":"claude-opus-4-6[1m]","display_name":"Opus 4.6 (1M context)"},"workspace":{"current_dir":"C:\\Users\\Admin\\omniwire","project_dir":"C:\\Users\\Admin","added_dirs":["C:/Users/Admin"]},"version":"2.1.87","output_style":{"name":"default"},"cost":{"total_cost_usd":11.639808499999997,"total_duration_ms":1434832,"total_api_duration_ms":2352118,"total_lines_added":863,"total_lines_removed":209},"context_window":{"total_input_tokens":916983,"total_output_tokens":125069,"context_window_size":1000000,"current_usage":{"input_tokens":3,"output_tokens":108,"cache_creation_input_tokens":472,"cache_read_input_tokens":143821},"used_percentage":14,"remaining_percentage":86},"exceeds_200k_tokens":false,"rate_limits":{"five_hour":{"used_percentage":21,"resets_at":1774846800},"seven_day":{"used_percentage":44,"resets_at":1775206800}}}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tool_name": "Bash",
|
|
3
|
+
"tool_input_preview": "{\"command\":\"git add README.md package.json clawhub-skill/SKILL.md integrations/openclaw/SKILL.md integrations/paperclip/SKILL.md integrations/paperclip/README.md integrations/oh-my-openagent/SKILL.md ...",
|
|
4
|
+
"error": "Exit code 1\nwarning: in the working copy of 'README.md', LF will be replaced by CRLF the next time Git touches it\nwarning: in the working copy of 'clawhub-skill/SKILL.md', LF will be replaced by CRLF the next time Git touches it\nwarning: in the working copy of 'package.json', LF will be replaced by CRLF the next time Git touches it\nThe following paths are ignored by one of your .gitignore files:\nintegrations\nhint: Use -f if you really want to add them.\nhint: Disable this message with \"git config...",
|
|
5
|
+
"timestamp": "2026-03-30T01:27:44.180Z",
|
|
6
|
+
"retry_count": 1
|
|
7
|
+
}
|
package/README.md
CHANGED
|
@@ -259,6 +259,72 @@ graph TB
|
|
|
259
259
|
|
|
260
260
|
---
|
|
261
261
|
|
|
262
|
+
## Agent Setup Instructions
|
|
263
|
+
|
|
264
|
+
### OpenClaw
|
|
265
|
+
|
|
266
|
+
OmniWire is available as a [ClawhHub skill](https://clawhub.ai/voidchecksum/omniwire):
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
# Install via ClawhHub CLI
|
|
270
|
+
clawhub install omniwire
|
|
271
|
+
|
|
272
|
+
# Or manual: copy integrations/openclaw/SKILL.md to your OpenClaw skills directory
|
|
273
|
+
cp integrations/openclaw/SKILL.md ~/.openclaw/skills/omniwire.md
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
CyberSync automatically ingests OpenClaw agents, skills, memory, and workspace into CyberBase PostgreSQL.
|
|
277
|
+
|
|
278
|
+
### PaperClip
|
|
279
|
+
|
|
280
|
+
Register OmniWire as a zero-cost infrastructure agent:
|
|
281
|
+
|
|
282
|
+
```json
|
|
283
|
+
{
|
|
284
|
+
"agents": [{
|
|
285
|
+
"name": "omniwire",
|
|
286
|
+
"type": "local-cli",
|
|
287
|
+
"command": "omniwire --stdio",
|
|
288
|
+
"skills": ["mesh-exec", "file-transfer", "service-control", "docker", "vpn", "scraping", "firewall"],
|
|
289
|
+
"budget": { "monthly_usd": 0 }
|
|
290
|
+
}]
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
See `integrations/paperclip/` for the full adapter and skill definition.
|
|
295
|
+
|
|
296
|
+
### Claude Code
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"mcpServers": {
|
|
301
|
+
"omniwire": {
|
|
302
|
+
"command": "omniwire",
|
|
303
|
+
"args": ["--stdio"]
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### OpenCode / Oh-My-OpenAgent
|
|
310
|
+
|
|
311
|
+
```json
|
|
312
|
+
{
|
|
313
|
+
"mcp": {
|
|
314
|
+
"omniwire": {
|
|
315
|
+
"type": "local",
|
|
316
|
+
"command": ["omniwire", "--stdio"]
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Codex / Gemini
|
|
323
|
+
|
|
324
|
+
CyberSync automatically syncs OmniWire config to Codex and Gemini environments.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
262
328
|
## Key Capabilities
|
|
263
329
|
|
|
264
330
|
<table>
|
|
@@ -590,6 +656,139 @@ Create `~/.omniwire/mesh.json`:
|
|
|
590
656
|
|
|
591
657
|
---
|
|
592
658
|
|
|
659
|
+
## Agentic Installation / Setup
|
|
660
|
+
|
|
661
|
+
> For adding a new node to your OmniWire mesh — what to have ready, how to wire it in, and how to connect it to Claude Code.
|
|
662
|
+
|
|
663
|
+
### Prerequisites
|
|
664
|
+
|
|
665
|
+
| Requirement | Notes |
|
|
666
|
+
|-------------|-------|
|
|
667
|
+
| **Node.js >= 20** | `node -v` to verify |
|
|
668
|
+
| **npm >= 9** | Comes with Node.js 20+ |
|
|
669
|
+
| **WireGuard** | `wg` CLI + kernel module (Linux: `apt install wireguard`, macOS: Homebrew, Windows: GUI installer) |
|
|
670
|
+
| **SSH key pair** | Ed25519 recommended — `ssh-keygen -t ed25519 -f ~/.ssh/id_omniwire` |
|
|
671
|
+
| **SSH access to nodes** | Key deployed to `~/.ssh/authorized_keys` on every remote node |
|
|
672
|
+
| **1Password CLI** | `op` v2+, signed in — required for `omniwire_secrets` and cookie sync to vault |
|
|
673
|
+
| **PostgreSQL (optional)** | Required only for CyberSync / CyberBase persistence — Contabo hosts it at `10.10.0.1:5432` |
|
|
674
|
+
|
|
675
|
+
### Install OmniWire
|
|
676
|
+
|
|
677
|
+
```bash
|
|
678
|
+
npm install -g omniwire
|
|
679
|
+
omniwire --version # verify
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
### Add a New Node
|
|
683
|
+
|
|
684
|
+
**1. Generate WireGuard keypair on the new node:**
|
|
685
|
+
```bash
|
|
686
|
+
wg genkey | tee /etc/wireguard/node_private.key | wg pubkey > /etc/wireguard/node_pub.key
|
|
687
|
+
cat /etc/wireguard/node_pub.key
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
**2. Assign it a mesh IP** (next available in `10.10.0.0/24`):
|
|
691
|
+
|
|
692
|
+
| Node | Mesh IP | Role |
|
|
693
|
+
|------|---------|------|
|
|
694
|
+
| Contabo (hub) | `10.10.0.1` | storage, CyberBase |
|
|
695
|
+
| Hostinger | `10.10.0.2` | compute |
|
|
696
|
+
| Windows PC | `10.10.0.3` | local dev |
|
|
697
|
+
| ThinkPad | `10.10.0.4` | local dev |
|
|
698
|
+
| _new node_ | `10.10.0.N` | assign next |
|
|
699
|
+
|
|
700
|
+
**3. Register the node with OmniMesh** (run from any node already in the mesh):
|
|
701
|
+
```bash
|
|
702
|
+
omniwire_omnimesh(action="add-peer",
|
|
703
|
+
id="newnode",
|
|
704
|
+
public_key="<pubkey from step 1>",
|
|
705
|
+
allowed_ips="10.10.0.N/32",
|
|
706
|
+
endpoint="<public IP or DNS>:51820"
|
|
707
|
+
)
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
**4. Push updated peer list to all nodes:**
|
|
711
|
+
```bash
|
|
712
|
+
omniwire_omnimesh(action="sync-peers")
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
**5. Bring the interface up on the new node:**
|
|
716
|
+
```bash
|
|
717
|
+
wg-quick up wg0
|
|
718
|
+
ping 10.10.0.1 # verify hub reachability
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
### Configure OmniWire on the New Node
|
|
722
|
+
|
|
723
|
+
Add the node to `~/.omniwire/mesh.json` (create if absent):
|
|
724
|
+
|
|
725
|
+
```json
|
|
726
|
+
{
|
|
727
|
+
"nodes": [
|
|
728
|
+
{ "id": "contabo", "host": "10.10.0.1", "user": "root", "identityFile": "~/.ssh/id_omniwire", "role": "storage" },
|
|
729
|
+
{ "id": "hostinger", "host": "10.10.0.2", "user": "root", "identityFile": "~/.ssh/id_omniwire", "role": "compute" },
|
|
730
|
+
{ "id": "windows", "host": "10.10.0.3", "user": "Admin", "identityFile": "~/.ssh/id_omniwire", "role": "local" },
|
|
731
|
+
{ "id": "thinkpad", "host": "10.10.0.4", "user": "user", "identityFile": "~/.ssh/id_omniwire", "role": "local" }
|
|
732
|
+
]
|
|
733
|
+
}
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
Verify connectivity:
|
|
737
|
+
```bash
|
|
738
|
+
omniwire_mesh_status # should show all nodes green
|
|
739
|
+
omniwire_doctor # checks SSH, disk, mem, WireGuard, CyberBase
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
### Connect Claude Code via MCP
|
|
743
|
+
|
|
744
|
+
Add to `~/.claude/claude_desktop_config.json` (or your IDE's MCP config):
|
|
745
|
+
|
|
746
|
+
```json
|
|
747
|
+
{
|
|
748
|
+
"mcpServers": {
|
|
749
|
+
"omniwire": { "command": "omniwire", "args": ["--stdio"] }
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
```
|
|
753
|
+
|
|
754
|
+
Restart Claude Code. Verify in a new session:
|
|
755
|
+
```
|
|
756
|
+
omniwire_mesh_status() # 88 tools should be available
|
|
757
|
+
```
|
|
758
|
+
|
|
759
|
+
### Environment Variables
|
|
760
|
+
|
|
761
|
+
| Variable | Required | Description |
|
|
762
|
+
|----------|----------|-------------|
|
|
763
|
+
| `OP_SERVICE_ACCOUNT_TOKEN` | For 1Password sync | Service account token from 1Password |
|
|
764
|
+
| `OMNIWIRE_VAULT_ROOT` | Optional | Path to Obsidian vault root (default: CyberBase vault) |
|
|
765
|
+
| `CYBERSYNC_DB_URL` | Optional | PostgreSQL DSN — defaults to `postgresql://cyberbase@10.10.0.1:5432/cyberbase` |
|
|
766
|
+
| `OMNIWIRE_MESH_CONFIG` | Optional | Override mesh.json path |
|
|
767
|
+
|
|
768
|
+
Set persistently on a node:
|
|
769
|
+
```bash
|
|
770
|
+
omniwire_env(action="set", key="OP_SERVICE_ACCOUNT_TOKEN", value="<token>", node="contabo", persist=true)
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
### CyberSync Auto-Distribution
|
|
774
|
+
|
|
775
|
+
CyberSync pushes configs, secrets, and memories to all nodes automatically via PostgreSQL.
|
|
776
|
+
|
|
777
|
+
```bash
|
|
778
|
+
# Check what's tracked
|
|
779
|
+
omniwire_coc(action="cybersync-status")
|
|
780
|
+
|
|
781
|
+
# Force push current config to all nodes
|
|
782
|
+
omniwire_coc(action="force-sync")
|
|
783
|
+
|
|
784
|
+
# Diff local state vs database
|
|
785
|
+
cybersync_diff()
|
|
786
|
+
```
|
|
787
|
+
|
|
788
|
+
On first run, CyberSync pulls node configs, 2FA seeds, and Claude memories from CyberBase — no manual copy-paste between machines.
|
|
789
|
+
|
|
790
|
+
---
|
|
791
|
+
|
|
593
792
|
## Changelog
|
|
594
793
|
|
|
595
794
|
<details>
|
|
@@ -687,6 +886,7 @@ omniwire/
|
|
|
687
886
|
|
|
688
887
|
| Version | Date | Changes |
|
|
689
888
|
|---------|------|---------|
|
|
889
|
+
| **v3.5.0** | 2026-03-30 | Full OpenClaw + PaperClip integration. ClawhHub skill updated (v2.1.0→v3.5.0, 30→88 tools). Agent setup instructions for OpenClaw, PaperClip, Oh-My-OpenAgent. Updated all integration manifests. New: `integrations/paperclip/SKILL.md`, `integrations/paperclip/README.md`. |
|
|
690
890
|
| **v3.4.1** | 2026-03-30 | Cross-OS: `omniwire_scrape` install works on Linux (systemd), macOS (launchd), Windows, Docker (nohup). Auto-upgrades deps + browsers. Python/pip path detection. |
|
|
691
891
|
| **v3.4.0** | 2026-03-30 | Rewrite: `omniwire_scrape` — OmniMesh-routed Scrapling with auto-install, VPN routing, adaptive selectors, XPath, bulk sessions. install/status actions. Full README audit (88 tools). |
|
|
692
892
|
| **v3.3.1** | 2026-03-30 | New: `omniwire_scrape` tool — Scrapling-powered web scraping (static/browser/stealth modes, Cloudflare bypass, TLS spoofing). |
|
package/clawhub-skill/SKILL.md
CHANGED
|
@@ -1,57 +1,62 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: omniwire
|
|
3
|
-
version:
|
|
4
|
-
description: "
|
|
5
|
-
tags: [infrastructure, mesh, ssh, devops, servers,
|
|
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: "
|
|
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
|
|
25
|
+
# OmniWire v3.5.0 — Mesh Control for AI Agent Swarms
|
|
19
26
|
|
|
20
|
-
> **
|
|
27
|
+
> **88 MCP tools. 12 categories. Every machine, one agent, zero friction.**
|
|
21
28
|
|
|
22
|
-
|
|
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
|
|
32
|
+
You: check disk and container status on all servers
|
|
26
33
|
|
|
27
|
-
Agent: [
|
|
34
|
+
Agent: [omniwire_broadcast + omniwire_docker — parallel across all nodes]
|
|
28
35
|
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
|
46
|
-
|
|
47
|
-
| **
|
|
48
|
-
| **
|
|
49
|
-
| **
|
|
50
|
-
| **
|
|
51
|
-
| **
|
|
52
|
-
| **
|
|
53
|
-
| **
|
|
54
|
-
| **
|
|
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,
|
|
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?
|
|
76
|
-
> - A name (e.g., `
|
|
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
|
|
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": "
|
|
90
|
-
"host": "
|
|
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"}}}'
|
|
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
|
|
128
|
+
Should respond with `omniwire v3.5.0`. Done.
|
|
110
129
|
|
|
111
|
-
|
|
130
|
+
**Transport options:**
|
|
112
131
|
|
|
113
|
-
|
|
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
|
-
|
|
139
|
+
---
|
|
116
140
|
|
|
117
|
-
|
|
141
|
+
## Usage Examples
|
|
142
|
+
|
|
143
|
+
### Execute commands anywhere
|
|
118
144
|
|
|
119
145
|
```
|
|
120
|
-
You: restart nginx on
|
|
146
|
+
You: restart nginx on contabo
|
|
121
147
|
|
|
122
|
-
Agent: [
|
|
123
|
-
|
|
148
|
+
Agent: [omniwire_exec node=contabo command="systemctl restart nginx"]
|
|
149
|
+
OK — nginx restarted (0ms)
|
|
124
150
|
|
|
125
|
-
You:
|
|
151
|
+
You: run uptime on every server
|
|
126
152
|
|
|
127
|
-
Agent: [
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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
|
|
159
|
+
### Transfer files between nodes
|
|
134
160
|
|
|
135
161
|
```
|
|
136
|
-
You: copy
|
|
162
|
+
You: copy the pentest report from kali to contabo
|
|
137
163
|
|
|
138
|
-
Agent:
|
|
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
|
-
|
|
142
|
-
- **SFTP** for files under 10MB
|
|
143
|
-
- **netcat+
|
|
168
|
+
Transfer modes (auto-selected):
|
|
169
|
+
- **SFTP** for files under 10MB
|
|
170
|
+
- **netcat + LZ4** for 10MB–1GB
|
|
144
171
|
- **aria2c** for files over 1GB (16 parallel connections)
|
|
145
172
|
|
|
146
|
-
###
|
|
173
|
+
### Docker management
|
|
147
174
|
|
|
148
175
|
```
|
|
149
|
-
You: what containers are running on
|
|
176
|
+
You: what containers are running on contabo?
|
|
150
177
|
|
|
151
|
-
Agent: [
|
|
152
|
-
12 running
|
|
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:
|
|
181
|
+
You: pull and start the latest omniwire-events image
|
|
156
182
|
|
|
157
|
-
Agent: [
|
|
158
|
-
|
|
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
|
|
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: [
|
|
193
|
+
Agent: [omniwire_mesh_status]
|
|
167
194
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
rpi
|
|
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
|
-
###
|
|
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
|
-
|
|
210
|
+
Supported providers: Mullvad, OpenVPN, WireGuard, Tailscale. OmniMesh routes are protected during VPN switches.
|
|
179
211
|
|
|
180
|
-
|
|
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
|
-
|
|
190
|
-
|
|
191
|
-
|
|
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
|
-
###
|
|
222
|
+
### A2A agent messaging
|
|
195
223
|
|
|
196
|
-
|
|
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
|
-
|
|
202
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
| `
|
|
218
|
-
| `
|
|
219
|
-
| `
|
|
220
|
-
| `
|
|
221
|
-
| `
|
|
222
|
-
| `
|
|
223
|
-
| `
|
|
224
|
-
| `
|
|
225
|
-
| `
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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
|
-
| `
|
|
244
|
-
| `
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
| `
|
|
256
|
-
| `
|
|
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 | ~
|
|
265
|
-
| File read (< 1MB) | ~
|
|
266
|
-
| File transfer (10MB) | ~
|
|
267
|
-
|
|
|
268
|
-
|
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
-
|
|
295
|
-
|
|
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
|
|
304
|
-
- Mentions servers, VPS, nodes,
|
|
305
|
-
- Wants
|
|
306
|
-
- Needs
|
|
307
|
-
- Asks about Docker
|
|
308
|
-
- Wants to
|
|
309
|
-
-
|
|
310
|
-
-
|
|
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
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
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
|
|
327
|
-
-
|
|
328
|
-
-
|
|
329
|
-
- Heavy compute →
|
|
330
|
-
-
|
|
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,
|
|
335
|
-
- If
|
|
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
|
-
##
|
|
584
|
+
## OpenClaw + PaperClip Integration
|
|
341
585
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
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
|
-
##
|
|
623
|
+
## Links
|
|
349
624
|
|
|
350
|
-
|
|
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
|
|
632
|
+
*OmniWire v3.5.0 — 88 tools. Every machine. One agent.*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omniwire",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "Infrastructure layer for AI agent swarms — 88 MCP tools · A2A · OmniMesh VPN · Scrapling scraper · COC sync · nftables firewall · CDP browser · 2FA TOTP · ~80ms",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"type": "module",
|