swarmcode
Canal em tempo real com suporte a Redis conectando instâncias do Claude Code entre máquinas - mensagens, artefatos compartilhados, status do workspace.
Documentação
SwarmCode
Usando
mcp-agent-bridge? Esse é o nome antigo deste projeto e ele não recebe mais atualizações. Migre comnpm uninstall -g mcp-agent-bridge && npm install -g swarmcode-mcp, depois execute novamenteswarmcode-mcp init <workspace>. Mesmo Redis, mesmo protocolo; as ferramentas agora sãoswarm_*em vez debridge_*. Veja Migrando do mcp-agent-bridge.
Duas instâncias do Claude Code não conseguem conversar entre si. A que está no seu desktop e acabou de mudar o schema da API não tem como avisar a que está no seu laptop e está escrevendo o cliente contra ela — então você copia e cola entre janelas e age como o barramento de mensagens você mesmo.
SwarmCode é esse barramento de mensagens. Agentes em qualquer máquina da sua rede entram em um canal baseado em Redis e enviam mensagens, artefatos e status do workspace uns aos outros, entregues como push em tempo real no VS Code — sem polling, sem retransmissão manual.
Desktop (VS Code) Laptop (VS Code) Server
Claude A ───────────────── Claude B ───────────────── Claude C
\ | /
-------- Redis (single instance) ------------
|
Web Dashboard
(monitor & control)
Instalação (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
Reinicie o Claude Code. Repita em todas as outras máquinas, todas apontando para o mesmo Redis. Essa é toda a configuração.
Como fica na prática
Desktop (construindo a 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 — a mensagem chega como uma notificação de tarefa enquanto o agente está no meio de uma tarefa:
[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?")
Desktop, instantaneamente:
[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")
Nenhum usuário no meio do caminho. Uma gravação de terminal da mesma troca está em
demo/demo.cast (asciinema play demo/demo.cast).
O Que Ele Pode Fazer?
- Mensagens entre máquinas — Claude no seu desktop envia uma mensagem, Claude no seu laptop a recebe instantaneamente
- Push em tempo real — sem polling, mensagens entregues via Redis pub/sub + notificações de tarefas em segundo plano
- Consciência do workspace — cada agente sabe no que os outros estão trabalhando
- Compartilhamento de artefatos — compartilhe schemas, configurações, interfaces entre workspaces
- Painel web — monitore todos os workspaces, envie mensagens do seu navegador
- Configuração automática — um comando inicializa qualquer workspace
vs Claude Desktop
| Claude Desktop | SwarmCode | |
|---|---|---|
| Comunicação entre máquinas | Não | Sim |
| Coordenação multi-workspace | Não — cada janela é isolada | Sim — agentes conversam entre si |
| Notificações push em tempo real | Não | Sim |
| Compartilhamento de artefatos/schemas | Não | Sim |
| Painel web | Não | Sim |
| Funciona no VS Code | Não | Sim |
| Multiplataforma | Somente Mac | Mac, Windows, Linux |
| Código aberto | Não | Sim (MIT) |
Como Funciona
Loop de mensagens em tempo 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
Sem polling. Sem cron. Push verdadeiro orientado a eventos no VS Code.
Isolamento por workspace
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="*")
Polling de backup
Um CronCreate de 5 minutos roda junto com o listener como rede de segurança.
Ferramentas
| Ferramenta | Descrição |
|---|---|
swarm_send | Envia uma mensagem para um workspace ou faz broadcast (to: "*") |
swarm_receive | Lê e marca mensagens pendentes como lidas |
swarm_status | Vê todos os workspaces registrados |
swarm_register | Registra/atualiza a descrição deste workspace |
Painel Web
Monitore e controle todos os workspaces do seu 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
Recursos:
- Todos os workspaces com status ativo/ocioso
- Visualizador de caixa de entrada por workspace
- Log global de mensagens (tempo real via SSE)
- Envie mensagens para qualquer workspace
- Tema escuro
Arquitetura
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
Configuração
| Variável | Padrão | Descrição |
|---|---|---|
SWARMCODE_REDIS_URL | redis://localhost:6379 | Conexão Redis |
SWARMCODE_WORKSPACE_ID | (do .mcp.json) | Identificador do workspace |
DASHBOARD_USER | admin | Usuário do painel |
DASHBOARD_PASS | bridge | Senha do painel |
DASHBOARD_PORT | 4200 | Porta do painel |
Kubernetes
Manifestos de Redis + Painel em 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
Construído Com
- Model Context Protocol (MCP) — interface de ferramentas
- Redis — pub/sub + armazenamento de mensagens
- ioredis — cliente Redis
- Claude Code — os agentes
Migrando do mcp-agent-bridge
SwarmCode foi publicado como mcp-agent-bridge até a renomeação. O pacote
antigo ainda funciona, mas está congelado — novos recursos e correções só chegam
no swarmcode-mcp.
npm uninstall -g mcp-agent-bridge
npm install -g swarmcode-mcp
swarmcode-mcp init my-workspace --redis redis://your-redis:6379
O que muda:
Antigo (mcp-agent-bridge) | Novo (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 |
binário mcp-agent-bridge | binário swarmcode / swarmcode-mcp |
As variáveis de ambiente antigas AGENT_BRIDGE_* ainda são lidas como fallback,
e o formato de transmissão do Redis não mudou, então um workspace migrado pode conversar com
um que ainda não migrou durante a transição. Executar init novamente reescreve a
entrada .mcp.json do workspace e os hooks para você.
Projetos relacionados
Outra infraestrutura de agentes do mesmo autor, construída para ser usada em conjunto:
- saga-mcp — rastreador de projetos com SQLite para que um enxame de agentes compartilhe um único plano.
- yantrikdb-mcp — memória cognitiva persistente entre sessões e máquinas.
- brainstorm-mcp — debate multi-modelo como ferramenta MCP.
- mcpier — plano de controle MCP auto-hospedado que mantém chaves de API fora dos seus clientes.
Licença
MIT — Pranab Sarkar