Skip to content
Conduit

mcp server

omniwire-mcp

Unified mesh control layer — 30-tool MCP server for managing SSH nodes, file transfers, and config sync across distributed infrastructure

BunsDev/omniwire-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "bunsdev-omniwire-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "omniwire"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 26, 2026

The infrastructure layer for AI agent swarms.

81 MCP tools · A2A protocol · OmniMesh VPN · nftables firewall · CDP browser · cookie sync · CyberBase persistence


Quick Start

npm install -g omniwire

Add to your AI agent (Claude Code, Cursor, OpenCode, etc.):

{
  "mcpServers": {
    "omniwire": { "command": "omniwire", "args": ["--stdio"] }
  }
}

Why OmniWire?

ProblemOmniWire Solution
Managing multiple servers manuallyOne tool call controls any node
Agents can't coordinate with each otherA2A messaging, events, semaphores
Multi-step deploys need many round-tripsPipelines chain steps in 1 call
Flaky commands break agent loopsBuilt-in retry + assert + watch
Long tasks block the agentbackground: true on any tool
Results lost between tool callsSession store with {{key}} interpolation
Different transfer methods for diff sizesAuto-selects SFTP / netcat+LZ4 / aria2c
SSH connections dropMulti-path failover + circuit breaker

Use Cases

DevOps & Infrastructure

# Deploy to all nodes in one call
omniwire_deploy(src="contabo:/app/v2.tar.gz", dst="/opt/app/")

# Rolling service restart
omniwire_batch([
  {node: "node1", command: "systemctl restart app"},
  {node: "node2", command: "systemctl restart app"}
], parallel=false)

# Monitor disk across fleet
omniwire_disk_usage()

Security & Pentesting

# Anonymous nmap through Mullvad VPN
omniwire_exec(
  node="contabo",
  command="nmap -sV -T4 target.com",
  via_vpn="mullvad:se",
  background=true
)

# Rotate exit IP between scans
omniwire_vpn(action="rotate", node="contabo")

# Run nuclei through VPN namespace
omniwire_exec(command="nuclei -u target.com",
  via_vpn="mullvad", store_as="nuclei_results")

Multi-Agent Coordination

# Agent A dispatches work
omniwire_task_queue(action="enqueue",
  queue="recon", task="subfinder -d target.com")

# Agent B picks it up
omniwire_task_queue(action="dequeue", queue="recon")

# Share findings on blackboard
omniwire_blackboard(action="post",
  topic="subdomains", data="api.target.com")

# A2A messaging between agents
omniwire_a2a_message(action="send",
  channel="results", message="scan complete")

Background & Async Workflows

# Long build in background
omniwire_exec(
  command="docker build -t app .",
  node="contabo", background=true
)
# Returns: "BACKGROUND bg-abc123"

# Check progress
omniwire_bg(action="poll", task_id="bg-abc123")
# Returns: "RUNNING (45.2s)"

# Get result when done
omniwire_bg(action="result", task_id="bg-abc123")

# Pipeline: build → test → deploy
omniwire_pipeline(steps=[
  {node: "contabo", command: "make build"},
  {node: "contabo", command: "make test"},
  {command: "deploy.sh", store_as: "version"}
])

File Operations

# Transfer large dataset between nodes
omniwire_transfer_file(
  src="contabo:/data/model.bin",
  dst="hostinger:/ml/model.bin"
)
# Auto-selects: aria2c (16-conn parallel)

# Sync config to all nodes
omniwire_deploy(
  src_node="contabo",
  src_path="/etc/nginx/nginx.conf",
  dst_path="/etc/nginx/nginx.conf"
)

VPN & Anonymous Operations

# Full Mullvad setup for a node
omniwire_vpn(action="connect", server="se",
  node="contabo")
omniwire_vpn(action="quantum", config="on")
omniwire_vpn(action="daita", config="on")
omniwire_vpn(action="multihop", config="se:us")
omniwire_vpn(action="dns", config="adblock")
omniwire_vpn(action="killswitch", config="on")

# Verify anonymous IP
omniwire_vpn(action="ip", node="contabo")

