Application Clawdbot pour macOS

L'application compagnon Clawdbot pour macOS fournit l'intégration à la barre de menu, la gestion des permissions et les capacités natives de macOS pour votre assistant IA.

Aperçu du Compagnon Clawdbot pour macOS

L'application Clawdbot pour macOS est le compagnon de la barre de menu pour Clawdbot. Elle possède les permissions, gère/se connecte au Gateway localement (launchd ou manuel), et expose les capacités de macOS à l'agent en tant que nœud.

Ce Qu'elle Fait

  • Affiche les notifications natives et l'état dans la barre de menu
  • Possède les invites TCC (Notifications, Accessibilité, Enregistrement d'écran, Microphone, Reconnaissance vocale, Automatisation/AppleScript)
  • Exécute ou se connecte au Gateway (local ou distant)
  • Expose les outils exclusifs macOS (Canvas, Caméra, Enregistrement d'écran, system.run)
  • Gère le service d'hôte de nœud local
  • Installe le CLI global (clawdbot) via npm/pnpm sur demande

Mode Local vs Distant

ModeDescription
Local (défaut)L'app se connecte au Gateway local en cours d'exécution ; active le service launchd si nécessaire
DistantL'app se connecte au Gateway via SSH/Tailscale ; démarre le service d'hôte de nœud local

L'application ne génère pas le Gateway comme processus enfant.

Contrôle Launchd

L'application gère un LaunchAgent par utilisateur étiqueté bot.molt.gateway (ou bot.molt.<profile> lors de l'utilisation de --profile).

# Redémarrer le gateway
launchctl kickstart -k gui/$UID/bot.molt.gateway

# Arrêter le gateway
launchctl bootout gui/$UID/bot.molt.gateway

Si le LaunchAgent n'est pas installé, activez-le depuis l'application ou exécutez :

clawdbot gateway install

Capacités du Nœud (macOS)

L'application macOS se présente comme un nœud avec ces capacités :

CatégorieCommandes
Canvascanvas.present, canvas.navigate, canvas.eval, canvas.snapshot
Caméracamera.snap, camera.clip
Écranscreen.record
Systèmesystem.run, system.notify

Le nœud rapporte une carte de permissions pour que les agents puissent décider ce qui est autorisé.

Approbations d'Exécution (system.run)

system.run est contrôlé par les approbations d'exécution dans l'application macOS (Paramètres → Approbations d'exécution).

Configuration stockée dans :

~/.clawdbot/exec-approvals.json

Exemple de configuration :

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

Notes :

  • Les entrées de la liste blanche sont des motifs glob pour les chemins de binaires résolus
  • Choisir "Toujours autoriser" dans l'invite ajoute cette commande à la liste blanche

Liens Profonds

L'application enregistre le schéma d'URL clawdbot:// pour les actions locales.

clawdbot://agent

Déclenche une requête agent du Gateway :

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

Paramètres de requête :

ParamètreDescription
messageRequis - le message à envoyer
sessionKeyOptionnel - identifiant de session
thinkingOptionnel - activer le mode réflexion
deliver / to / channelOptionnel - cible de livraison
timeoutSecondsOptionnel - délai d'expiration de la requête
keyOptionnel - clé du mode non surveillé

Sécurité : Sans key, l'application demande confirmation.

Flux d'Intégration

  1. Installez et lancez Clawdbot.app
  2. Complétez la liste de vérification des permissions (invites TCC)
  3. Assurez-vous que le mode Local est actif et le Gateway fonctionne
  4. Installez le CLI si vous voulez un accès terminal

Flux de Build et Développement

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

# Empaqueter l'application
scripts/package-mac-app.sh

Déboguer la Connectivité du Gateway

Utilisez le CLI de débogage pour tester la poignée de main WebSocket du Gateway :

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

Options de connexion :

OptionDescription
--url <ws://host:port>Remplacer la configuration
--mode <local|remote>Résoudre depuis la configuration
--probeForcer une nouvelle sonde de santé
--timeout <ms>Délai d'expiration de la requête (défaut : 15000)
--jsonSortie structurée

Connexion Distante (Tunnels SSH)

Pour l'accès distant au Gateway :

# Tunnel de contrôle (port WebSocket du Gateway)
ssh -N -L 18789:127.0.0.1:18789 user@host

Prochaines Étapes