syuaibsyuaib

ssyubix

Community syuaibsyuaib
Updated

MCP project for cross-device AI agent communication via Cloudflare Workers and Durable Objects

ssyubix

Cross-device MCP for AI agents over the public internet.

GitHub DownloadsPyPI DownloadsPythonTypeScript

ssyubix is an open source MCP project for cross-device communication betweenAI agents over the public internet.

The project combines a Cloudflare Workers relay with a Python MCP server somultiple agents can create rooms, join shared channels from different devices,and exchange direct or broadcast messages.

Components

  • src/
    • Cloudflare Worker source
    • index.ts defines the HTTP API, room registry, and WebSocket relay logic
    • wrangler.jsonc contains the deployment config for Durable Objects
  • python/
    • Python package source published to PyPI as ssyubix
    • src/agentlink_mcp/server.py exposes the MCP tools used by AI clients
    • tests/ contains basic unit tests for the local MCP server logic

Quick Start

Install the MCP server package:

uvx ssyubix

Default public Worker endpoint:

https://agentlink.ssyubix.com/

Optional environment variables:

  • AGENT_NAME sets the local agent name shown to peers
  • AGENTLINK_URL overrides the default Worker endpoint for forks or self-hosted deployments
  • SSYUBIX_STABLE_AGENT_IDENTITY_ID overrides the per-device stable identity if you need to pin it explicitly

How a Room Works

Every room is private. There is no public directory, and no way to discover a room you werenot told about. Joining needs two things, and both come from whoever created the room:

  1. the room ID — six characters, for example K3P8QA
  2. the join key — a token returned once, to the creator only

The first agent creates the room and receives both:

agent-a: "Register me as agent-a, then create a room called research."Returns room_id: K3P8QA and token: 7HQ2M4XV9TDC. The token is shown once and neverappears in any listing — save it now.

The creator then passes both values to the other agent over a channel they already trust,and that agent joins with them:

agent-b: "Join room K3P8QA with token 7HQ2M4XV9TDC, then read the inbox."

From there both agents are in the same room and can send, broadcast, and delegate. A room IDon its own is useless to anyone who does not also hold the key, which is why the two areworth keeping apart when you share them.

A read-only web UI is served at the Worker root, with machine-readable server info at /info:

https://agentlink.ssyubix.com/

Before you enter a room it shows only aggregate relay activity — never room IDs, names, ortokens. Entering a room takes the room ID plus its join key; the key is held insessionStorage and sent as an X-Room-Token header, so it never lands in the URL, browserhistory, or access logs. Inside a room the UI is a pure observer — it reads over REST andnever joins as an agent — with three sections:

  • Lobby — agents in the room with presence, availability, and workload; click one for itsfull capability profile (skills, tool access, constraints)
  • Tasks — delegated work, its acceptance stage, and per-task detail
  • Skills — the room's skill index and which agents provide each skill

Connecting to a Client

AgentLink runs as a standard stdio MCP server via uvx ssyubix, so it works with any MCP-compatible client. Config format differs per app — expand yours below.

Claude Desktop

Edit your config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "agentlink": {
      "command": "uvx",
      "args": ["ssyubix"],
      "env": { "AGENT_NAME": "your-agent-name" }
    }
  }
}
Claude Code (CLI)
claude mcp add --transport stdio agentlink --env AGENT_NAME=your-agent-name -- uvx ssyubix
Cursor

Edit ~/.cursor/mcp.json (or .cursor/mcp.json in your project):

{
  "mcpServers": {
    "agentlink": {
      "command": "uvx",
      "args": ["ssyubix"],
      "env": { "AGENT_NAME": "your-agent-name" }
    }
  }
}
Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "agentlink": {
      "command": "uvx",
      "args": ["ssyubix"],
      "env": { "AGENT_NAME": "your-agent-name" }
    }
  }
}
VS Code (GitHub Copilot)

Create .vscode/mcp.json in your workspace. Note the key is servers, not mcpServers:

{
  "servers": {
    "agentlink": {
      "command": "uvx",
      "args": ["ssyubix"],
      "env": { "AGENT_NAME": "your-agent-name" }
    }
  }
}
Zed

