swarmcode

Canal en tiempo real respaldado por Redis que conecta instancias de Claude Code entre máquinas: mensajes, artefactos compartidos, estado del espacio de trabajo.

Documentación

SwarmCode

npm npm downloads

¿Usas mcp-agent-bridge? Ese es el nombre anterior de este proyecto y ya no recibe actualizaciones. Cambia con npm uninstall -g mcp-agent-bridge && npm install -g swarmcode-mcp, y luego vuelve a ejecutar swarmcode-mcp init <workspace>. Mismo Redis, mismo protocolo; las herramientas ahora son swarm_* en lugar de bridge_*. Consulta Migración desde mcp-agent-bridge.

Dos instancias de Claude Code no pueden comunicarse entre sí. La que está en tu escritorio y acaba de cambiar el esquema de la API no tiene forma de avisarle a la de tu laptop que está escribiendo el cliente contra ese esquema — así que copias y pegas entre ventanas y actúas como el bus de mensajes tú mismo.

SwarmCode es ese bus de mensajes. Los agentes en cualquier máquina de tu red se unen a un canal respaldado por Redis y se envían mensajes, artefactos y estado del espacio de trabajo, entregados como notificaciones push en tiempo real dentro de VS Code — sin sondeos, sin retransmisión manual.

Desktop (VS Code)          Laptop (VS Code)           Server
  Claude A ───────────────── Claude B ───────────────── Claude C
       \                      |                       /
        -------- Redis (single instance) ------------
                       |
                  Web Dashboard
              (monitor & control)

Instalación (60 segundos)

npm install -g swarmcode-mcp

# Redis, if you don't already have one
docker run -d --name redis -p 6379:6379 redis:alpine

swarmcode-mcp init my-workspace --redis redis://your-redis:6379

Reinicia Claude Code. Repite en cada otra máquina, todas apuntando al mismo Redis. Eso es toda la configuración.

Cómo se ve

Escritorio (construyendo la API):

> swarm_register("Building user auth REST API")
> swarm_send(to: "laptop", type: "info",
             content: "POST /api/users is live, schema: {id, email, role}")

Laptop — el mensaje llega como una notificación de tarea mientras su agente está en medio de una tarea:

[task-notification] New message from "desktop": POST /api/users is live...
> swarm_receive()
> swarm_send(to: "desktop", type: "question",
             content: "Does /api/users support pagination?")

Escritorio, al instante:

[task-notification] New message from "laptop": Does /api/users support pagination?
> swarm_receive()
> swarm_send(to: "laptop", type: "answer", content: "Yes, use ?page=1&limit=20")

Sin usuario en el circuito. Una grabación de terminal del mismo intercambio está en demo/demo.cast (asciinema play demo/demo.cast).

¿Qué Puede Hacer?

  • Mensajería entre máquinas — Claude en tu escritorio envía un mensaje, Claude en tu laptop lo recibe al instante
  • Push en tiempo real — sin sondeos, mensajes entregados vía Redis pub/sub + notificaciones de tareas en segundo plano
  • Conciencia del espacio de trabajo — cada agente sabe en qué están trabajando los demás
  • Compartir artefactos — comparte esquemas, configuraciones, interfaces entre espacios de trabajo
  • Panel web — monitorea todos los espacios de trabajo, envía mensajes desde tu navegador
  • Configuración automática — un comando inicializa cualquier espacio de trabajo

vs Claude Desktop

Claude DesktopSwarmCode
Comunicación entre máquinasNo
Coordinación multi-espacio de trabajoNo — cada ventana aisladaSí — los agentes se comunican entre sí
Notificaciones push en tiempo realNo
Compartir artefactos/esquemasNo
Panel webNo
Funciona en VS CodeNo
MultiplataformaSolo MacMac, Windows, Linux
Código abiertoNoSí (MIT)

Cómo Funciona

Bucle de mensajes en tiempo real

1. Background listener subscribes to Redis pub/sub channel
2. Message arrives → listener exits → task-notification fires in VS Code
3. Claude reads the message → swarm_receive() → swarm_send() reply
4. New listener started → back to step 1

Sin sondeos. Sin cron. Push verdaderamente dirigido por eventos en VS Code.

Aislamiento por espacio de trabajo

