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
¿Usas
mcp-agent-bridge? Ese es el nombre anterior de este proyecto y ya no recibe actualizaciones. Cambia connpm uninstall -g mcp-agent-bridge && npm install -g swarmcode-mcp, y luego vuelve a ejecutarswarmcode-mcp init <workspace>. Mismo Redis, mismo protocolo; las herramientas ahora sonswarm_*en lugar debridge_*. 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 Desktop | SwarmCode | |
|---|---|---|
| Comunicación entre máquinas | No | Sí |
| Coordinación multi-espacio de trabajo | No — cada ventana aislada | Sí — los agentes se comunican entre sí |
| Notificaciones push en tiempo real | No | Sí |
| Compartir artefactos/esquemas | No | Sí |
| Panel web | No | Sí |
| Funciona en VS Code | No | Sí |
| Multiplataforma | Solo Mac | Mac, Windows, Linux |
| Código abierto | No | Sí (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
| Herramienta | Descripción |
|---|---|
swarm_send | Envía un mensaje a un espacio de trabajo o transmite (to: "*") |
swarm_receive | Lee y marca los mensajes pendientes como leídos |
swarm_status | Ve todos los espacios de trabajo registrados |
swarm_register | Registra/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
| Variable | Predeterminado | Descripción |
|---|---|---|
SWARMCODE_REDIS_URL | redis://localhost:6379 | Conexión Redis |
SWARMCODE_WORKSPACE_ID | (desde .mcp.json) | Identificador del espacio de trabajo |
DASHBOARD_USER | admin | Usuario del panel |
DASHBOARD_PASS | bridge | Contraseña del panel |
DASHBOARD_PORT | 4200 | Puerto 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
- Model Context Protocol (MCP) — interfaz de herramientas
- Redis — pub/sub + almacenamiento de mensajes
- ioredis — cliente Redis
- Claude Code — los agentes
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_register | swarm_send / swarm_receive / swarm_register |
AGENT_BRIDGE_REDIS_URL | SWARMCODE_REDIS_URL |
AGENT_BRIDGE_WORKSPACE_ID | SWARMCODE_WORKSPACE_ID |
binario mcp-agent-bridge | binario 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