# Node-wide VPN (mesh stays connected)
omniwire_vpn(action="full-on", server="de")

Architecture

graph TB
    subgraph clients["AI Agents"]
        CC["Claude Code"]
        OC["OpenCode / OpenClaw"]
        CU["Cursor / Any MCP Client"]
        A2["Other Agents (A2A)"]
    end

    subgraph omniwire["OmniWire MCP Server"]
        direction TB
        MCP["MCP Protocol Layer<br/>stdio | SSE | REST"]

        subgraph tools["81 Tools"]
            direction LR
            EXEC["Execution<br/>exec  run  batch<br/>broadcast  pipeline  bg"]
            AGENT["Agentic<br/>store  watch  task<br/>a2a  events  locks"]
            FILES["Files & Deploy<br/>read  write  transfer<br/>deploy  find"]
            SYS["System & DevOps<br/>docker  services<br/>cron  env  git  syslog"]
            SYNC["CyberSync<br/>sync  diff  search<br/>secrets  knowledge"]
        end

        subgraph engine["Core Engine"]
            direction LR
            POOL["SSH2 Pool<br/>persistent  compressed<br/>circuit breaker"]
            XFER["Transfer Engine<br/>SFTP  netcat+LZ4<br/>aria2c 16-conn"]
            CSYNC["Sync Engine<br/>PostgreSQL  XChaCha20<br/>parallel reconcile"]
        end
    end

    subgraph mesh["Infrastructure Mesh"]
        direction LR
        N1["Node A<br/>storage"]
        N2["Node B<br/>compute"]
        N3["Node C<br/>GPU"]
        N4["Node D<br/>local"]
    end

    DB[("PostgreSQL<br/>CyberBase")]

    CC & OC & CU & A2 -->|MCP| MCP
    MCP --> tools
    tools --> engine
    POOL -->|"SSH2 multi-path"| N1 & N2 & N3
    POOL -->|"local exec"| N4
    CSYNC --> DB

    style omniwire fill:#0D1117,stroke:#59C2FF,stroke-width:2px,color:#C6D0E1
    style clients fill:#161B22,stroke:#91B362,stroke-width:1px,color:#C6D0E1
    style mesh fill:#161B22,stroke:#E6B450,stroke-width:1px,color:#C6D0E1
    style tools fill:#0D1117,stroke:#59C2FF,stroke-width:1px,color:#C6D0E1
    style engine fill:#0D1117,stroke:#CC93E6,stroke-width:1px,color:#C6D0E1
    style MCP fill:#162B44,stroke:#59C2FF,color:#59C2FF
    style DB fill:#162B44,stroke:#CC93E6,color:#CC93E6

Key Capabilities

Execution

omniwire_exec       single command + retry + assert
omniwire_run        multi-line script (compact UI)
omniwire_batch      N commands, 1 tool call, chaining
omniwire_broadcast  parallel across all nodes
omniwire_pipeline   multi-step DAG with data flow
omniwire_bg         poll/list background tasks

Multi-Agent (A2A)

omniwire_store        session key-value store
omniwire_a2a_message  agent-to-agent queues
omniwire_event        pub/sub event bus
omniwire_semaphore    distributed locking
omniwire_agent_task   async background dispatch
omniwire_workflow     reusable named DAGs

Adaptive File Transfer

 < 10 MB   SFTP         native, 80ms
 10M-1GB   netcat+LZ4   compressed, 100ms
 > 1 GB    aria2c       16-parallel, max speed

Connection Resilience

Connected --> Health Ping (30s, parallel)
    |
Failure --> Multi-path Failover
    |         WireGuard -> Tailscale -> Public IP
    |
    +--> Retry (300ms -> 600ms -> ... -> 10s)
    |
3 fails --> Circuit OPEN (15s) -> Auto-recover

Background Dispatch

# Any tool supports background: true
exec(background=true)   -> "bg-abc123"
bg(action="poll", id=..) -> "RUNNING (3.2s)"
bg(action="result", id=..) -> full output
bg(action="list")       -> all tasks + status

Agentic Chaining

