Aplicativo Clawdbot para macOS

O aplicativo complementar do Clawdbot para macOS oferece integração com a barra de menu, gerenciamento de permissões e recursos nativos do macOS para seu assistente de IA.

Visão Geral do Complemento Clawdbot para macOS

O aplicativo Clawdbot para macOS é o complemento da barra de menu do Clawdbot. Ele gerencia permissões, administra/conecta ao Gateway localmente (launchd ou manual) e expõe as capacidades do macOS ao agente como um nó.

O Que Ele Faz

  • Exibe notificações nativas e status na barra de menu
  • Gerencia solicitações TCC (Notificações, Acessibilidade, Gravação de Tela, Microfone, Reconhecimento de Fala, Automação/AppleScript)
  • Executa ou conecta ao Gateway (local ou remoto)
  • Expõe ferramentas exclusivas do macOS (Canvas, Câmera, Gravação de Tela, system.run)
  • Gerencia o serviço de host de nó local
  • Instala o CLI global (clawdbot) via npm/pnpm quando solicitado

Modo Local vs Remoto

ModoDescrição
Local (padrão)O app conecta ao Gateway local em execução; habilita o serviço launchd se necessário
RemotoO app conecta ao Gateway via SSH/Tailscale; inicia o serviço de host de nó local

O aplicativo não gera o Gateway como processo filho.

Controle do Launchd

O aplicativo gerencia um LaunchAgent por usuário com o rótulo bot.molt.gateway (ou bot.molt.<profile> quando usando --profile).

# Reiniciar o gateway
launchctl kickstart -k gui/$UID/bot.molt.gateway

# Parar o gateway
launchctl bootout gui/$UID/bot.molt.gateway

Se o LaunchAgent não estiver instalado, habilite-o pelo aplicativo ou execute:

clawdbot gateway install

Capacidades do Nó (macOS)

O aplicativo macOS se apresenta como um nó com estas capacidades:

CategoriaComandos
Canvascanvas.present, canvas.navigate, canvas.eval, canvas.snapshot
Câmeracamera.snap, camera.clip
Telascreen.record
Sistemasystem.run, system.notify

O nó reporta um mapa de permissões para que os agentes possam decidir o que é permitido.

Aprovações de Execução (system.run)

system.run é controlado pelas aprovações de execução no aplicativo macOS (Configurações → Aprovações de execução).

Configuração armazenada em:

~/.clawdbot/exec-approvals.json

Exemplo de configuração:

{
  "version": 1,
  "defaults": {
    "security": "deny",
    "ask": "on-miss"
  },
  "agents": {
    "main": {
      "security": "allowlist",
      "ask": "on-miss",
      "allowlist": [{"pattern": "/opt/homebrew/bin/rg"}]
    }
  }
}

Notas:

  • As entradas da lista de permissões são padrões glob para caminhos de binários resolvidos
  • Escolher "Sempre Permitir" no prompt adiciona esse comando à lista de permissões

O aplicativo registra o esquema de URL clawdbot:// para ações locais.

clawdbot://agent

Aciona uma solicitação ao agente do Gateway:

open 'clawdbot://agent?message=Hello%20from%20deep%20link'

Parâmetros de consulta:

ParâmetroDescrição
messageObrigatório - a mensagem a enviar
sessionKeyOpcional - identificador de sessão
thinkingOpcional - habilitar modo de pensamento
deliver / to / channelOpcional - destino de entrega
timeoutSecondsOpcional - timeout da solicitação
keyOpcional - chave de modo não supervisionado

Segurança: Sem key, o aplicativo solicita confirmação.

Fluxo de Integração

  1. Instale e inicie o Clawdbot.app
  2. Complete a lista de verificação de permissões (prompts TCC)
  3. Certifique-se de que o modo Local está ativo e o Gateway está em execução
  4. Instale o CLI se desejar acesso pelo terminal

Fluxo de Build e Desenvolvimento

cd apps/macos && swift build
swift run Clawdbot  # ou use o Xcode

# Empacotar o aplicativo
scripts/package-mac-app.sh

Depurar Conectividade do Gateway

Use o CLI de depuração para testar o handshake WebSocket do Gateway:

cd apps/macos
swift run clawdbot-mac connect --json
swift run clawdbot-mac discover --timeout 3000 --json

Opções de conexão:

OpçãoDescrição
--url <ws://host:port>Sobrescrever configuração
--mode <local|remote>Resolver da configuração
--probeForçar nova sonda de saúde
--timeout <ms>Timeout da solicitação (padrão: 15000)
--jsonSaída estruturada

Conexão Remota (Túneis SSH)

Para acesso remoto ao Gateway:

# Túnel de controle (porta WebSocket do Gateway)
ssh -N -L 18789:127.0.0.1:18789 user@host

Próximos Passos