MCP Hub
Back to servers

OmniWire

A unified mesh control layer that provides 30 MCP tools for managing distributed infrastructure, enabling AI agents to execute commands, transfer files, and manage Docker containers across multiple nodes. It features persistent SSH2 connection pooling and cross-node configuration synchronization to unify disparate servers into a single interface.

glama
Stars
3
Forks
3
Updated
Mar 21, 2026
Validated
Mar 23, 2026

npm version MCP tools transports license node

OmniWire

Unified mesh control layer for distributed infrastructure
30-tool MCP server • SSH2 connection pooling • adaptive file transfers • cross-node config sync


OmniWire connects all your machines into a single control plane. It exposes 30 MCP tools that any AI agent (Claude Code, OpenCode, Cursor, etc.) can use to execute commands, transfer files, manage Docker containers, and sync configurations across your entire infrastructure — through one unified interface.

┌──────────────────────────────────────────────────────────────┐
│                     AI Agent (MCP Client)                    │
│              Claude Code / OpenCode / Cursor                 │
└──────────────────────┬───────────────────────────────────────┘
                       │ MCP Protocol (stdio / SSE / REST)
                       ▼
┌──────────────────────────────────────────────────────────────┐
│                    OmniWire MCP Server                       │
│  22 Core Tools  │  8 CyberSync Tools  │  3 Transports       │
└──────┬──────────┴──────────┬──────────┴──────────────────────┘
       │ SSH2 (compressed, pooled)       │ PostgreSQL
       ▼                                 ▼
  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌────────────┐
  │ Node A  │  │ Node B  │  │ Node C  │  │ CyberSync  │
  │ storage │  │ compute │  │   GPU   │  │  Database   │
  └─────────┘  └─────────┘  └─────────┘  └────────────┘

Features

MCP Server — 30 Tools

CategoryToolsDescription
Executionomniwire_exec, omniwire_broadcastRun commands on one or all nodes
Monitoringomniwire_mesh_status, omniwire_node_info, omniwire_live_monitorHealth, latency, CPU/mem/disk
Filesomniwire_read_file, omniwire_write_file, omniwire_list_files, omniwire_find_filesFull remote filesystem access
Transferomniwire_transfer_file, omniwire_deploy3-mode adaptive transfer engine
Systemomniwire_process_list, omniwire_disk_usage, omniwire_tail_log, omniwire_install_packageSystem administration
Servicesomniwire_service_control, omniwire_dockersystemd + Docker management
Networkomniwire_port_forward, omniwire_open_browserSSH tunnels, remote browsers
Advancedomniwire_kernel, omniwire_shell, omniwire_streamKernel ops, persistent PTY, streaming
CyberSynccybersync_status, cybersync_sync_now, cybersync_diff, cybersync_history, cybersync_search_knowledge, cybersync_get_memory, cybersync_manifest, cybersync_force_pushCross-node config synchronization

SSH2 Connection Layer

  • Persistent connection pooling — one SSH2 connection per node, reused for all operations
  • Zlib compression — ~60% less data over the wire for text-heavy outputs
  • Exponential backoff reconnect — 1s → 2s → 4s → ... → 30s cap with jitter
  • Circuit breaker — 3 consecutive failures → 60s cooldown, auto-recovers
  • 2MB output guard — prevents memory exhaustion from runaway commands
  • Health pings — 30s interval, detects degraded connections (>3s response)
  • Status caching — 5s TTL eliminates redundant probes

Adaptive File Transfer Engine

OmniWire automatically selects the fastest transfer mode based on file size:

ModeSize RangeMethodSpeed
SFTP< 10 MBSSH2 native SFTP subsystemZero overhead, binary-safe
netcat+tar+gzip10 MB – 1 GBCompressed TCP stream~70% smaller for text
aria2c> 1 GB16-connection parallel HTTP downloadSaturates bandwidth

CyberSync — Config Synchronization

Keeps AI tool configurations (Claude Code, OpenCode, Codex, etc.) synchronized across all your machines:

  • 6 tools tracked — claude-code, opencode, openclaw, codex, gemini, paperclip
  • File watching — single chokidar instance with batch debounce
  • Parallel sync — pushes to all nodes simultaneously via Promise.allSettled
  • Parallel hashing — SHA-256 in 50-file batches with streaming for large files
  • Conflict resolution — node-ownership model with detailed conflict logging
  • Memory bridge — ingests Claude's memory.db (SQLite → PostgreSQL)
  • Auto-reconciliation — every 5 minutes, with event log pruning

Quick Start

1. Install

npm install -g omniwire

2. Configure Your Mesh

Create ~/.omniwire/mesh.json:

{
  "nodes": [
    {
      "id": "server1",
      "host": "10.0.0.1",
      "user": "root",
      "identityFile": "id_ed25519",
      "role": "storage",
      "tags": ["vps", "docker"]
    },
    {
      "id": "server2",
      "host": "10.0.0.2",
      "user": "root",
      "identityFile": "id_ed25519",
      "role": "compute"
    }
  ],
  "meshSubnet": "10.0.0.0/24"
}

SSH identity files are resolved relative to ~/.ssh/. Full paths also work.

3. Use as MCP Server