exec(store_as="ip")       store result
exec(command="ping {{ip}}") interpolate
batch(abort_on_fail=true)   fail-fast
exec(format="json")         structured output
exec(retry=3, assert="ok")  resilient
watch(assert="ready")       poll until

All 81 Tools

Every tool supports background: true — returns a task ID immediately. Poll with omniwire_bg.

ToolDescription
omniwire_execRun command on any node. retry, assert, store_as, format:"json", {{key}}, via_vpn.
omniwire_runMulti-line scripts via temp file.
omniwire_batchN commands in 1 call. Chaining {{prev}}, abort_on_fail, parallel/sequential.
omniwire_broadcastExecute on all nodes simultaneously.
omniwire_pipelineMulti-step DAG with {{prev}}/{{stepN}} interpolation.
omniwire_bgList/poll/retrieve background task results.
ToolDescription
omniwire_storeSession key-value store for cross-call chaining.
omniwire_watchPoll until assert matches — deploys, builds, readiness.
omniwire_healthcheckParallel health probe all nodes (disk, mem, load, docker).
omniwire_agent_taskBackground task dispatch with poll/retrieve.
omniwire_a2a_messageAgent-to-agent message queues (send/receive/peek).
omniwire_semaphoreDistributed locking — atomic acquire/release.
omniwire_eventPub/sub events per topic.
omniwire_workflowReusable named workflow DAGs.
omniwire_agent_registryAgent capability discovery + heartbeat.
omniwire_blackboardShared blackboard for swarm coordination.
omniwire_task_queueDistributed priority queue — enqueue/dequeue/complete.
omniwire_capabilityQuery node capabilities for intelligent routing.
ToolDescription
omniwire_read_fileRead file from any node (node:/path).
omniwire_write_fileWrite/create file on any node.
omniwire_list_filesList directory contents.
omniwire_find_filesGlob search across nodes.
omniwire_transfer_fileCopy between nodes (auto SFTP/netcat/aria2c).
omniwire_deployDeploy one file to all nodes in parallel.
ToolDescription
omniwire_mesh_statusHealth, latency, CPU/mem/disk — all nodes.
omniwire_node_infoDetailed info for one node.
omniwire_live_monitorSnapshot metrics: cpu, memory, disk, network.
ToolDescription
omniwire_process_listList/filter processes across nodes.
omniwire_disk_usageDisk usage for all nodes.
omniwire_tail_logLast N lines of a log file.
omniwire_install_packageInstall via apt/npm/pip.
omniwire_service_controlsystemd start/stop/restart/status.
omniwire_dockerDocker commands on any node.
omniwire_kerneldmesg, sysctl, modprobe, lsmod, strace, perf.
omniwire_cronList/add/remove cron jobs.
omniwire_envGet/set persistent environment variables.
omniwire_networkping, traceroute, dns, ports, speed, connections.
omniwire_gitGit commands on repos on any node.
omniwire_syslogQuery journalctl with filters.
ToolDescription
omniwire_firewallnftables engine — presets, rate-limit, geo-block, port-knock, ban/unban. Mesh whitelisted.
omniwire_vpnMullvad/OpenVPN/WireGuard/Tailscale — multi-hop, DAITA, quantum, killswitch. Mesh-safe.
omniwire_cookiesCookie management — JSON/Header/Netscape, browser extract, CyberBase + 1Password sync.
omniwire_cdpChrome DevTools Protocol — headless Chrome, screenshot, PDF, DOM, cookies.
omniwire_proxyHTTP/SOCKS proxy management on any node.
omniwire_dnsDNS resolve, set server, flush cache, block domains.
omniwire_port_forwardSSH tunnels — create/list/close/mesh-expose.
omniwire_shellPersistent PTY session (preserves cwd/env).
omniwire_clipboardShared clipboard buffer across mesh.
ToolDescription
omniwire_backupSnapshot/restore paths. Diff, cleanup, retention.
omniwire_containerDocker lifecycle — compose, build, push, logs, prune, stats.
omniwire_certTLS certs — Let's Encrypt, check expiry, self-signed.
omniwire_userUser & SSH key management, sudo config.
omniwire_scheduleDistributed cron with failover.
omniwire_alertThreshold alerting — disk/mem/load/offline + webhook notify.
omniwire_log_aggregateCross-node log search in parallel.
omniwire_benchmarkCPU/memory/disk/network benchmarks.
omniwire_streamCapture streaming output (tail -f, watch).
ToolDescription
omniwire_omnimeshWireGuard mesh manager — init/up/down/add-peer/sync-peers/health/rotate-keys/topology. All OS.
omniwire_mesh_exposeExpose localhost services to mesh — discover/expose/unexpose/expose-remote.
omniwire_mesh_gatewayAuto-expose all localhost services mesh-wide.
omniwire_eventsWebhook + WebSocket + SSE event bus. Publish, manage webhooks, query log.
omniwire_knowledgeCyberBase knowledge CRUD, text/semantic search, health, vacuum, bulk-set, export.
omniwire_updateSelf-update from npm + GitHub. Auto-update, mesh-wide push.
ToolDescription
omniwire_snippetReusable command templates with {{var}} substitution.
omniwire_aliasIn-session command shortcuts.
omniwire_traceDistributed tracing — span waterfalls across nodes.
omniwire_doctorHealth diagnostics — SSH, disk, mem, docker, WireGuard, CyberBase.
omniwire_metricsPrometheus-compatible metrics scrape/export.
omniwire_auditCommand audit log — view/search/stats.
omniwire_pluginPlugin system — list/load from ~/.omniwire/plugins/.
ToolDescription
cybersync_statusSync status, item counts, pending syncs.
cybersync_sync_nowTrigger immediate reconciliation.
cybersync_diffLocal vs database differences.
cybersync_historySync event log.
cybersync_search_knowledgeFull-text search unified knowledge base.
cybersync_get_memoryRetrieve Claude memory from PostgreSQL.
cybersync_manifestTracked files per tool.
cybersync_force_pushForce push file to all nodes.
omniwire_secretsSecrets management (1Password, file, env).

