OmniWire v3.5.0 — Mesh Control for AI Agent Swarms
88 MCP tools. 12 categories. Every machine, one agent, zero friction.
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.
You: check disk and container status on all servers
Agent: [omniwire_broadcast + omniwire_docker — parallel across all nodes]
contabo | 10.0.0.1 | ONLINE | 78ms | disk=16% | containers: 12 running
kali | 10.0.0.2 | ONLINE | 91ms | disk=34% | containers: 4 running
rpi | 10.0.0.3 | ONLINE | 112ms | disk=20% | containers: 2 running
What It Does
| Category |
Tools |
What your agent can do |
| Execution |
6 |
Run commands, scripts, pipelines, background jobs on any node |
| Agentic / A2A |
13 |
Agent tasks, messaging, blackboard, workflows, semaphores, registries |
| Files |
6 |
Read, write, list, find, transfer, deploy files across nodes |
| Monitoring |
4 |
Mesh health, live metrics, benchmarks, node info |
| System / DevOps |
14 |
Processes, disks, packages, services, Docker, kernel, cron, git, logs |
| Network / VPN |
7 |
VPN switching, port forwarding, browser, shell, streams, proxy, scraping |
| Security |
6 |
Firewall, certs, audit, 2FA/TOTP, cookies, user management |
| CyberSync |
9 |
Bi-directional config sync for 6 AI tools + knowledge/memory |
| Knowledge |
2 |
Store and search unified knowledge base (pgvector) |
| OmniMesh |
3 |
WireGuard mesh manager, expose services, gateway routing |
| Events |
1 |
Webhook + WebSocket + SSE event bus |
| CDP Browser |
1 |
18 browser actions via persistent Docker Chrome |
| Utilities |
10+ |
Alerts, aliases, backups, snippets, DNS, diagnostics, scheduling |
Setup — 3 Steps
Step 1: Install OmniWire
AGENT: Run this via exec. User just clicks Approve.
npm install -g omniwire@latest
Works on: Linux (x64, ARM64, ARMv7), macOS (Intel + Apple Silicon), Windows (x64).
Step 2: Configure Your Mesh
Create the mesh config. Ask the user for their server details:
AGENT: Ask the user:
"What servers do you want to control? For each one I need:
- A name (e.g.,
contabo, kali, rpi)
- IP address or hostname
- SSH user (usually
root)
- SSH key filename in ~/.ssh/ (e.g.,
id_ed25519)
- Role:
storage, compute, gpu+browser, or leave blank"
Then create the config:
mkdir -p ~/.omniwire
cat > ~/.omniwire/mesh.json << 'EOF'
{
"nodes": [
{
"id": "contabo",
"host": "10.0.0.1",
"user": "root",
"identityFile": "id_ed25519",
"role": "storage",
"tags": ["vps", "docker"]
},
{
"id": "kali",
"host": "10.0.0.2",
"user": "root",
"identityFile": "id_ed25519",
"role": "compute",
"tags": ["kali", "pentest"]
}
],
"cyberbase": {
"host": "10.10.0.1",
"port": 5432,
"database": "cyberbase",
"user": "cyberbase"
}
}
EOF
Step 3: Verify
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
Should respond with omniwire v3.5.0. Done.
Transport options:
| Transport |
Command |
Port |
| stdio (MCP default) |
omniwire --stdio |
— |
| SSE (HTTP streaming) |
omniwire --sse |
3200 |
| REST (HTTP JSON) |
omniwire --rest |
3201 |
| Events (WebSocket) |
omniwire --events |
3202 |
Usage Examples
Execute commands anywhere
You: restart nginx on contabo
Agent: [omniwire_exec node=contabo command="systemctl restart nginx"]
OK — nginx restarted (0ms)
You: run uptime on every server
Agent: [omniwire_broadcast command="uptime"]
contabo | up 42 days, 3:21
kali | up 7 days, 11:04
rpi | up 2 days, 0:15
Transfer files between nodes
You: copy the pentest report from kali to contabo
Agent: [omniwire_transfer_file src_node=kali dest_node=contabo src=/root/report.pdf dest=/var/reports/]
Transferred 2.4MB — LZ4 compressed — 83ms
Transfer modes (auto-selected):
- SFTP for files under 10MB
- netcat + LZ4 for 10MB–1GB
- aria2c for files over 1GB (16 parallel connections)
Docker management
You: what containers are running on contabo?
Agent: [omniwire_docker node=contabo action=ps]
12 running — neo4j, postgres, omnibus-hub, kali-htb, omniwire-events...
You: pull and start the latest omniwire-events image
Agent: [omniwire_container node=contabo action=pull image=omniwire-events:latest]
Pulled. Starting...
✓ omniwire-events running (healthy)
Monitor mesh health
You: how are all my servers doing?
Agent: [omniwire_mesh_status]
contabo | 10.0.0.1 | ONLINE | 78ms | load=1.2 | mem=31% | disk=16%
kali | 10.0.0.2 | ONLINE | 91ms | load=0.4 | mem=19% | disk=34%
rpi | 10.0.0.3 | ONLINE | 112ms | load=0.7 | mem=22% | disk=20%
VPN switching
You: switch to Mullvad on the kali node
Agent: [omniwire_vpn node=kali action=connect provider=mullvad country=nl]
Connected — Netherlands exit — mesh routes preserved
New IP: 185.65.134.x
Supported providers: Mullvad, OpenVPN, WireGuard, Tailscale. OmniMesh routes are protected during VPN switches.
Web scraping with Cloudflare bypass
You: scrape the pricing table from example.com
Agent: [omniwire_scrape node=contabo url=https://example.com/pricing selector=".pricing-table"]
Scraped 4.2KB — Scrapling engine — Cloudflare bypassed
[returns structured data]
A2A agent messaging
You: send a task to the pentest agent on kali
Agent: [omniwire_agent_task node=kali agent_id=pentest-agent task={type:"scan", target:"192.168.1.0/24"}]
Task queued — ID: task_abc123
Agent: [omniwire_blackboard action=watch key=task_abc123/result]
Result ready: {hosts: 12, open_ports: [...]}
COC — Unified CyberBase + Obsidian + Canvas sync
You: COC save — OmniWire v3.5.0 deployed with 88 tools
Agent: [omniwire_coc action=save note="OmniWire v3.5.0 deployed with 88 tools"]
Saved to CyberBase (knowledge table)
Mirrored to Obsidian vault: CyberBase/omniwire-v350.md
Canvas node updated: CyberBase MindMap.canvas
✓ All 3 sync targets confirmed
Full Tool Reference
| Tool |
Description |
omniwire_exec |
Execute a command on a specific node. Args: node, command, timeout, background |
omniwire_run |
Run a named script or predefined task. Args: node, script, args |
omniwire_batch |
Execute multiple commands across multiple nodes in one call. Args: commands[] |
omniwire_broadcast |
Execute command on ALL nodes simultaneously. Args: command, tags (filter by tag) |
omniwire_pipeline |
Chain commands where output of one feeds into next. Args: node, steps[] |
omniwire_bg |
Background task manager — dispatch, poll, get result. Args: action, task_id |
| Tool |
Description |
omniwire_store |
Key-value store for agents. Actions: get, set, delete, list. Args: key, value, ttl |
omniwire_watch |
Watch a key for changes (long-poll). Args: key, timeout |
omniwire_healthcheck |
Check agent health status across nodes. Args: agent_id, node |
omniwire_agent_task |
Dispatch a structured task to a named agent. Args: node, agent_id, task |
omniwire_a2a_message |
Send an A2A protocol message between agents. Args: to, from, message, reply_to |
omniwire_semaphore |
Distributed semaphore for agent coordination. Actions: acquire, release. Args: name, count |
omniwire_event |
Emit a named event into the event bus. Args: event, data, targets[] |
omniwire_workflow |
Execute a multi-step workflow definition. Args: workflow_id, input |
omniwire_agent_registry |
Register/discover agents by capability. Actions: register, lookup, list |
omniwire_blackboard |
Shared blackboard for agent state. Actions: read, write, watch, clear |
omniwire_task_queue |
Distributed task queue. Actions: push, pop, peek, size |
omniwire_capability |
Declare/query agent capabilities. Args: agent_id, capabilities[] |
omniwire_coc |
COC — unified CyberBase + Obsidian + Canvas sync. Actions: save, read, search, update |
| Tool |
Description |
omniwire_read_file |
Read file from any node. Args: node, path, encoding, lines |
omniwire_write_file |
Write file to any node. Args: node, path, content, mode |
omniwire_list_files |
List directory on any node. Args: node, path, recursive, filter |
omniwire_find_files |
Search files across nodes by name/content/pattern. Args: node, query, path |
omniwire_transfer_file |
Copy files between nodes (auto-selects SFTP/LZ4/aria2c). Args: src_node, dest_node, src, dest |
omniwire_deploy |
Push files or directories to multiple nodes simultaneously. Args: src, nodes[], dest |
| Tool |
Description |
omniwire_mesh_status |
Health check all nodes — latency, load, memory, disk. Cached 5s. |
omniwire_node_info |
Detailed info for one node — OS, CPU, uptime, IPs. Args: node |
omniwire_live_monitor |
Live system metrics snapshot. Args: node, interval, metrics[] |
omniwire_benchmark |
Benchmark node performance — CPU, disk, network. Args: node, type |
| Tool |
Description |
omniwire_process_list |
List and filter processes. Args: node, filter, sort |
omniwire_disk_usage |
Disk usage — all mounts or specific path. Args: node, path |
omniwire_install_package |
Install packages via apt/npm/pip/brew. Args: node, package, manager |
omniwire_service_control |
systemd start/stop/restart/status/enable. Args: node, service, action |
omniwire_docker |
Docker commands (ps, logs, exec, stats, images). Args: node, action, container |
omniwire_container |
Container lifecycle — pull, run, stop, rm, inspect. Args: node, action, image |
omniwire_kernel |
dmesg, sysctl, modprobe, strace, perf. Args: node, action, args |
omniwire_cron |
Manage cron jobs — list, add, remove. Args: node, action, schedule, command |
omniwire_env |
Read/write environment variables. Args: node, action, key, value |
omniwire_network |
Network info — interfaces, routes, connections, iptables. Args: node, action |
omniwire_git |
Git operations on remote nodes. Args: node, repo, action, args |
omniwire_syslog |
Read system logs. Args: node, service, lines, since |
omniwire_log_aggregate |
Aggregate logs from multiple nodes. Args: nodes[], service, query |
omniwire_metrics |
Push/pull metrics (Prometheus-compatible). Args: node, action, metrics |
| Tool |
Description |
omniwire_vpn |
VPN management — Mullvad, OpenVPN, WireGuard, Tailscale. Args: node, action, provider, country |
omniwire_port_forward |
SSH tunnel / port forwarding. Args: node, local_port, remote_host, remote_port |
omniwire_open_browser |
Open URL on GPU/display node. Args: node, url |
omniwire_shell |
Persistent shell session (state preserved). Args: node, session_id, command |
omniwire_stream |
Real-time streaming output from long-running commands. Args: node, command |
omniwire_proxy |
HTTP/SOCKS proxy management. Args: node, action, port, type |
omniwire_scrape |
Scrapling-powered web scraping with Cloudflare bypass. Args: node, url, selector, format |
| Tool |
Description |
omniwire_firewall |
iptables / ufw / nftables management. Args: node, action, rule |
omniwire_cert |
TLS certificate management (Let's Encrypt, self-signed). Args: node, domain, action |
omniwire_audit |
Security audit — open ports, SUID files, cron jobs, users. Args: node, checks[] |
omniwire_2fa |
TOTP manager — generate, add, delete codes. CyberBase + 1Password persistence. Args: action, service |
omniwire_cookies |
Browser cookie export/import (JSON, Header String, Netscape). Args: node, action, browser |
omniwire_user |
User account management — create, delete, sudo, SSH keys. Args: node, action, username |
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.
| Tool |
Description |
omniwire_sync |
Sync a specific file or directory across nodes. Args: path, nodes[], direction |
omniwire_sync_rules |
Manage sync rules (include/exclude patterns). Args: action, rule |
omniwire_sync_hooks |
Pre/post sync hooks. Args: action, hook_script |
omniwire_sync_memory |
Sync Claude/agent memory to CyberBase. Args: action, node |
omniwire_sync_agents |
Sync agent definitions across nodes. Args: action, nodes[] |
cybersync_status |
Sync status — item counts, heartbeats, last sync time per tool |
cybersync_sync_now |
Force immediate reconciliation across all nodes |
cybersync_diff |
Show what's out of sync before committing |
cybersync_history |
Sync event log — what changed, when, which node |
| Tool |
Description |
omniwire_knowledge |
Store knowledge entries in CyberBase with vector embedding. Args: action, key, content, tags |
omniwire_search_knowledge |
Semantic search over knowledge base (pgvector). Args: query, limit, tags |
OmniMesh is OmniWire's built-in WireGuard mesh manager. It provisions, rotates keys, and manages peer routing automatically.
| Tool |
Description |
omniwire_omnimesh |
Mesh lifecycle — init, add-node, remove-node, rotate-keys, status. Args: action, node |
omniwire_mesh_expose |
Expose a local service to the mesh via WireGuard. Args: node, service, port, mesh_port |
omniwire_mesh_gateway |
Configure a node as a mesh gateway (egress/ingress). Args: node, action, routes[] |
| Tool |
Description |
omniwire_events |
Event bus — subscribe, publish, list. Supports Webhook callbacks, WebSocket push (port 3202), and SSE streaming. Args: action, event, handler_url |
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.
| Action |
Description |
navigate |
Navigate to URL |
screenshot |
Capture page screenshot |
click |
Click element by selector |
type |
Type text into input |
scroll |
Scroll page |
evaluate |
Execute JavaScript |
get_html |
Get page HTML |
get_text |
Get visible text |
wait_for |
Wait for selector/navigation |
fill_form |
Fill multiple form fields |
select |
Select dropdown option |
hover |
Hover element |
upload |
Upload file to input |
download |
Download file |
cookies_get |
Export cookies |
cookies_set |
Import cookies |
session_save |
Persist session state |
session_load |
Restore session state |
| Tool |
Description |
omniwire_alert |
Send alert via Telegram/webhook/email. Args: message, channel, priority |
omniwire_alias |
Manage command aliases for nodes. Args: action, name, command |
omniwire_backup |
Backup files/DBs to remote storage. Args: node, path, dest, compress |
omniwire_clipboard |
Read/write clipboard on GUI node. Args: node, action, content |
omniwire_snippet |
Store and retrieve command snippets. Args: action, name, content |
omniwire_tail_log |
Tail last N lines of a log file. Args: node, path, lines |
omniwire_trace |
Distributed trace for debugging command chains. Args: trace_id, action |
omniwire_update |
Check for OmniWire updates + self-update. Args: action |
omniwire_schedule |
Schedule tasks (cron-style). Args: action, schedule, task |
omniwire_dns |
DNS lookup and management. Args: node, query, type |
omniwire_doctor |
Diagnose OmniWire setup issues. Args: checks[] |
Performance
| Operation |
Speed |
| Command execution |
~80ms per node |
| File read (< 1MB) |
~60ms (SFTP) |
| File transfer (10MB) |
~150ms (LZ4 netcat) |
| Mesh status check |
~100ms (cached 5s) |
| COC sync (all 3 targets) |
~200ms (parallel) |
| Web scrape (no JS) |
~300ms |
| Web scrape (Cloudflare) |
~800ms |
| CDP browser action |
~120ms |
Encryption: AES-128-GCM for transport, XChaCha20-Poly1305 for at-rest sync items. Compression: LZ4 for transfers.
Architecture & Platform Support
| Platform |
Architecture |
Status |
| Linux |
x64 |
Supported |
| Linux |
arm64 (RPi 4/5, AWS Graviton) |
Supported |
| Linux |
armv7l (RPi 3, older ARM) |
Supported |
| macOS |
Intel (x64) |
Supported |
| macOS |
Apple Silicon (arm64) |
Supported |
| Windows |
x64 |
Supported |
No native compilation. Pure JavaScript + SSH2. npm install -g omniwire works everywhere Node.js 18+ runs.
Transports: stdio (MCP standard), SSE port 3200, REST port 3201, Events/WebSocket port 3202.
Security
| Layer |
Implementation |
| Transport |
SSH2 with zlib compression |
| At-rest (sync items) |
XChaCha20-Poly1305 |
| Transfer compression |
LZ4 |
| Secrets backend |
1Password, file-based, or env vars |
| Network |
All traffic over your own infrastructure (WireGuard, Tailscale, direct SSH) |
| Key management |
Master key in ~/.omniwire/secret.key — generated locally, never transmitted |
| Mesh auth |
Per-node WireGuard keypairs, auto-rotated by OmniMesh |
Agent Instructions
When to use OmniWire tools
Use OmniWire when the user:
- Mentions servers, VPS, nodes, mesh, or "my machines"
- Wants commands run remotely or on all servers
- Needs files read, written, or transferred between nodes
- Asks about Docker, services, processes, or system health on remote nodes
- Wants to switch VPN, manage firewall rules, or handle certs
- Mentions "scrape", "browser", "CDP", or web automation on a remote node
- Wants to sync configs, save memory, or COC/save something
- Uses agent-to-agent workflows (A2A, blackboard, task queues)
- Needs TOTP codes, cookies, or security audit
- Mentions "COC", "Save to CyberBase", "Obsidian", or canvas sync
How to pick the right tool
| Intent |
Tool |
| Single node command |
omniwire_exec |
| All nodes at once |
omniwire_broadcast |
| Read remote file |
omniwire_read_file |
| Copy between nodes |
omniwire_transfer_file |
| Docker anything |
omniwire_docker |
| Container lifecycle |
omniwire_container |
| Mesh health check |
omniwire_mesh_status |
| VPN switch |
omniwire_vpn |
| Firewall rule |
omniwire_firewall |
| Web scrape |
omniwire_scrape |
| Browser automation |
omniwire_cdp |
| Send agent task |
omniwire_agent_task |
| Shared state |
omniwire_blackboard |
| Event bus |
omniwire_event or omniwire_events |
| COC save/sync |
omniwire_coc |
| Semantic search |
omniwire_search_knowledge |
| Background job |
omniwire_bg |
| Sync AI configs |
cybersync_sync_now |
Node selection defaults
If the user doesn't specify a node:
- File storage, databases, Docker → node with
role: "storage"
- Security/pentest tools → node with tag
"kali" or "pentest"
- GPU / display / browser → node with
role: "gpu+browser"
- Heavy compute → node with
role: "compute"
- Background task dispatch →
omniwire_bg with any available node
- If ambiguous, ask: "Which server should I run this on?"
Background mode
All 88 tools support background: true. Use it for:
- Any operation expected to take > 5 seconds
- Builds, installs, deploys, large transfers
- Scraping and CDP sessions
- Long-running pipelines
omniwire_exec(node="contabo", command="apt upgrade -y", background=true)
→ returns task_id immediately
→ poll with omniwire_bg(action="poll", task_id="...")
→ get result with omniwire_bg(action="result", task_id="...")
Error handling
- If a node is offline, report it and offer alternatives
- If exec fails, show stderr and suggest fixes
- If transfer fails, retry with a different mode (SFTP → LZ4 → aria2c)
- If VPN connects but mesh breaks, restore mesh routes automatically (built-in)
- For persistent shell failures, use
omniwire_shell with a new session_id
OpenClaw + PaperClip Integration
OmniWire is the primary infrastructure backend for OpenClaw agents and PaperClip workflows.
OpenClaw
OpenClaw agents use OmniWire for all remote operations. The skill is auto-loaded when OpenClaw detects omniwire in the installed MCP servers. Agents can:
- Execute tasks across the mesh without user intervention
- Use the A2A protocol to coordinate multi-agent workflows
- Persist state via the blackboard and knowledge base
- Dispatch background jobs and collect results asynchronously
PaperClip
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.
COC workflow from PaperClip:
1. Workflow completes → calls omniwire_coc(action="save", ...)
2. Saved to CyberBase knowledge table with pgvector embedding
3. Mirrored to Obsidian vault as .md file
4. Canvas node created/updated in CyberBase MindMap.canvas
5. All nodes confirmed in one response
Sync coverage — CyberSync 6 AI tools
| Tool |
Synced Config |
| Claude Code |
~/.claude/settings.json, CLAUDE.md, memory, agents/ |
| OpenCode |
~/.opencode/config.json, rules/ |
| OpenClaw |
~/.openclaw/config.json, skills/, agents/ |
| Codex |
~/.codex/config.json |
| Gemini |
~/.gemini/settings.json |
| PaperClip |
~/.paperclip/config.json, workflows/ |
Links
OmniWire v3.5.0 — 88 tools. Every machine. One agent.
1---2name: omniwire3description: 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.4license: GPL-3.0-only5---67# OmniWire v3.5.0 — Mesh Control for AI Agent Swarms89> **88 MCP tools. 12 categories. Every machine, one agent, zero friction.**1011OmniWire 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.1213```14You: check disk and container status on all servers1516Agent: [omniwire_broadcast + omniwire_docker — parallel across all nodes]1718 contabo | 10.0.0.1 | ONLINE | 78ms | disk=16% | containers: 12 running19 kali | 10.0.0.2 | ONLINE | 91ms | disk=34% | containers: 4 running20 rpi | 10.0.0.3 | ONLINE | 112ms | disk=20% | containers: 2 running21```2223---2425## What It Does2627| Category | Tools | What your agent can do |28|----------|-------|----------------------|29| **Execution** | 6 | Run commands, scripts, pipelines, background jobs on any node |30| **Agentic / A2A** | 13 | Agent tasks, messaging, blackboard, workflows, semaphores, registries |31| **Files** | 6 | Read, write, list, find, transfer, deploy files across nodes |32| **Monitoring** | 4 | Mesh health, live metrics, benchmarks, node info |33| **System / DevOps** | 14 | Processes, disks, packages, services, Docker, kernel, cron, git, logs |34| **Network / VPN** | 7 | VPN switching, port forwarding, browser, shell, streams, proxy, scraping |35| **Security** | 6 | Firewall, certs, audit, 2FA/TOTP, cookies, user management |36| **CyberSync** | 9 | Bi-directional config sync for 6 AI tools + knowledge/memory |37| **Knowledge** | 2 | Store and search unified knowledge base (pgvector) |38| **OmniMesh** | 3 | WireGuard mesh manager, expose services, gateway routing |39| **Events** | 1 | Webhook + WebSocket + SSE event bus |40| **CDP Browser** | 1 | 18 browser actions via persistent Docker Chrome |41| **Utilities** | 10+ | Alerts, aliases, backups, snippets, DNS, diagnostics, scheduling |4243---4445## Setup — 3 Steps4647### Step 1: Install OmniWire4849> **AGENT: Run this via exec. User just clicks Approve.**5051```bash52npm install -g omniwire@latest53```5455Works on: Linux (x64, ARM64, ARMv7), macOS (Intel + Apple Silicon), Windows (x64).5657### Step 2: Configure Your Mesh5859Create the mesh config. Ask the user for their server details:6061> **AGENT: Ask the user:**62> "What servers do you want to control? For each one I need:63> - A name (e.g., `contabo`, `kali`, `rpi`)64> - IP address or hostname65> - SSH user (usually `root`)66> - SSH key filename in ~/.ssh/ (e.g., `id_ed25519`)67> - Role: `storage`, `compute`, `gpu+browser`, or leave blank"6869Then create the config:7071```bash72mkdir -p ~/.omniwire73cat > ~/.omniwire/mesh.json << 'EOF'74{75 "nodes": [76 {77 "id": "contabo",78 "host": "10.0.0.1",79 "user": "root",80 "identityFile": "id_ed25519",81 "role": "storage",82 "tags": ["vps", "docker"]83 },84 {85 "id": "kali",86 "host": "10.0.0.2",87 "user": "root",88 "identityFile": "id_ed25519",89 "role": "compute",90 "tags": ["kali", "pentest"]91 }92 ],93 "cyberbase": {94 "host": "10.10.0.1",95 "port": 5432,96 "database": "cyberbase",97 "user": "cyberbase"98 }99}100EOF101```102103### Step 3: Verify104105```bash106echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' \107 | omniwire --stdio --no-sync 2>/dev/null | head -1108```109110Should respond with `omniwire v3.5.0`. Done.111112**Transport options:**113114| Transport | Command | Port |115|-----------|---------|------|116| stdio (MCP default) | `omniwire --stdio` | — |117| SSE (HTTP streaming) | `omniwire --sse` | 3200 |118| REST (HTTP JSON) | `omniwire --rest` | 3201 |119| Events (WebSocket) | `omniwire --events` | 3202 |120121---122123## Usage Examples124125### Execute commands anywhere126127```128You: restart nginx on contabo129130Agent: [omniwire_exec node=contabo command="systemctl restart nginx"]131 OK — nginx restarted (0ms)132133You: run uptime on every server134135Agent: [omniwire_broadcast command="uptime"]136 contabo | up 42 days, 3:21137 kali | up 7 days, 11:04138 rpi | up 2 days, 0:15139```140141### Transfer files between nodes142143```144You: copy the pentest report from kali to contabo145146Agent: [omniwire_transfer_file src_node=kali dest_node=contabo src=/root/report.pdf dest=/var/reports/]147 Transferred 2.4MB — LZ4 compressed — 83ms148```149150Transfer modes (auto-selected):151- **SFTP** for files under 10MB152- **netcat + LZ4** for 10MB–1GB153- **aria2c** for files over 1GB (16 parallel connections)154155### Docker management156157```158You: what containers are running on contabo?159160Agent: [omniwire_docker node=contabo action=ps]161 12 running — neo4j, postgres, omnibus-hub, kali-htb, omniwire-events...162163You: pull and start the latest omniwire-events image164165Agent: [omniwire_container node=contabo action=pull image=omniwire-events:latest]166 Pulled. Starting...167 ✓ omniwire-events running (healthy)168```169170### Monitor mesh health171172```173You: how are all my servers doing?174175Agent: [omniwire_mesh_status]176177 contabo | 10.0.0.1 | ONLINE | 78ms | load=1.2 | mem=31% | disk=16%178 kali | 10.0.0.2 | ONLINE | 91ms | load=0.4 | mem=19% | disk=34%179 rpi | 10.0.0.3 | ONLINE | 112ms | load=0.7 | mem=22% | disk=20%180```181182### VPN switching183184```185You: switch to Mullvad on the kali node186187Agent: [omniwire_vpn node=kali action=connect provider=mullvad country=nl]188 Connected — Netherlands exit — mesh routes preserved189 New IP: 185.65.134.x190```191192Supported providers: Mullvad, OpenVPN, WireGuard, Tailscale. OmniMesh routes are protected during VPN switches.193194### Web scraping with Cloudflare bypass195196```197You: scrape the pricing table from example.com198199Agent: [omniwire_scrape node=contabo url=https://example.com/pricing selector=".pricing-table"]200 Scraped 4.2KB — Scrapling engine — Cloudflare bypassed201 [returns structured data]202```203204### A2A agent messaging205206```207You: send a task to the pentest agent on kali208209Agent: [omniwire_agent_task node=kali agent_id=pentest-agent task={type:"scan", target:"192.168.1.0/24"}]210 Task queued — ID: task_abc123211212Agent: [omniwire_blackboard action=watch key=task_abc123/result]213 Result ready: {hosts: 12, open_ports: [...]}214```215216### COC — Unified CyberBase + Obsidian + Canvas sync217218```219You: COC save — OmniWire v3.5.0 deployed with 88 tools220221Agent: [omniwire_coc action=save note="OmniWire v3.5.0 deployed with 88 tools"]222 Saved to CyberBase (knowledge table)223 Mirrored to Obsidian vault: CyberBase/omniwire-v350.md224 Canvas node updated: CyberBase MindMap.canvas225 ✓ All 3 sync targets confirmed226```227228---229230## Full Tool Reference231232<details>233<summary><strong>Execution (6 tools)</strong></summary>234235| Tool | Description |236|------|-------------|237| `omniwire_exec` | Execute a command on a specific node. Args: `node`, `command`, `timeout`, `background` |238| `omniwire_run` | Run a named script or predefined task. Args: `node`, `script`, `args` |239| `omniwire_batch` | Execute multiple commands across multiple nodes in one call. Args: `commands[]` |240| `omniwire_broadcast` | Execute command on ALL nodes simultaneously. Args: `command`, `tags` (filter by tag) |241| `omniwire_pipeline` | Chain commands where output of one feeds into next. Args: `node`, `steps[]` |242| `omniwire_bg` | Background task manager — dispatch, poll, get result. Args: `action`, `task_id` |243244</details>245246<details>247<summary><strong>Agentic / A2A Protocol (13 tools)</strong></summary>248249| Tool | Description |250|------|-------------|251| `omniwire_store` | Key-value store for agents. Actions: get, set, delete, list. Args: `key`, `value`, `ttl` |252| `omniwire_watch` | Watch a key for changes (long-poll). Args: `key`, `timeout` |253| `omniwire_healthcheck` | Check agent health status across nodes. Args: `agent_id`, `node` |254| `omniwire_agent_task` | Dispatch a structured task to a named agent. Args: `node`, `agent_id`, `task` |255| `omniwire_a2a_message` | Send an A2A protocol message between agents. Args: `to`, `from`, `message`, `reply_to` |256| `omniwire_semaphore` | Distributed semaphore for agent coordination. Actions: acquire, release. Args: `name`, `count` |257| `omniwire_event` | Emit a named event into the event bus. Args: `event`, `data`, `targets[]` |258| `omniwire_workflow` | Execute a multi-step workflow definition. Args: `workflow_id`, `input` |259| `omniwire_agent_registry` | Register/discover agents by capability. Actions: register, lookup, list |260| `omniwire_blackboard` | Shared blackboard for agent state. Actions: read, write, watch, clear |261| `omniwire_task_queue` | Distributed task queue. Actions: push, pop, peek, size |262| `omniwire_capability` | Declare/query agent capabilities. Args: `agent_id`, `capabilities[]` |263| `omniwire_coc` | COC — unified CyberBase + Obsidian + Canvas sync. Actions: save, read, search, update |264265</details>266267<details>268<summary><strong>Files (6 tools)</strong></summary>269270| Tool | Description |271|------|-------------|272| `omniwire_read_file` | Read file from any node. Args: `node`, `path`, `encoding`, `lines` |273| `omniwire_write_file` | Write file to any node. Args: `node`, `path`, `content`, `mode` |274| `omniwire_list_files` | List directory on any node. Args: `node`, `path`, `recursive`, `filter` |275| `omniwire_find_files` | Search files across nodes by name/content/pattern. Args: `node`, `query`, `path` |276| `omniwire_transfer_file` | Copy files between nodes (auto-selects SFTP/LZ4/aria2c). Args: `src_node`, `dest_node`, `src`, `dest` |277| `omniwire_deploy` | Push files or directories to multiple nodes simultaneously. Args: `src`, `nodes[]`, `dest` |278279</details>280281<details>282<summary><strong>Monitoring (4 tools)</strong></summary>283284| Tool | Description |285|------|-------------|286| `omniwire_mesh_status` | Health check all nodes — latency, load, memory, disk. Cached 5s. |287| `omniwire_node_info` | Detailed info for one node — OS, CPU, uptime, IPs. Args: `node` |288| `omniwire_live_monitor` | Live system metrics snapshot. Args: `node`, `interval`, `metrics[]` |289| `omniwire_benchmark` | Benchmark node performance — CPU, disk, network. Args: `node`, `type` |290291</details>292293<details>294<summary><strong>System / DevOps (14 tools)</strong></summary>295296| Tool | Description |297|------|-------------|298| `omniwire_process_list` | List and filter processes. Args: `node`, `filter`, `sort` |299| `omniwire_disk_usage` | Disk usage — all mounts or specific path. Args: `node`, `path` |300| `omniwire_install_package` | Install packages via apt/npm/pip/brew. Args: `node`, `package`, `manager` |301| `omniwire_service_control` | systemd start/stop/restart/status/enable. Args: `node`, `service`, `action` |302| `omniwire_docker` | Docker commands (ps, logs, exec, stats, images). Args: `node`, `action`, `container` |303| `omniwire_container` | Container lifecycle — pull, run, stop, rm, inspect. Args: `node`, `action`, `image` |304| `omniwire_kernel` | dmesg, sysctl, modprobe, strace, perf. Args: `node`, `action`, `args` |305| `omniwire_cron` | Manage cron jobs — list, add, remove. Args: `node`, `action`, `schedule`, `command` |306| `omniwire_env` | Read/write environment variables. Args: `node`, `action`, `key`, `value` |307| `omniwire_network` | Network info — interfaces, routes, connections, iptables. Args: `node`, `action` |308| `omniwire_git` | Git operations on remote nodes. Args: `node`, `repo`, `action`, `args` |309| `omniwire_syslog` | Read system logs. Args: `node`, `service`, `lines`, `since` |310| `omniwire_log_aggregate` | Aggregate logs from multiple nodes. Args: `nodes[]`, `service`, `query` |311| `omniwire_metrics` | Push/pull metrics (Prometheus-compatible). Args: `node`, `action`, `metrics` |312313</details>314315<details>316<summary><strong>Network / VPN (7 tools)</strong></summary>317318| Tool | Description |319|------|-------------|320| `omniwire_vpn` | VPN management — Mullvad, OpenVPN, WireGuard, Tailscale. Args: `node`, `action`, `provider`, `country` |321| `omniwire_port_forward` | SSH tunnel / port forwarding. Args: `node`, `local_port`, `remote_host`, `remote_port` |322| `omniwire_open_browser` | Open URL on GPU/display node. Args: `node`, `url` |323| `omniwire_shell` | Persistent shell session (state preserved). Args: `node`, `session_id`, `command` |324| `omniwire_stream` | Real-time streaming output from long-running commands. Args: `node`, `command` |325| `omniwire_proxy` | HTTP/SOCKS proxy management. Args: `node`, `action`, `port`, `type` |326| `omniwire_scrape` | Scrapling-powered web scraping with Cloudflare bypass. Args: `node`, `url`, `selector`, `format` |327328</details>329330<details>331<summary><strong>Security (6 tools)</strong></summary>332333| Tool | Description |334|------|-------------|335| `omniwire_firewall` | iptables / ufw / nftables management. Args: `node`, `action`, `rule` |336| `omniwire_cert` | TLS certificate management (Let's Encrypt, self-signed). Args: `node`, `domain`, `action` |337| `omniwire_audit` | Security audit — open ports, SUID files, cron jobs, users. Args: `node`, `checks[]` |338| `omniwire_2fa` | TOTP manager — generate, add, delete codes. CyberBase + 1Password persistence. Args: `action`, `service` |339| `omniwire_cookies` | Browser cookie export/import (JSON, Header String, Netscape). Args: `node`, `action`, `browser` |340| `omniwire_user` | User account management — create, delete, sudo, SSH keys. Args: `node`, `action`, `username` |341342</details>343344<details>345<summary><strong>CyberSync (9 tools)</strong></summary>346347CyberSync 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.348349| Tool | Description |350|------|-------------|351| `omniwire_sync` | Sync a specific file or directory across nodes. Args: `path`, `nodes[]`, `direction` |352| `omniwire_sync_rules` | Manage sync rules (include/exclude patterns). Args: `action`, `rule` |353| `omniwire_sync_hooks` | Pre/post sync hooks. Args: `action`, `hook_script` |354| `omniwire_sync_memory` | Sync Claude/agent memory to CyberBase. Args: `action`, `node` |355| `omniwire_sync_agents` | Sync agent definitions across nodes. Args: `action`, `nodes[]` |356| `cybersync_status` | Sync status — item counts, heartbeats, last sync time per tool |357| `cybersync_sync_now` | Force immediate reconciliation across all nodes |358| `cybersync_diff` | Show what's out of sync before committing |359| `cybersync_history` | Sync event log — what changed, when, which node |360361</details>362363<details>364<summary><strong>Knowledge (2 tools)</strong></summary>365366| Tool | Description |367|------|-------------|368| `omniwire_knowledge` | Store knowledge entries in CyberBase with vector embedding. Args: `action`, `key`, `content`, `tags` |369| `omniwire_search_knowledge` | Semantic search over knowledge base (pgvector). Args: `query`, `limit`, `tags` |370371</details>372373<details>374<summary><strong>OmniMesh (3 tools)</strong></summary>375376OmniMesh is OmniWire's built-in WireGuard mesh manager. It provisions, rotates keys, and manages peer routing automatically.377378| Tool | Description |379|------|-------------|380| `omniwire_omnimesh` | Mesh lifecycle — init, add-node, remove-node, rotate-keys, status. Args: `action`, `node` |381| `omniwire_mesh_expose` | Expose a local service to the mesh via WireGuard. Args: `node`, `service`, `port`, `mesh_port` |382| `omniwire_mesh_gateway` | Configure a node as a mesh gateway (egress/ingress). Args: `node`, `action`, `routes[]` |383384</details>385386<details>387<summary><strong>Events (1 tool)</strong></summary>388389| Tool | Description |390|------|-------------|391| `omniwire_events` | Event bus — subscribe, publish, list. Supports Webhook callbacks, WebSocket push (port 3202), and SSE streaming. Args: `action`, `event`, `handler_url` |392393</details>394395<details>396<summary><strong>CDP Browser (1 tool)</strong></summary>397398`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.399400| Action | Description |401|--------|-------------|402| `navigate` | Navigate to URL |403| `screenshot` | Capture page screenshot |404| `click` | Click element by selector |405| `type` | Type text into input |406| `scroll` | Scroll page |407| `evaluate` | Execute JavaScript |408| `get_html` | Get page HTML |409| `get_text` | Get visible text |410| `wait_for` | Wait for selector/navigation |411| `fill_form` | Fill multiple form fields |412| `select` | Select dropdown option |413| `hover` | Hover element |414| `upload` | Upload file to input |415| `download` | Download file |416| `cookies_get` | Export cookies |417| `cookies_set` | Import cookies |418| `session_save` | Persist session state |419| `session_load` | Restore session state |420421</details>422423<details>424<summary><strong>Utilities (10+ tools)</strong></summary>425426| Tool | Description |427|------|-------------|428| `omniwire_alert` | Send alert via Telegram/webhook/email. Args: `message`, `channel`, `priority` |429| `omniwire_alias` | Manage command aliases for nodes. Args: `action`, `name`, `command` |430| `omniwire_backup` | Backup files/DBs to remote storage. Args: `node`, `path`, `dest`, `compress` |431| `omniwire_clipboard` | Read/write clipboard on GUI node. Args: `node`, `action`, `content` |432| `omniwire_snippet` | Store and retrieve command snippets. Args: `action`, `name`, `content` |433| `omniwire_tail_log` | Tail last N lines of a log file. Args: `node`, `path`, `lines` |434| `omniwire_trace` | Distributed trace for debugging command chains. Args: `trace_id`, `action` |435| `omniwire_update` | Check for OmniWire updates + self-update. Args: `action` |436| `omniwire_schedule` | Schedule tasks (cron-style). Args: `action`, `schedule`, `task` |437| `omniwire_dns` | DNS lookup and management. Args: `node`, `query`, `type` |438| `omniwire_doctor` | Diagnose OmniWire setup issues. Args: `checks[]` |439440</details>441442---443444## Performance445446| Operation | Speed |447|-----------|-------|448| Command execution | ~80ms per node |449| File read (< 1MB) | ~60ms (SFTP) |450| File transfer (10MB) | ~150ms (LZ4 netcat) |451| Mesh status check | ~100ms (cached 5s) |452| COC sync (all 3 targets) | ~200ms (parallel) |453| Web scrape (no JS) | ~300ms |454| Web scrape (Cloudflare) | ~800ms |455| CDP browser action | ~120ms |456457Encryption: **AES-128-GCM** for transport, **XChaCha20-Poly1305** for at-rest sync items. Compression: **LZ4** for transfers.458459---460461## Architecture & Platform Support462463| Platform | Architecture | Status |464|----------|-------------|--------|465| Linux | x64 | Supported |466| Linux | arm64 (RPi 4/5, AWS Graviton) | Supported |467| Linux | armv7l (RPi 3, older ARM) | Supported |468| macOS | Intel (x64) | Supported |469| macOS | Apple Silicon (arm64) | Supported |470| Windows | x64 | Supported |471472No native compilation. Pure JavaScript + SSH2. `npm install -g omniwire` works everywhere Node.js 18+ runs.473474**Transports:** stdio (MCP standard), SSE port 3200, REST port 3201, Events/WebSocket port 3202.475476---477478## Security479480| Layer | Implementation |481|-------|---------------|482| Transport | SSH2 with zlib compression |483| At-rest (sync items) | XChaCha20-Poly1305 |484| Transfer compression | LZ4 |485| Secrets backend | 1Password, file-based, or env vars |486| Network | All traffic over your own infrastructure (WireGuard, Tailscale, direct SSH) |487| Key management | Master key in `~/.omniwire/secret.key` — generated locally, never transmitted |488| Mesh auth | Per-node WireGuard keypairs, auto-rotated by OmniMesh |489490---491492## Agent Instructions493494### When to use OmniWire tools495496Use OmniWire when the user:497- Mentions servers, VPS, nodes, mesh, or "my machines"498- Wants commands run remotely or on all servers499- Needs files read, written, or transferred between nodes500- Asks about Docker, services, processes, or system health on remote nodes501- Wants to switch VPN, manage firewall rules, or handle certs502- Mentions "scrape", "browser", "CDP", or web automation on a remote node503- Wants to sync configs, save memory, or COC/save something504- Uses agent-to-agent workflows (A2A, blackboard, task queues)505- Needs TOTP codes, cookies, or security audit506- Mentions "COC", "Save to CyberBase", "Obsidian", or canvas sync507508### How to pick the right tool509510| Intent | Tool |511|--------|------|512| Single node command | `omniwire_exec` |513| All nodes at once | `omniwire_broadcast` |514| Read remote file | `omniwire_read_file` |515| Copy between nodes | `omniwire_transfer_file` |516| Docker anything | `omniwire_docker` |517| Container lifecycle | `omniwire_container` |518| Mesh health check | `omniwire_mesh_status` |519| VPN switch | `omniwire_vpn` |520| Firewall rule | `omniwire_firewall` |521| Web scrape | `omniwire_scrape` |522| Browser automation | `omniwire_cdp` |523| Send agent task | `omniwire_agent_task` |524| Shared state | `omniwire_blackboard` |525| Event bus | `omniwire_event` or `omniwire_events` |526| COC save/sync | `omniwire_coc` |527| Semantic search | `omniwire_search_knowledge` |528| Background job | `omniwire_bg` |529| Sync AI configs | `cybersync_sync_now` |530531### Node selection defaults532533If the user doesn't specify a node:534- File storage, databases, Docker → node with `role: "storage"`535- Security/pentest tools → node with tag `"kali"` or `"pentest"`536- GPU / display / browser → node with `role: "gpu+browser"`537- Heavy compute → node with `role: "compute"`538- Background task dispatch → `omniwire_bg` with any available node539- If ambiguous, ask: "Which server should I run this on?"540541### Background mode542543All 88 tools support `background: true`. Use it for:544- Any operation expected to take > 5 seconds545- Builds, installs, deploys, large transfers546- Scraping and CDP sessions547- Long-running pipelines548549```550omniwire_exec(node="contabo", command="apt upgrade -y", background=true)551→ returns task_id immediately552→ poll with omniwire_bg(action="poll", task_id="...")553→ get result with omniwire_bg(action="result", task_id="...")554```555556### Error handling557558- If a node is offline, report it and offer alternatives559- If exec fails, show stderr and suggest fixes560- If transfer fails, retry with a different mode (SFTP → LZ4 → aria2c)561- If VPN connects but mesh breaks, restore mesh routes automatically (built-in)562- For persistent shell failures, use `omniwire_shell` with a new `session_id`563564---565566## OpenClaw + PaperClip Integration567568OmniWire is the primary infrastructure backend for OpenClaw agents and PaperClip workflows.569570### OpenClaw571572OpenClaw agents use OmniWire for all remote operations. The skill is auto-loaded when OpenClaw detects `omniwire` in the installed MCP servers. Agents can:573- Execute tasks across the mesh without user intervention574- Use the A2A protocol to coordinate multi-agent workflows575- Persist state via the blackboard and knowledge base576- Dispatch background jobs and collect results asynchronously577578### PaperClip579580PaperClip 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.581582**COC workflow from PaperClip:**583584```5851. Workflow completes → calls omniwire_coc(action="save", ...)5862. Saved to CyberBase knowledge table with pgvector embedding5873. Mirrored to Obsidian vault as .md file5884. Canvas node created/updated in CyberBase MindMap.canvas5895. All nodes confirmed in one response590```591592### Sync coverage — CyberSync 6 AI tools593594| Tool | Synced Config |595|------|-------------|596| Claude Code | `~/.claude/settings.json`, CLAUDE.md, memory, agents/ |597| OpenCode | `~/.opencode/config.json`, rules/ |598| OpenClaw | `~/.openclaw/config.json`, skills/, agents/ |599| Codex | `~/.codex/config.json` |600| Gemini | `~/.gemini/settings.json` |601| PaperClip | `~/.paperclip/config.json`, workflows/ |602603---604605## Links606607- **GitHub**: https://github.com/VoidChecksum/omniwire608- **NPM**: https://www.npmjs.com/package/omniwire609- **Issues**: https://github.com/VoidChecksum/omniwire/issues610- **License**: GPL-3.0-only611612---613614*OmniWire v3.5.0 — 88 tools. Every machine. One agent.*