Várias contas
Conecte cada número por QR code, como um aparelho conectado. A sessão continua entre aberturas.
ZapDesk é um app desktop open source para macOS que roda inteiro na sua máquina. Converse com várias contas, envie mensagens personalizadas para listas de leads, acompanhe negócios num Kanban — e deixe o Claude fazer isso por você com 69 ferramentas MCP.
Apple Silicon · macOS 14+ · ainda sem notarização — veja o Início rápido
// 01 — features
Um cliente de WhatsApp completo e as ferramentas para trabalhar uma lista de leads — tudo rodando no seu Mac.
Conecte cada número por QR code, como um aparelho conectado. A sessão continua entre aberturas.
Grupos, busca, mídia, áudio gravado, citações, reações, edição, figurinhas, etiquetas, notas e templates com /. Chamadas de voz e vídeo não são suportadas.
Variáveis {nome}, anexos, agendamento, janela de horário e intervalo sorteado com limites por hora e por dia. Relatório por destinatário, exportável em CSV.
Importe CSV/XLSX, cole números ou escolha contatos. Todo telefone vira E.164 e é deduplicado, com relatório de novos, já existentes e inválidos.
69 ferramentas deixam o Claude Code ou o Claude Desktop ler conversas, importar leads, criar disparos e mover negócios.
Quantos funis precisar, com etapas num quadro Kanban e o histórico de cada movimento.
Monte menus, perguntas e transferência para humano num editor visual de nós, ou fluxos gatilho → condição → ação. Teste num chat simulado.
Escreva uma automação como um pequeno projeto TypeScript, com a API ctx tipada e modelos Claude. Cada uma roda num processo próprio e restrito.
// 02 — tour
Como é um dia de trabalho no ZapDesk. Telas reais, dados fictícios.
Disparo
Escolha o intervalo, os limites por hora e por dia, as pausas e a janela de horário. Se o ritmo for agressivo, o app avisa; você decide.
Relatório
Enviada, entregue, lida, respondida ou com falha — por destinatário, ao vivo. Exporte tudo em CSV.
Funil
Arraste contatos entre etapas ou deixe uma automação mover por você.
// 03 — mcp
O ZapDesk vem com um servidor MCP. Adicione ao Claude Code ou ao Claude Desktop e o Claude opera o app com as mesmas ferramentas que você.
69
ferramentas em 10 grupos
listar_contasstatus_zapdeskimportar_leadslistar_leadslistar_conversasler_mensagensbuscar_mensagensenviar_mensagemreagir_mensagemeditar_mensagemapagar_mensagemmarcar_como_lidaver_statuslistar_contatosatualizar_contatolistar_etiquetascriar_etiquetaatualizar_etiquetaexcluir_etiquetalistar_templatescriar_templateatualizar_templateexcluir_templatecriar_disparolistar_disparosver_disparoiniciar_disparopausar_disparoretomar_disparocancelar_disparoexportar_relatoriolistar_funiscriar_funileditar_funilexcluir_etapaexcluir_funillistar_cards_funilmover_card_funilremover_card_funilhistorico_funilatualizar_leadlistar_automacoesver_automacaover_formatos_automacaocriar_automacaoeditar_automacaovalidar_automacaoexcluir_automacaoativar_automacaodesativar_automacaoexecutar_automacaotestar_automacaosimular_chatbotver_tipos_sdklistar_modelos_automacao_iacriar_automacao_ialistar_arquivos_automacaoler_arquivo_automacaoescrever_arquivo_automacaorenomear_arquivo_automacaoexcluir_arquivo_automacaocompilar_automacaolistar_execucoesver_execucaolistar_pausaspausar_conversaretomar_conversalistar_segredosver_configuracao_automacoesDisparos criados pelo MCP começam na hora, sem etapa de confirmação — revise o pedido antes de rodar.
// 04 — automations
Três jeitos de automatizar, do arrastar-e-soltar ao código.
Gatilho → condições → ações, inclusive esperas que sobrevivem a reinícios.
Editor visual de nós com menus, perguntas, condições e transferência para humano.
Um projeto TypeScript por automação, com o SDK ctx tipado e modelos Claude.
Modelo real que vem com o app: motor/
import { definirAutomacao } from '@zapdesk/automacao';
import { ACOES, CATEGORIAS, FUNIL } from './categorias';
// Classifica o contato pelas últimas mensagens e move o lead no funil, com uma etiqueta.
// Não envia nada ao contato.
export default definirAutomacao({
async aoReceberMensagem(ctx, msg) {
if (!msg.texto || !ctx.conversa) return;
const historico = await ctx.conversa.historicoParaIA({ limite: 10 });
const texto = historico.map((m) => `${m.papel === 'user' ? 'Contato' : 'Loja'}: ${m.texto}`).join('\n');
const { categoria } = await ctx.ia.classificar(texto, CATEGORIAS, {
instrucoes: 'Classifique o interesse de compra do contato. Na dúvida, escolha "morno".',
});
const acao = ACOES[categoria];
await ctx.funil.mover(FUNIL, acao.etapa);
await ctx.etiquetas.adicionar(acao.etiqueta);
ctx.log.info('classificado como', categoria);
},
});automacao.json
fetch global, process.env vazio, sem token da API nem chave da Anthropic no processo.ctx é checada contra as permissões declaradas em automacao.json.O isolamento protege contra erros e acidentes, não contra código malicioso. Rode só automações em que você confia.
// 05 — architecture
Cada peça roda no seu Mac e conversa por 127.0.0.1. Nenhuma nuvem no meio.
// 06 — quick start
Baixe o app ou compile do código-fonte — depois ligue ao Claude.
Baixar
Baixe ZapDesk-<versão>-arm64.dmg nas Releases do GitHub.
Arraste o ZapDesk para Aplicativos.
O build ainda não é notarizado: abra uma vez, vá em Ajustes do Sistema › Privacidade e Segurança e clique em "Abrir mesmo assim".
Leia o QR code com o celular (Aparelhos conectados).
Compilar do código
Clone o repositório e instale as dependências.
npm run dev compila o motor em Go e os pacotes compartilhados e abre o app.
npm run empacotar gera o DMG em app/dist/ (opcional).
git clone https://github.com/Gabriel-Almeida0/zapdesk.git
cd zapdesk
npm install
npm run dev # compila o motor em Go + pacotes compartilhados e abre o app
npm run empacotar # opcional: gera app/dist/ZapDesk-<versão>-arm64.dmgLigar ao Claude
Rode uma vez.
claude mcp add -s user -e ELECTRON_RUN_AS_NODE=1 zapdesk -- \
"/Applications/ZapDesk.app/Contents/MacOS/ZapDesk" \
"/Applications/ZapDesk.app/Contents/Resources/mcp/zapdesk-mcp.mjs"
claude mcp listAdicione ao claude_desktop_config.json e reinicie o Claude.
Arquivo de configuração~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"zapdesk": {
"command": "/Applications/ZapDesk.app/Contents/MacOS/ZapDesk",
"args": ["/Applications/ZapDesk.app/Contents/Resources/mcp/zapdesk-mcp.mjs"],
"env": { "ELECTRON_RUN_AS_NODE": "1" }
}
}
}Os mesmos comandos estão no app em Ajustes › Usar com Claude. Não precisa instalar Node à parte.
// 07 — responsible use
Leia antes de conectar um número.
O ZapDesk se conecta pelo whatsmeow, uma implementação open source e não oficial do protocolo multi-device do WhatsApp.
O ZapDesk não é afiliado, endossado nem patrocinado pelo WhatsApp ou pela Meta. "WhatsApp" é marca de seu titular.
O WhatsApp pode restringir ou banir números que enviam mensagens não solicitadas. O uso do app é responsabilidade sua.
Envie só para quem aceitou receber suas mensagens e siga a LGPD, o GDPR e os termos do WhatsApp.
Conversas, leads e relatórios ficam guardados localmente. Nada vai para um servidor do ZapDesk — ele não existe.
O software é fornecido "as is", sem garantia de qualquer tipo, sob a licença MIT.
// 08 — open source
Leia o código, abra uma issue, mande um pull request. As specs que guiaram o desenvolvimento estão no repositório.
docs/features e specs/ antes de mudanças maiores.npm test e npm run motor:testar antes de um PR.v0.1.0 — inicial