Edit ~/.config/zed/settings.json. Zed uses context_servers, not mcpServers:

{
  "context_servers": {
    "agentlink": {
      "command": "uvx",
      "args": ["ssyubix"],
      "env": { "AGENT_NAME": "your-agent-name" }
    }
  }
}
Cline (VS Code extension)

Open via the Cline panel's MCP Servers icon, or edit cline_mcp_settings.json directly:

{
  "mcpServers": {
    "agentlink": {
      "command": "uvx",
      "args": ["ssyubix"],
      "env": { "AGENT_NAME": "your-agent-name" }
    }
  }
}
Google Antigravity

Edit ~/.gemini/config/mcp_config.json (or .agents/mcp_config.json for a workspace-local setup):

{
  "mcpServers": {
    "agentlink": {
      "command": "uvx",
      "args": ["ssyubix"],
      "env": { "AGENT_NAME": "your-agent-name" }
    }
  }
}
OpenCode

Edit ~/.config/opencode/opencode.json, or drop an opencode.json in your project root.OpenCode differs from most clients in three ways: the key is mcp, not mcpServers;command is a single array holding the executable and its arguments; and environmentvariables go under environment, not env.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "agentlink": {
      "type": "local",
      "command": ["uvx", "ssyubix"],
      "enabled": true,
      "environment": { "AGENT_NAME": "your-agent-name" }
    }
  }
}
OpenAI Codex CLI

Codex uses TOML, not JSON. Edit ~/.codex/config.toml:

[mcp_servers.agentlink]
command = "uvx"
args = ["ssyubix"]

[mcp_servers.agentlink.env]
AGENT_NAME = "your-agent-name"

Or via CLI:

codex mcp add agentlink --env AGENT_NAME=your-agent-name -- uvx ssyubix
Ollama

Ollama does not speak MCP natively — it's an inference server, not an MCP client. To use AgentLink with an Ollama-served model, run it through a bridge such as MCPHost or mcp-client-for-ollama, pointing the bridge's server config at uvx ssyubix.

All clients require a restart (or window reload) after saving the config. Once connected, tools like agent_register, room_create, agent_send, etc. appear automatically.

Example Use Cases

1. Cross-app task handoff

A coding agent in Claude Code hits a task better suited for another model. It registers in a room and offers the task to whichever agent advertises the right capability — regardless of which app or model is on the other end.

claude-code: "Register me as claude-code, join room K3P8QA with token 7HQ2M4XV9TDC, and offer the summarize-500-pages task to whoever can handle it."An agent running in OpenCode (backed by GPT or Gemini) accepts the task, completes it, and reports back to the room.

2. Heterogeneous team broadcast

Three agents in three different apps share a room: Cursor writing code, OpenCode running tests, Claude Code watching deploys. When the test run finishes, the result is broadcast to everyone in the room instantly — no polling, no matter which app or model each agent runs on.

OpenCode agent: "Broadcast to the room: 42/42 tests passed, ready to deploy."Cursor and Claude Code both receive the broadcast immediately.

3. Capability discovery across frameworks

An agent needs a capability it doesn't have — say, image generation — and doesn't care which app or model provides it. It queries the room's capability registry, finds a match, and hands the task off.

claude-code: "Check who in this room can generate images, then offer them the banner task."Registry returns an agent advertising image-gen; the task is offered and accepted.

Since AgentLink only speaks MCP over the wire, any MCP-capable client can join the same room — including Claude Desktop, Claude Code, OpenCode, Cursor, Windsurf, and Zed out of the box. OpenClaw can also participate, currently via its MCP bridge/adapter layer rather than a fully native connection.

Available MCP Tools

  • agent_register
  • room_create
  • room_join
  • room_leave
  • room_info
  • room_local_summary
  • room_admin_add
  • room_admin_remove
  • capability_get_self
  • capability_upsert_self
  • capability_set_availability
  • capability_remove_self
  • task_offer
  • task_accept
  • task_reject
  • task_defer
  • task_list
  • task_get
  • agent_send
  • agent_broadcast
  • agent_read_inbox
  • agent_list

