Serveur MCP sysbridge
Commit 17 oct. 2026Offre aux agents IA un contrôle natif du système de fichiers, du shell et du bureau à distance sur des nœuds Linux, macOS ou Android via SSH et SFTP.
Aussi connu sous 0xOpCode/sysbridge-mcp
- Étoiles
- 1
- Outils
- —
- Téléchargements, 30 jours
- —
- Dernière version
- —
- Dernier commit
- 17 oct. 2026
- Licence
- MIT
Qu'est-ce que sysbridge MCP ?
sysbridge est un serveur MCP. Offre aux agents IA un contrôle natif du système de fichiers, du shell et du bureau à distance sur des nœuds Linux, macOS ou Android via SSH et SFTP.
Résumé généré à partir du README du projet
À propos du MCP server sysbridge
sysbridge-mcp permet de donner aux agents IA un contrôle natif sur des nœuds distants Linux, macOS ou Android. Il permet aux développeurs d'accorder à un agent l'accès au système de fichiers, l'exécution de commandes shell et des capacités de bureau à distance via SSH et SFTP, sans nécessiter d'installation logicielle par défaut sur la machine cible. Cela le rend idéal pour la gestion de VPS cloud, de stations de travail distantes ou d'environnements Android Termux depuis un client local comme Claude Desktop ou Cursor.
Le serveur fonctionne via plusieurs modes, dont un mode SSH sans installation qui fonctionne avec un sshd standard et un maillage P2P complet pour les appareils dont l'adresse IP change. Il dispose d'un système de fichiers virtuel à trois niveaux qui utilise un sous-système SFTP Go en mémoire pour effectuer des écritures atomiques et des modifications multi-blocs. Pour les tâches de longue durée, le système détache automatiquement les commandes dans des sessions tmux afin d'éviter les échecs lors des changements de réseau. Les utilisateurs peuvent également opter pour le sudo cryptographique sans mot de passe en utilisant pam_ssh_agent_auth pour accorder l'accès root via le transfert d'agent SSH au lieu de mots de passe en clair.
Ce que vous pouvez faire avec
- 1Gérer des serveurs cloud distantsUn agent IA peut effectuer des opérations sur les fichiers et exécuter des commandes sur un nouveau VPS Ubuntu ou Debian en utilisant uniquement des identifiants SSH standards.
- 2Maintenir des builds de longue duréeLes développeurs peuvent lancer des tâches de compilation lourdes qui se poursuivent même si la connexion Wi-Fi est coupée ou si l'adresse IP change.
- 3Élever les privilèges de manière sécuriséeAccorder un accès root à un agent IA pour gérer les services système sans jamais exposer de mot de passe sudo en clair.
- 4Connecter des nœuds mobiles et de bureauUtiliser un téléphone exécutant Termux pour contrôler un ordinateur portable via un maillage de découverte de pairs à latence zéro.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Configuration
CGO_ENABLEDSYSBRIDGE_TOKEN
| Nom | Description | Type |
|---|---|---|
| CGO_ENABLED | — | |
| SYSBRIDGE_TOKEN | — |
Vérifications automatisées
Exécuté le 15 nov. 2026Rapport complet →Pas encore vérifié. Un serveur nécessite un score de 80, aucune faille sérieuse et suffisamment de données pour que nous puissions effectuer les vérifications. Fonctionnement des vérifications · Ce qu'il faut corriger pour gagner des points
- Dépôt source lié et accessible0xopcode/sysbridge-mcp is public and reachablegithub.com/0xopcode/sysbridge-mcp ↗Réussi
- Le nom du package correspond au dépôt sourceNon vérifié
- Provenance du build (attestation Sigstore)Non vérifié
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-10-17github.com/0xopcode/sysbridge-mcp ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNon vérifié
- Aucun avis critique dans le package ou ses dépendancesNon vérifié
- Aucune instruction cachée destinée au modèle0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNon vérifié
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur GitHubGive your AI agent native filesystem, shell, and desktop control over any remote Linux PC, Cloud VPS, or Android Termux node without installing the agent on the target machine.
Why I Built This • Architecture • Quick Start • MCP Transports • Tool Catalog • Cryptographic Sudo • Go SDK
📖 The Story: Why I Built sysbridge-mcp
I run my AI coding agent from an Android phone inside a Termux + Debian PRoot container while my actual workstation is an HP Pavilion G4 running a stripped-down Arch Linux + Sway Wayland setup (Daemon OS). My laptop has an old dual-core AMD A4-3330MX APU that lacks SSE4.2 and AES-NI instructions. Running modern bloated AI IDEs or heavy Node/Electron agent runtimes on that CPU causes immediate SIGILL core dumps or eats the RAM alive.
So the brain lived on my phone, and the muscle lived on my laptop.
At first, I did what every engineer does at 2 AM: I wrote a pile of bash scripts (ssh-laptop, ssh-phone) and a small UDP discovery daemon (buddy-link). Then I watched my AI agent try to edit files on the laptop over raw ssh user@host "cat << 'EOF' > file.go".
It was a comedy of errors:
- The Backtick Massacre: Any file containing nested backticks,
$variables, or escaped quotes got mangled by two layers of shell expansion before hitting disk. - The Wi-Fi Roam Curse: Whenever I unplugged USB tethering and switched to mobile hotspot, the laptop's IP changed, the TCP pipe snapped, and my 20-minute kernel build died at 94%.
- The Termux FUSE Wall: You cannot run
sshfsinside an unprivileged Android PRoot container because/dev/fuseis locked down. - The Sudo Dilemma: I wanted my agent to manage systemd services and mount LUKS vaults on my laptop, but I refused to put plaintext sudo passwords in a prompt or set
%wheel ALL=(ALL) NOPASSWD: ALLso anyone touching my physical keyboard had root.
I realized I did not want an "SSH wrapper." I wanted my agent to treat a remote laptop, a $4/month cloud VPS, or a homelab server as if its filesystem and process table were local, with zero software required on the remote machine by default, and optional superpowers when both machines run the binary.
That is why I merged buddy-link and my Arch workstation tooling into sysbridge-mcp.
⚡ What Makes sysbridge-mcp Different
- Zero-Install Remote Default (Mode A): Point it at any fresh Ubuntu, Debian, Arch, macOS, or Alpine VPS running standard
sshd. Nothing needs to be installed on the remote host. No root required on either side. - Mountless 3-Tier Virtual Filesystem (
pkg/vfs): Works on Android Termux, Docker containers, macOS, and Linux without kernel FUSE (sshfs). Surgical file reads, atomic writes, multi-hunk edits, and directory trees run over an in-memory Go SFTP subsystem (sftp-vfs) multiplexed over a warm SSH pool, with automatic fallback to POSIX byte streams (ssh-stream) if SFTP is disabled. - Broken-Pipe Immunity: Commands that run longer than
5s(configurable) automatically detach into a remotetmuxsession (ornohup+ PID sentinel iftmuxis not installed on the target VPS). Your Wi-Fi can drop for ten minutes while the remote compilation finishes undisturbed. - 7-Stage Zero-Hunt IP Resolver: Never type
ip addrorarp -aagain. Resolves dynamic peers across UDP:42424HMAC-SHA256 beacons, LinuxAF_NETLINKinstant link-state bursts, USB tethering (rndis0/usb0/ncm0), hotspot ARP/ADB neighbor MAC tables, and local subnet probes in<1ms. - Cryptographic Passwordless Sudo (
pam_ssh_agent_auth): Keepsudodisabled by default, or enablesudo.mode: "agent_forward"to forward your SSH agent socket per request. The remote PAM stack verifies a cryptographic signature from your SSH key, granting the agent root access without ever exposing a password or weakening physical console sudo. - Hardware Blocklist Guardrails: Hard-block specific block devices (such as
/dev/sdaon dual-boot machines) and critical paths (/boot/efi) inside the Go engine before any command or file write leaves the process.
🏗️ System Architecture
How the 3-Tier VFS & Progressive Peer Engine Works
| Layer | Primary Driver | Automatic Fallback | Root Required? | Target Requirement |
|---|---|---|---|---|
Filesystem (fs_*) |
sftp-vfs (Multiplexed Go SFTP over SSH pool) |
ssh-stream (Atomic temp-file POSIX byte streams) |
No | Standard sshd |
Command Runner (exec_run) |
Warm SSH channel + tmux auto-detach (>5s) |
nohup + PID & exit-code sentinel in /tmp |
No | Standard /bin/sh |
Port Tunnels (tunnel_manage) |
Native Go net.Listener <-> ssh.Client channel copy |
Auto-rebind supervisor on peer IP change | No | AllowTcpForwarding yes |
Peer Discovery (peer_*) |
Static IP / DNS / ~/.ssh/config host |
7-Stage Cascade + UDP :42424 HMAC-SHA256 Mesh |
No | Optional sysbridge-mcp daemon |
Privilege Elevation (sudo) |
Disabled by default (sudo.mode: "disabled") |
agent_forward via pam_ssh_agent_auth.so |
Opt-In | pam_ssh_agent_auth |
🚀 Quick Start
1. One-Line Install (Linux, macOS, Android Termux)
curl -fsSL https://raw.githubusercontent.com/0xOpCode/sysbridge-mcp/main/install.sh | sh
2. Install via Go Toolchain
go install github.com/0xOpCode/sysbridge-mcp/cmd/sysbridge-mcp@latest
3. Build from Source
git clone https://github.com/0xOpCode/sysbridge-mcp.git
cd sysbridge-mcp
CGO_ENABLED=0 go build -ldflags="-s -w" -o sysbridge-mcp ./cmd/sysbridge-mcp
🎯 Complete User Setup Guide: 3 Progressive Tiers
You can use sysbridge-mcp in three progressive tiers depending on how much control you want over the remote machine.
Tier 1: Zero-Install SSH Mode (Any Cloud VPS, Linux PC, or macOS Host)
Best for: Production VPS servers, cloud VMs, or shared machines where you do not want to install extra software or use sudo.
- Target Machine Requirements: Standard
sshdand your SSH public key in~/.ssh/authorized_keys. Nothing is installed on the remote machine. - Controller Setup (
~/.config/sysbridge/config.yaml):default_peer: "my_vps" peers: my_vps: name: "my_vps" host: "203.0.113.42" # IP or domain name user: "ubuntu" # Normal non-root user ssh_port: 22 auth: method: "key" identity_file: "~/.ssh/id_ed25519" sudo: mode: "disabled" # Strictly non-sudo vfs: backend: "auto" # Uses sftp-vfs, falls back to ssh-stream workspace_root: "/home/ubuntu/projects" - Or register dynamically from chat without touching config:
Ask your agent: "Connect to peer
my_vpsat203.0.113.42with userubuntuand save config." (peer_connecttool). - What you get immediately: Full
fs_read,fs_write,fs_edit,fs_multi_edit,fs_search,fs_ops,exec_run(with automaticnohupbackgrounding for commands>5s), and native Go SSH port tunnels (tunnel_manage).
Tier 2: Unbreakable Roaming Workstation (tmux + mosh + rg + rsync)
Best for: Heavy compilation, kernel/Docker builds, and coding over mobile hotspots or unstable Wi-Fi.
- Ask your agent to audit the remote machine:
Run peer_provision with action="audit" on peer "laptop" - Install the standard packages on the target machine if missing:
- Arch Linux:
sudo pacman -S tmux mosh ripgrep rsync - Ubuntu / Debian:
sudo apt install tmux mosh ripgrep rsync - macOS:
brew install tmux mosh ripgrep rsync
- Arch Linux:
- What this unlocks:
- Commands running longer than
5sdetach into namedtmuxsessions (/tmp/sysbridge_<id>.log) that you can inspect, tail, or send keystrokes to viatask_control. mosh_controlspawnsmosh-serverover UDP60000:61000so interactive terminal sessions survive IP changes and laptop sleep.fs_searchaccelerates content search usingrg(ripgrep), andsync_transferuses deltarsync.
- Commands running longer than
Tier 3: Full P2P Mesh (<1ms Zero-IP-Hunt) + Cryptographic Agent Sudo
Best for: Phone (Termux) <-> Laptop / Homelab setups where IPs change constantly across Wi-Fi, Hotspot, and USB Tethering.
Step A: Enable Bidirectional UDP :42424 Mesh Discovery (Rootless)
- Generate a shared 256-bit HMAC key on Machine A:
mkdir -p ~/.config/sysbridge && chmod 700 ~/.config/sysbridge sysbridge-mcp keygen > ~/.config/sysbridge/secret.key chmod 600 ~/.config/sysbridge/secret.key - Copy the same
~/.config/sysbridge/secret.keyto Machine B and installsysbridge-mcpon Machine B (curl -fsSL https://raw.githubusercontent.com/0xOpCode/sysbridge-mcp/main/install.sh | sh). - Ask the agent to enable the rootless user-level mesh service on Machine B:
(This creates and startsRun peer_provision with action="setup_user_mesh" and apply=true on peer "laptop"~/.config/systemd/user/sysbridge-mesh.servicerunningsysbridge-mcp daemon --port 42424without root). - Set
host: "auto"in your peer config. Both machines now discover each other's live IP in<1msvia signed UDP beacons and Linux Netlink interface bursts.
Step B: Optional Cryptographic Passwordless Sudo (pam_ssh_agent_auth)
If you want your agent to run sudo commands on the remote workstation when connected with your SSH key, without setting NOPASSWD: ALL for local console users:
- Ask the agent to generate or apply the PAM configuration:
Run peer_provision with action="setup_pam_ssh_sudo" on peer "laptop" - Ensure
/etcand/etc/securityare owned byroot:rootwith mode0755(pam_ssh_agent_auth.sorejects authentication if/etcis group-writable0775), your public key is in/etc/security/authorized_keys, andsudo.mode: "agent_forward"is set inconfig.yaml.
🔌 Multi-Protocol MCP Transports
sysbridge-mcp implements every MCP transport protocol in a single static binary:
# 1. Standard I/O (Default - Claude Code, Claude Desktop, Cursor, Windsurf, Zed)
sysbridge-mcp --transport stdio
# 2. Streamable HTTP (Single /mcp endpoint with session management)
sysbridge-mcp --transport http --listen 127.0.0.1:8787
# 3. Legacy SSE (/sse stream + /message POST for n8n and older MCP gateways)
sysbridge-mcp --transport sse --listen 127.0.0.1:8787
# 4. Dual HTTP Mode (Serves both /mcp Streamable HTTP, /sse + /message, and /healthz on one port)
sysbridge-mcp --transport dual --listen 0.0.0.0:8787
# 5. Unix Domain Socket (Share one warm SSH/SFTP pool across multiple local CLI sessions)
sysbridge-mcp --transport unix --socket ~/.cache/sysbridge/sysbridge.sock
Client Configuration Snippets
claude mcp add sysbridge -- sysbridge-mcp --transport stdio
{
"mcpServers": {
"sysbridge": {
"command": "sysbridge-mcp",
"args": ["--transport", "stdio", "--config", "~/.config/sysbridge/config.yaml"]
}
}
}
Start the server in dual mode with a Bearer token:
export SYSBRIDGE_TOKEN="your-secret-token"
sysbridge-mcp --transport dual --listen 0.0.0.0:8787
Connect n8n's MCP Client node to http://your-host:8787/sse or Streamable HTTP clients to http://your-host:8787/mcp with header Authorization: Bearer your-secret-token.
🛠️ MCP Tool Catalog (14 Unified Tools)
Instead of exposing 50 granular shell wrappers that bloat the model's context window, sysbridge-mcp provides 14 high-density tools that work identically across local mounts, SFTP, and raw SSH streams:
| Tool Name | Category | Description |
|---|---|---|
peer_list |
Mesh & Peers | List configured and discovered peers, IP resolution stage, active VFS backend (sftp-vfs / ssh-stream), and RTT latency. |
peer_connect |
Mesh & Peers | Probe connectivity, switch the active default peer, or register a new SSH/VPS host at runtime without restarting. |
peer_provision |
Mesh & Peers | Audit remote capabilities or opt-in provision rootless systemd --user mesh beacons and pam_ssh_agent_auth sudo rules. |
fs_read |
Virtual FS | Read remote files with line numbers, offset/limit pagination, or base64 encoding for binary/image assets. |
fs_write |
Virtual FS | Atomic remote file write via temp-file + fsync + POSIX rename while preserving file mode bits. |
fs_edit |
Virtual FS | Surgical exact-block replacement (old_string -> new_string, single or replace_all) returning a unified diff. |
fs_multi_edit |
Virtual FS | Apply multiple sequential surgical edits to a remote file in one atomic SFTP/stream transaction. |
fs_search |
Virtual FS | Fast remote file pattern matching (glob) and content regex search (grep via rg/grep or SFTP walk). |
fs_ops |
Virtual FS | Unified filesystem operations: ls, tree, stat, mkdir, mv, cp, chmod, rm (with confirmation guard), and sha256. |
exec_run |
Compute & Shell | Run commands over warm SSH channels with custom cwd, env, sudo, and automatic >5s detachment into tmux or nohup. |
task_control |
Compute & Shell | Inspect or control detached background jobs: list, status, tail, send_keys, and kill. |
mosh_control |
Roaming UDP | Spawn mosh-server on the remote host, verify UDP port reachability (60000:61000), and return MOSH_KEY session details. |
tunnel_manage |
Networking | Create, list, and remove persistent or RAM-only local (-L) and reverse (-R) port tunnels in pure Go. |
sync_transfer |
File Sync | SFTP push/pull transfers, one-shot rsync delta directory sync, and live background directory watchers. |
sys_bridge |
OS & Desktop | Single-call hardware/OS telemetry, systemctl service control, Wayland (swaymsg/grim) & Android (adb) screen capture, clipboard sync, and alerts. |
🔐 Cryptographic Sudo Bridge (pam_ssh_agent_auth)
By default, every peer starts with sudo.mode: "disabled". The agent runs strictly inside the non-root SSH user's permissions.
If you want your agent to perform system administration on your workstation or VPS without putting a sudo password in config files and without setting NOPASSWD: ALL in /etc/sudoers:
- Enable
pam_ssh_agent_authon the remote Linux host (you can ask the agent to runpeer_provisionwithaction: "setup_pam_ssh_sudo"to generate or apply the exact config):# /etc/sudoers.d/sysbridge-agent Defaults env_keep += "SSH_AUTH_SOCK" # /etc/pam.d/sudo (top line) auth sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys - Set
sudo.mode: "agent_forward"for that peer in~/.config/sysbridge/config.yaml. - When a tool call passes
sudo: true,sysbridge-mcpattaches your localSSH_AUTH_SOCKagent channel to that SSH session.sudoverifies a cryptographic signature from your SSH private key. Anyone typingsudoon the physical laptop keyboard still has to type the normal password.
📦 Using as a Go Library
All core engines live in importable pkg/* packages so you can embed sysbridge-mcp into your own Go agents or orchestrators:
package main
import (
"context"
"fmt"
"github.com/0xOpCode/sysbridge-mcp/internal/config"
"github.com/0xOpCode/sysbridge-mcp/pkg/safety"
"github.com/0xOpCode/sysbridge-mcp/pkg/transport"
"github.com/0xOpCode/sysbridge-mcp/pkg/vfs"
)
func main() {
cfg := config.DefaultConfig()
guard := safety.NewGuard(cfg.Safety.BlockedDevices, cfg.Safety.BlockedPaths, true)
pool := transport.NewPool(cfg, guard, nil)
defer pool.Close()
fsEngine := vfs.NewEngine(pool)
res, err := fsEngine.ReadFile(context.Background(), "laptop", "/etc/hostname", 1, 10)
if err != nil {
panic(err)
}
fmt.Printf("Read via %s: %s\n", res.Backend, res.Content)
}
🧭 Standalone CLI Subcommands
Alongside running as an MCP server, sysbridge-mcp includes direct CLI subcommands that replace legacy buddy-link and ssh-laptop scripts:
sysbridge-mcp serve [--transport stdio|http|sse|dual|unix] [--listen :8787]
sysbridge-mcp daemon [--port 42424] # Run background UDP P2P mesh discovery & tunnel supervisor
sysbridge-mcp status [peer] # Show peer link status, IP, VFS tier, and telemetry
sysbridge-mcp ip [peer] # Output raw resolved peer IP for shell scripts
sysbridge-mcp exec [-d] [-peer name] <cmd> # Run command on peer (auto-detaches in tmux/nohup with -d)
sysbridge-mcp send [-peer name] <file> # Push file via SFTP/SCP to peer Downloads directory
sysbridge-mcp tunnel <add|list|remove> # Manage persistent and RAM-only SSH port tunnels
sysbridge-mcp keygen # Generate a new 256-bit hex HMAC mesh secret key
sysbridge-mcp version # Print version and build metadata
📄 License
Released under the MIT License. Built by Akash Deep (@0xOpCode).
Questions sur sysbridge MCP
Dois-je installer un logiciel sur la machine distante ?
Non, le mode Zero-Install Remote Default fonctionne avec n'importe quel serveur SSH standard sans nécessiter de logiciel supplémentaire sur l'hôte cible.
Comment le serveur gère-t-il les connexions internet instables ?
Les commandes qui s'exécutent pendant plus de 5 secondes sont automatiquement détachées dans une session tmux distante, ce qui permet aux processus de se terminer même si la connexion est interrompue.
Puis-je utiliser sudo sans exposer mon mot de passe ?
Oui, vous pouvez activer le sudo cryptographique sans mot de passe en transférant votre socket SSH agent, ce qui permet à la pile PAM distante de vérifier votre identité via une signature.
Quels protocoles de transport sont pris en charge ?
Le serveur prend en charge stdio, Streamable HTTP, SSE, le mode dual HTTP et les Unix Domain Sockets.