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

npm npm downloads

Usando mcp-agent-bridge? Esse é o nome antigo deste projeto e ele não recebe mais atualizações. Migre com npm uninstall -g mcp-agent-bridge && npm install -g swarmcode-mcp, depois execute novamente swarmcode-mcp init <workspace>. Mesmo Redis, mesmo protocolo; as ferramentas agora são swarm_* em vez de bridge_*. 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 DesktopSwarmCode
Comunicação entre máquinasNãoSim
Coordenação multi-workspaceNão — cada janela é isoladaSim — agentes conversam entre si
Notificações push em tempo realNãoSim
Compartilhamento de artefatos/schemasNãoSim
Painel webNãoSim
Funciona no VS CodeNãoSim
MultiplataformaSomente MacMac, Windows, Linux
Código abertoNãoSim (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

FerramentaDescrição
swarm_sendEnvia uma mensagem para um workspace ou faz broadcast (to: "*")
swarm_receiveLê e marca mensagens pendentes como lidas
swarm_statusVê todos os workspaces registrados
swarm_registerRegistra/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ávelPadrãoDescrição
SWARMCODE_REDIS_URLredis://localhost:6379Conexão Redis
SWARMCODE_WORKSPACE_ID(do .mcp.json)Identificador do workspace
DASHBOARD_USERadminUsuário do painel
DASHBOARD_PASSbridgeSenha do painel
DASHBOARD_PORT4200Porta 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

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_registerswarm_send / swarm_receive / swarm_register
AGENT_BRIDGE_REDIS_URLSWARMCODE_REDIS_URL
AGENT_BRIDGE_WORKSPACE_IDSWARMCODE_WORKSPACE_ID
binário mcp-agent-bridgebiná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