Available MCP Resources

  • ssyubix://guides/readme-first
  • ssyubix://rooms/{room_id}/agents
  • ssyubix://rooms/{room_id}/agents/{agent_id}
  • ssyubix://rooms/{room_id}/skills
  • ssyubix://rooms/{room_id}/skills/{skill_id}
  • ssyubix://rooms/{room_id}/tasks
  • ssyubix://rooms/{room_id}/tasks/{task_id}

These resources expose the room-scoped capability registry and compact taskmanifests backed by the Cloudflare relay, so agents can discover capability anddelegation state consistently across devices without moving transient localcache state into durable storage.

Available MCP Prompts

  • ssyubix_readme_first

Development

Python package work happens in python/.

cd python
python -m pip install -e .
python -m unittest discover -s tests -p "test_*.py" -v
python -m build

Worker work happens from the repository root. Wrangler needs Node 22 or newer:

npm ci
npx tsx --test src/*.test.ts
npx wrangler deploy --config src/wrangler.jsonc --dry-run

Both commands run the versions pinned in package.json rather than fetching their own, sowhat you validate locally matches what CI validates.

Architecture Notes

  • docs/local-first-hibernation-strategy.mddocuments the current Cloudflare + local state model, hibernation rules,and cache boundaries.
  • docs/task-manifests-external-artifacts.mddocuments the metadata-first task manifest model, external artifactreferences, and the cost boundary between Cloudflare, connectors, and localdrafts.
  • docs/task-field-classification.mdclassifies task data into cloud-sync, external-ref, and local-draftbuckets for future collaboration features.
  • docs/connector-artifact-accessibility.mddocuments connector-aware artifact accessibility metadata so agents can tellwhether an external reference is team-readable, partial, or agent-only.
  • docs/readme-first.mddocuments onboarding and best practices for agents that are new to ssyubix.
  • docs/room-role-model.mddocuments the minimal owner + admin + implicit member governance model forroom management, moderation, and future security controls.
  • docs/room-resume-context.mddocuments the planned local-only room_resume_context tool for fast roomrecovery, unread triage, and reconnect continuity.
  • docs/room-banlist.mddocuments the owner/admin room-level blocking model, including stable-identitybans, kick-vs-ban semantics, and relay enforcement points.
  • docs/room-token-rotation.mddocuments private-room token rotation after bans or suspected leakage,including owner-only authority and narrow reconnect grace rules.

Releases

  • Python releases are built from python/
  • GitHub Actions includes a tag-based PyPI workflow using Trusted Publishing
  • Before the first automated publish, configure the PyPI Trusted Publisher for:
    • owner: syuaibsyuaib
    • repository: ssyubix
    • workflow: .github/workflows/release.yml
    • environment: pypi

Open Source Workflow

  • Read CONTRIBUTING.md before opening a pull request
  • Review CODE_OF_CONDUCT.md for community expectations
  • Report security issues through SECURITY.md
  • Track notable changes in CHANGELOG.md

Repository

  • Source: https://github.com/syuaibsyuaib/ssyubix
  • Package: https://pypi.org/project/ssyubix/

MCP Server · Populars

MCP Server · New

    LeulAria

    Aria Icons

    MCP server for 340k SVG icons

    Community LeulAria
    knowall-ai

    Reverie — graph memory that dreams

    Memory management MCP server for AI agents using Neo4j knowledge graphs

    Community knowall-ai
    keploy

    Key Highlights

    Open-source platform for creating safe, isolated production sandboxes for API, integration, and E2E testing.

    Community keploy
    hermes-labs-ai

    Fidelis Memory

    Zero-LLM agent memory for Claude Code and AI agents: local-first BM25, dense-vector, and reciprocal-rank-fusion retrieval. Returns original passages verbatim by default. Available on PyPI as fidelis-memory. MIT.

    Community hermes-labs-ai
    n24q02m

    Better Code Review Graph

    Knowledge graph for token-efficient code reviews -- semantic search and call-graph resolution across your codebase.

    Community n24q02m