Add to your AI tool's MCP config (.mcp.json, Claude Code settings, etc.):

{
  "mcpServers": {
    "omniwire": {
      "command": "node",
      "args": ["/path/to/omniwire/dist/mcp/index.js", "--stdio"]
    }
  }
}

Or if installed globally:

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

4. Use as Interactive Terminal

omniwire
# or
ow

Transport Modes

ModePortUse Case
stdioClaude Code, Cursor, any MCP subprocess client
SSE3200OpenCode, remote HTTP-based MCP clients
REST3201Non-MCP integrations, scripts, dashboards
# stdio (default for MCP)
omniwire --stdio

# SSE + REST (for remote/HTTP clients)
omniwire --sse-port=3200 --rest-port=3201

# Disable CyberSync (MCP-only, no PostgreSQL needed)
omniwire --stdio --no-sync

CyberSync Setup

CyberSync requires PostgreSQL for the sync database. Set via environment variables:

export CYBERSYNC_PG_HOST=10.0.0.1
export CYBERSYNC_PG_PORT=5432
export CYBERSYNC_PG_DATABASE=cybersync
export CYBERSYNC_PG_USER=cybersync
export CYBERSYNC_PG_PASSWORD=your_password

Run the sync daemon:

# Continuous daemon (watch + reconcile every 5 min)
omniwire sync

# Single reconciliation pass
omniwire sync:once

# Ingest Claude memory.db only
omniwire sync:ingest

If you don't need CyberSync, pass --no-sync to the MCP server — it works fine without PostgreSQL.


Configuration Reference

Mesh Config (~/.omniwire/mesh.json)

interface MeshConfig {
  nodes: Array<{
    id: string;            // Unique node identifier
    alias?: string;        // Short alias (e.g., "s1")
    host: string;          // IP or hostname
    port?: number;         // SSH port (default: 22)
    user?: string;         // SSH user (default: "root")
    identityFile?: string; // SSH key filename or full path
    os?: "windows" | "linux"; // OS type (default: "linux")
    role?: "controller" | "storage" | "compute" | "gpu+browser";
    tags?: string[];       // Custom tags for filtering
  }>;
  meshSubnet?: string;     // Subnet notation (informational)
  defaultNode?: string;    // Default target node
}

Environment Variables

VariableDescriptionDefault
OMNIWIRE_CONFIGJSON mesh config (alternative to file)
OMNIWIRE_NODE_IDOverride local node ID detectionauto-detected
OMNIWIRE_LINUX_HOMELinux home directory for path mapping/root
CYBERSYNC_PG_HOSTPostgreSQL hostlocalhost
CYBERSYNC_PG_PORTPostgreSQL port5432
CYBERSYNC_PG_DATABASEDatabase namecybersync
CYBERSYNC_PG_USERDatabase usercybersync
CYBERSYNC_PG_PASSWORDDatabase password

Architecture

omniwire/
├── src/
│   ├── mcp/
│   │   ├── index.ts         # Entrypoint — dual transport (stdio + SSE)
│   │   ├── server.ts        # 22 core MCP tools
│   │   ├── sync-tools.ts    # 8 CyberSync MCP tools
│   │   ├── sse.ts           # SSE transport
│   │   └── rest.ts          # REST API
│   ├── nodes/
│   │   ├── manager.ts       # SSH2 connection pooling + circuit breaker
│   │   ├── transfer.ts      # 3-mode adaptive file transfer
│   │   ├── shell.ts         # Persistent PTY sessions
│   │   ├── tunnel.ts        # SSH port forwarding
│   │   └── realtime.ts      # Streaming command dispatch
│   ├── sync/
│   │   ├── engine.ts        # Push/pull/reconcile with parallel ops
│   │   ├── db.ts            # PostgreSQL pool (8 connections, FTS)
│   │   ├── watcher.ts       # Single chokidar, batch debounce
│   │   ├── hasher.ts        # SHA-256 (streaming for large files)
│   │   ├── manifest.ts      # Tool sync definitions
│   │   ├── memory-bridge.ts # SQLite → PostgreSQL ingestion
│   │   └── paths.ts         # Windows/Linux path adaptation
│   ├── protocol/
│   │   ├── config.ts        # Mesh topology loader
│   │   ├── types.ts         # Shared type definitions
│   │   └── paths.ts         # node:/path format parser
│   ├── commands/             # Interactive REPL commands
│   ├── claude/               # Claude Code AI integration
│   └── ui/                   # Terminal formatting
├── mesh.example.json         # Example mesh configuration
├── package.json
└── tsconfig.json

Performance

Benchmarked on a 3-node WireGuard mesh (EU region):

OperationLatencyNotes
Single command exec~120msSSH2 + command + return
Mesh status (all nodes)~150msParallel probes, 5s cache
File read (< 1MB)~80msSFTP, no encoding overhead
File transfer (10MB)~200msgzip netcat over WireGuard
Config sync (push)~200msParallel to all nodes
Reconcile (500 files)~2s50-file parallel hash batches

Requirements

  • Node.js >= 20
  • SSH access to remote nodes (key-based auth)
  • PostgreSQL (only if using CyberSync)
  • WireGuard / VPN recommended for mesh connectivity

License

MIT

Reviews

No reviews yet

Sign in to write a review