sysbridge MCP server
2026년 10월 17일 커밋SSH 및 SFTP를 통해 Linux, macOS 또는 Android 노드에 대한 네이티브 파일 시스템, 셸 및 원격 데스크톱 제어 기능을 AI agent에게 제공합니다.
다른 이름 0xOpCode/sysbridge-mcp
- 스타
- 1
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 10월 17일
- 라이선스
- MIT
sysbridge MCP란?
sysbridge은(는) MCP server입니다. SSH 및 SFTP를 통해 Linux, macOS 또는 Android 노드에 대한 네이티브 파일 시스템, 셸 및 원격 데스크톱 제어 기능을 AI agent에게 제공합니다.
프로젝트 README에서 생성된 요약
sysbridge MCP server 정보
sysbridge-mcp는 AI agent에게 원격 Linux, macOS 또는 Android 노드에 대한 네이티브 제어 권한을 부여합니다. 개발자는 대상 머신에 별도의 소프트웨어를 설치하지 않고도 SSH 및 SFTP를 통해 agent에게 파일 시스템 액세스, 셸 실행 및 원격 데스크톱 기능을 부여할 수 있습니다. 이를 통해 Claude Desktop 또는 Cursor와 같은 로컬 클라이언트에서 클라우드 VPS, 원격 워크스테이션 또는 Android Termux 환경을 관리하기에 매우 적합합니다.
이 서버는 표준 sshd와 함께 작동하는 zero-install SSH 모드와 IP 주소가 변경되는 장치를 위한 전체 P2P mesh를 포함한 여러 모드로 작동합니다. 또한 인메모리 Go SFTP 서브시스템을 사용하여 원자적 쓰기(atomic writes) 및 멀티 헝크 편집(multi-hunk edits)을 수행하는 3계층 가상 파일 시스템을 특징으로 합니다. 장시간 실행되는 작업의 경우, 네트워크 로밍 중 오류를 방지하기 위해 시스템이 명령을 tmux 세션으로 자동 분리합니다. 사용자는 또한 pam_ssh_agent_auth를 사용하여 암호화된 비밀번호 없는 sudo를 선택할 수 있으며, 이를 통해 평문 비밀번호 대신 SSH agent forwarding을 통해 root 권한을 부여할 수 있습니다.
활용 사례
- 1원격 클라우드 서버 관리AI agent는 표준 SSH 자격 증명만을 사용하여 새로운 Ubuntu 또는 Debian VPS에서 파일 작업 및 명령 실행을 수행할 수 있습니다.
- 2장시간 실행되는 빌드 유지 관리개발자는 Wi-Fi 연결이 끊어지거나 IP 주소가 변경되더라도 계속 실행되는 무거운 컴파일 작업을 수행할 수 있습니다.
- 3안전한 권한 상승평문 sudo 비밀번호를 노출하지 않고도 AI agent에게 시스템 서비스를 관리할 수 있는 root 권한을 부여합니다.
- 4모바일 및 데스크톱 노드 연결Termux가 실행 중인 휴대폰을 사용하여 지연 시간이 없는 peer discovery mesh를 통해 노트북을 제어합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
구성
CGO_ENABLEDSYSBRIDGE_TOKEN
| 이름 | 설명 | 유형 |
|---|---|---|
| CGO_ENABLED | — | |
| SYSBRIDGE_TOKEN | — |
자동 검사
2026년 11월 15일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능0xopcode/sysbridge-mcp is public and reachablegithub.com/0xopcode/sysbridge-mcp ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-10-17github.com/0xopcode/sysbridge-mcp ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기Give 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).
sysbridge MCP 질문
원격 머신에 소프트웨어를 설치해야 하나요?
아니요, Zero-Install Remote Default 모드는 대상 호스트에 추가 소프트웨어를 설치할 필요 없이 모든 표준 SSH 서버와 함께 작동합니다.
인터넷 연결이 불안정할 경우 서버는 어떻게 처리하나요?
5초 이상 실행되는 명령은 자동으로 원격 tmux 세션으로 분리되어, 연결이 끊어지더라도 프로세스가 끝까지 완료될 수 있도록 합니다.
비밀번호를 노출하지 않고 sudo를 사용할 수 있나요?
네, SSH agent socket을 포워딩하여 암호화된 비밀번호 없는 sudo를 활성화할 수 있습니다. 이를 통해 원격 PAM 스택이 서명을 통해 사용자의 신원을 검증할 수 있습니다.
지원되는 전송 프로토콜은 무엇인가요?
이 서버는 stdio, streamable HTTP, SSE, dual HTTP 모드 및 Unix Domain Sockets를 지원합니다.