Performance

OperationLatencyOptimization
Command exec~80msAES-128-GCM cipher, persistent SSH2, zero-fork : ping
Mesh status~100msParallel probes, 5s cache, single /proc read
File read (<1MB)~60msSFTP-first (skips cat fork)
Transfer (10MB)~120msLZ4 compression (10x faster than gzip)
Transfer (1GB)~8saria2c 16-connection parallel
Pipeline (5 steps)~400ms{{prev}} interpolation, no extra tool calls
Health check (all)~90msParallel Promise.allSettled
A2A message~85msFile-append queue, atomic dequeue
Reconnect~300ms300ms initial, 2s keepalive, 15s circuit breaker
  • Cipher: AES-128-GCM (AES-NI hardware accelerated)
  • Key exchange: curve25519-sha256 (fastest modern KEX)
  • Keepalive: 2s interval, 2 retries = 4s dead detection
  • Port finder: shuf (pure bash) replaces python3 -c socket (-30ms)
  • Compression: LZ4-1 for transfers (10x faster than gzip)
  • Buffer: Array push + join (O(n) vs O(n^2) string concat)
  • Status: Single /proc read replaces multiple piped commands
  • Health ping: : builtin (no hash lookup, no fork)
  • Reads: SFTP tried first, cat fallback only on failure
  • Circuit breaker: 15s recovery, 10s reconnect cap

Security

  • All remote execution via ssh2.Client.exec() -- never child_process.exec()
  • Key-based auth only, no passwords stored, SSH key caching
  • Multi-path failover: WireGuard -> Tailscale -> Public IP
  • XChaCha20-Poly1305 at-rest encryption for synced configs
  • 2MB output guard prevents memory exhaustion
  • 4KB auto-truncation prevents context window bloat
  • Circuit breaker isolates failing nodes
  • CORS restricted to localhost on REST API

Transport Modes