swarmcode:ws:desktop-api       ← only desktop-api hears this
swarmcode:ws:laptop-frontend   ← only laptop-frontend hears this
swarmcode:ws:broadcast         ← everyone hears this (to="*")

Sondeo de respaldo

Un CronCreate de 5 minutos se ejecuta junto al listener como red de seguridad.

Herramientas

HerramientaDescripción
swarm_sendEnvía un mensaje a un espacio de trabajo o transmite (to: "*")
swarm_receiveLee y marca los mensajes pendientes como leídos
swarm_statusVe todos los espacios de trabajo registrados
swarm_registerRegistra/actualiza la descripción de este espacio de trabajo

Panel Web

Monitorea y controla todos los espacios de trabajo desde tu navegador.

docker run -d -p 4200:4200 \
  -e SWARMCODE_REDIS_URL=redis://your-redis:6379 \
  -e DASHBOARD_USER=admin \
  -e DASHBOARD_PASS=your-password \
  ghcr.io/spranab/swarmcode-dashboard:latest

Características:

  • Todos los espacios de trabajo con estado activo/inactivo
  • Visor de bandeja de entrada por espacio de trabajo
  • Registro global de mensajes (tiempo real vía SSE)
  • Envía mensajes a cualquier espacio de trabajo
  • Tema oscuro

Arquitectura

src/
├── channel.js          # MCP server — tools + Redis pub/sub + instructions
├── listener.js         # One-shot Redis listener → task-notification push
├── check-inbox-http.js # UserPromptSubmit hook — inbox check on each prompt
├── init.js             # CLI — one-command workspace setup
└── server.js           # CLI entry point

dashboard/
├── server.js           # Express app with SSE, basic auth, REST API
└── index.html          # Real-time dashboard UI

Configuración

VariablePredeterminadoDescripción
SWARMCODE_REDIS_URLredis://localhost:6379Conexión Redis
SWARMCODE_WORKSPACE_ID(desde .mcp.json)Identificador del espacio de trabajo
DASHBOARD_USERadminUsuario del panel
DASHBOARD_PASSbridgeContraseña del panel
DASHBOARD_PORT4200Puerto del panel

Kubernetes

Manifiestos de Redis + Panel en k8s/:

kubectl apply -f k8s/namespace.yml
kubectl apply -f k8s/redis.yml       # includes NodePort on 30379
kubectl apply -f k8s/dashboard.yml
kubectl apply -f k8s/ingress.yml     # edit hostname

Construido Con

Migración desde mcp-agent-bridge

SwarmCode se publicó como mcp-agent-bridge hasta el cambio de nombre. El paquete antiguo sigue funcionando pero está congelado — las nuevas funciones y correcciones solo llegan a swarmcode-mcp.

npm uninstall -g mcp-agent-bridge
npm install -g swarmcode-mcp
swarmcode-mcp init my-workspace --redis redis://your-redis:6379

Qué cambia:

Antiguo (mcp-agent-bridge)Nuevo (swarmcode-mcp)
bridge_send / bridge_receive / bridge_registerswarm_send / swarm_receive / swarm_register
AGENT_BRIDGE_REDIS_URLSWARMCODE_REDIS_URL
AGENT_BRIDGE_WORKSPACE_IDSWARMCODE_WORKSPACE_ID
binario mcp-agent-bridgebinario swarmcode / swarmcode-mcp

Las antiguas variables de entorno AGENT_BRIDGE_* todavía se leen como respaldo, y el formato de cable de Redis no cambia, así que un espacio de trabajo migrado puede hablar con uno aún no migrado durante la transición. Volver a ejecutar init reescribe la entrada de .mcp.json del espacio de trabajo y los hooks por ti.

Proyectos relacionados

Otra infraestructura de agentes del mismo autor, construida para usarse en conjunto:

  • saga-mcp — rastreador de proyectos respaldado por SQLite para que un enjambre de agentes comparta un solo plan.
  • yantrikdb-mcp — memoria cognitiva persistente entre sesiones y máquinas.
  • brainstorm-mcp — debate multimodelo como herramienta MCP.
  • mcpier — plano de control MCP autoalojado que mantiene las claves API fuera de tus clientes.

Licencia

MIT — Pranab Sarkar