Opção A — Hospedado (app.switchbord.ai)
Se você é um operador entrando em uma equipe existente ou iniciando um novo workspace na plataforma hospedada:
- Cadastre-se em app.switchbord.ai.
- Crie um workspace (ou aceite um convite de um admin de um workspace existente).
- Vá em Settings → Provider e conecte sua conta Meta Business e o número de WhatsApp.
- Siga o guia Conectar o WhatsApp para o passo a passo completo de configuração de credenciais.
Se você foi convidado para um workspace e chega em /pending-access, seu convite ainda está sendo processado. Contate o admin do seu workspace.
Opção B — Configuração local para contribuidores
Instalar
Validar o workspace
Configurar os arquivos de ambiente
Copie os arquivos de exemplo antes de iniciar o workspace:
Se você estiver trabalhando no comportamento do worker ou do runtime de webhooks, também popule:
apps/control-plane foi removido. Não crie um .env.local para ele.
Variáveis mínimas do Supabase
NEXT_PUBLIC_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
SUPABASE_SECRET_KEY — para caminhos administrativos do lado do servidor
WHATSAPP_PLATFORM_DATA_MODE=supabase — apenas para superfícies com uma implementação real apoiada no Supabase
WORKSPACE_BOOTSTRAP_ADMIN_EMAILS — recomendado para qualquer ambiente compartilhado ou hospedado, para definir o primeiro operador privilegiado
WORKSPACE_ALLOW_FIRST_CLAIM=true — apenas para a reivindicação intencional e única de owner pelo primeiro usuário durante o bootstrap local
O repositório ainda aceita NEXT_PUBLIC_SUPABASE_ANON_KEY e SUPABASE_SERVICE_ROLE_KEY como aliases legados, mas novas configurações devem usar as formas de publishable key e secret key.
WHATSAPP_META_ACCESS_TOKEN — para o worker
WEBHOOK_SIGNATURE_SECRET — para apps/api
META_WEBHOOK_VERIFY_TOKEN — para verificação explícita do challenge de webhook
SUPABASE_DB_URL — se estiver usando o Supabase Vault para segredos de provedor gerenciados pelo workspace
Se um usuário autenticado ainda não estiver provisionado em um workspace, o app do operador o direciona para /pending-access até que um convite seja aceito ou as regras de bootstrap concedam a membership.
Se o primeiro operador local ficar preso em /pending-access, não exclua o usuário de autenticação. Corrija o bootstrap definindo WORKSPACE_BOOTSTRAP_ADMIN_EMAILS, habilitando temporariamente WORKSPACE_ALLOW_FIRST_CLAIM=true, ou inserindo manualmente a linha ausente em workspace_members.
Veja Ambiente para o contrato completo de configuração de runtime.
Iniciar o workspace
Portas locais
- app:
3000
- web:
3001
- api:
3002
- docs:
3004
- storybook:
6006
- worker: processo em segundo plano, sem porta HTTP
Rotas de alto valor
- caixa de entrada do operador:
http://localhost:3000/inbox
- diagnósticos de runtime:
http://localhost:3000/runtime
- prontidão da API:
http://localhost:3002/ready
- especificação OpenAPI:
http://localhost:3002/spec
- ingress de webhook da Meta:
http://localhost:3002/webhooks/meta
Premissas de trabalho
- feature flags têm valor padrão
on
- o contrato de ambiente do Supabase deve ser satisfeito antes que qualquer superfície use o Supabase diretamente
- a migração somente para frente (forward-only) é a postura ativa
- a migração histórica de mensagens está intencionalmente fora do escopo deste primeiro recorte
Leia a seguir