ModePortUse Case
--stdio--Claude Code, Cursor, MCP subprocess
--sse-port=N3200OpenCode, remote HTTP MCP clients
--rest-port=N3201Scripts, dashboards, non-MCP
omniwire --stdio                          # MCP mode (default)
omniwire --sse-port=3200 --rest-port=3201 # HTTP mode
omniwire --stdio --no-sync               # MCP without CyberSync
omniwire    # or: ow                      # Interactive REPL

Configure Mesh

Create ~/.omniwire/mesh.json:

{
  "nodes": [
    { "id": "server1", "host": "10.0.0.1", "user": "root", "identityFile": "id_ed25519", "role": "storage" },
    { "id": "server2", "host": "10.0.0.2", "user": "root", "identityFile": "id_ed25519", "role": "compute" }
  ]
}

Changelog

19 new tools: proxy, dns, backup, container, cert, user, schedule, alert, log_aggregate, benchmark, snippet, alias, trace, doctor, metrics, audit, plugin, cookies, cdp.

CyberBase auto-persistence: Store, audit, blackboard, cookies all sync to PostgreSQL. pgvector semantic search. 5s statement_timeout on all DB calls.

Architecture: Priority command queues, smart output truncation, predictive node selection, latency history, connection pool stats.

Security: Command denylist (blocks rm -rf /, fork bombs, disk wipes). Audit log with CyberBase persistence.

A2A: Typed message schemas (JSON validation), dead letter queue for failed tasks, pub/sub event filters.

DX: GitHub Actions CI, bash/zsh/fish shell completions, --json flag, cookie sync to 1Password.

omniwire_firewall: nftables-based firewall engine with 17 actions. Presets (server, paranoid, minimal, pentest), rate-limiting, geo-blocking by country, port-knocking sequences, IP ban/unban, whitelist/blacklist, rule management, audit log, save/restore.

Zero mesh impact: wg0, wg1, tailscale0, and all mesh CIDRs (10.10.0.0/24, 10.20.0.0/24, 100.64.0.0/10) are always whitelisted before any hardening rules. nftables runs in kernel space — zero latency overhead.

omniwire_vpn tool: Mullvad, OpenVPN, WireGuard, Tailscale. Split-tunnel (per-command) + full-node modes. Mesh connectivity (wg0, wg1, Tailscale) always preserved via route exclusions and network namespace isolation.

via_vpn on exec: Route any command through VPN using Linux network namespaces. Only the command's traffic goes through VPN — SSH/WireGuard mesh stays on real interface.

Modes: connect (split-tunnel), full-on (node-wide with mesh exclusions), rotate (new exit IP), status, list, ip.

background: true auto-injected into all 81 tools via server-level wrapper. Returns task ID, poll with omniwire_bg. New omniwire_bg tool for list/poll/result.

Performance: AES-128-GCM cipher, curve25519-sha256 KEX, 2s keepalive, LZ4 transfers (10x faster), shuf port finder (-30ms), SFTP-first reads, array buffer concat, /proc single-read status, : builtin health ping, 300ms reconnect start, 15s circuit breaker.

4 new A2A tools (49 -> 53): agent_registry (capability discovery), blackboard (swarm collaboration), task_queue (distributed work), capability (node routing).

9 new agentic tools (40 -> 49): store, pipeline, watch, healthcheck, agent_task, a2a_message, semaphore, event, workflow. Agentic upgrades: format:"json", retry, assert, store_as, {{key}} interpolation.

Output overhaul (auto-truncation, smart time, tabular multi-node). 6 new DevOps tools (cron, env, network, clipboard, git, syslog).

Security fixes, multi-path SSH failover, CyberBase integration, VaultBridge Obsidian mirror.


omniwire/
  src/
    mcp/           MCP server (81 tools, 3 transports)
    nodes/         SSH2 pool, transfer engine, PTY, tunnels
    sync/          CyberSync + CyberBase (PostgreSQL, Obsidian, encryption)
    protocol/      Mesh config, types, path parsing
    commands/      Interactive REPL
    ui/            Terminal formatting

Requirements: Node.js >= 20 • SSH key access to nodes • PostgreSQL (CyberSync only) • WireGuard recommended


↑↓ navigate openesc close