Aller au contenu

Configuration des push Agent

La boîte de réception est alimentée par duckterm-hookd. Exécutez une commande sur la machine de vos Agents, puis scannez son QR d’association dans DuckTerm pour configurer les hooks et démarrer le service.

Avant de commencer

  • DuckTerm installé sur votre téléphone ou Pad (iOS / iPadOS 17+ sur les appareils Apple)
  • Une machine macOS, Windows 10+ ou Linux où tournent Claude Code / Codex / Gemini CLI / d’autres Agents
  • Homebrew sur macOS ; PowerShell 5.1+ sous Windows ; curl et systemd sous Linux
  1. 1

    Ouvrir les notifications d’Agent dans DuckTerm

    Installez ou ouvrez DuckTerm, puis accédez à Réglages → Notifications d’agent. Aucun token ni identifiant de compte n’est à copier.

    Installer DuckTerm avant l’association

    Le scanner QR se trouve dans Réglages → Notifications d’agent. Installez ou ouvrez DuckTerm avant d’exécuter la commande hôte ci-dessous.

  2. 2

    Exécuter une commande et scanner son QR

    Exécutez la commande de la plateforme. Elle installe hookd avec son interface Web locale et affiche un QR d’association. Scannez-le dans DuckTerm pour configurer les Agents compatibles et démarrer le service.

    Ces commandes sont complètes. Le paquet contient l’interface Web locale et affiche le QR d’association sans placer d’identifiant mobile dans l’historique du shell.

    macOS

    Homebrew · Apple Silicon et Intel
    hookd setup
    brew install ducksee/tap/duckterm-hookd && \
    "$(brew --prefix duckterm-hookd)/bin/duckterm-hookd" setup --qr

    Windows

    PowerShell / CMD natif · Windows 10 / 11 · x64 / arm64
    PowerShell
    irm https://raw.githubusercontent.com/ducksee/duckterm-hookd-releases/main/install.ps1 | iex
    Command Prompt
    curl.exe -fsSL https://raw.githubusercontent.com/ducksee/duckterm-hookd-releases/main/install.cmd -o install.cmd && install.cmd

    Linux

    Ubuntu, Debian et distributions systemd courantes · arm64 / x86_64
    hookd setup
    curl -fsSL https://raw.githubusercontent.com/ducksee/duckterm-hookd-releases/main/install.sh \
      | DUCKTERM_PAIR_QR=1 sh

    Windows WSL

    Ubuntu dans Windows · WSL1 / WSL2 · service géré
    hookd setup
    curl -fsSL https://raw.githubusercontent.com/ducksee/duckterm-hookd-releases/main/install.sh \
      | DUCKTERM_PAIR_QR=1 sh
  3. 3

    Vérifier

    Exécutez duckterm-hookd status, puis testez le push local et le push de la plateforme dans Réglages → Notifications d’agent. Les mises à niveau et redémarrages ultérieurs du service conservent cette association.

    Voir les détails
    $ duckterm-hookd status
    DuckTerm Agent connection · vX.Y.Z
    [ok] Connected to DuckTerm: <this host>
    [ok] Background service is running
    [ok] Cloud connection is online
    [ok] Membership: Pro
    [ok] Coding agents connected: Claude Code, Codex
    
    # End-to-end Hookd → cloud → APN / Inbox test
    $ duckterm-hookd test-push --note "Setup verification"
    test push accepted by local Hookd
    source=<this host>
    time=<current RFC3339 time>
    cwd=<current directory>
    Cloud/APN delivery is asynchronous; verify it on the device or in local send records.

    Dans Réglages → Notifications d’agent → Vérifier, envoyez ensuite un test local et un test du push de la plateforme. Si les deux arrivent sur votre téléphone, la configuration est terminée.

  4. 4

    Mettre à jour ou supprimer Hookd

    Mettez à jour hookd et son interface Web, déconnectez les hooks des Agents ou supprimez complètement le service Homebrew lorsque cet hôte n’utilise plus DuckTerm.

    Voir les détails
    # Homebrew / native Windows: verify, upgrade, and restart Hookd
    duckterm-hookd upgrade
    
    # Linux / WSL: upgrade binary, bundled UI, and service
    curl -fsSL https://raw.githubusercontent.com/ducksee/duckterm-hookd-releases/main/install.sh | sh
    
    # Upgrade only the independently versioned Web UI
    duckterm-hookd ui upgrade
    
    # Disconnect Agent hooks; keep the daemon installed
    duckterm-hookd hook uninstall
    
    # Homebrew: remove the service and binary completely
    brew services stop duckterm-hookd && brew uninstall duckterm-hookd

    duckterm-hookd hook uninstall retire uniquement les entrées DuckTerm des configurations d’Agents compatibles. Le daemon, l’association et les hooks tiers restent intacts.

  5. 5

    LAN Direct et pare-feu de l’hôte

    Pour une connexion directe par LAN ou VPN, hookd écoute TCP 11434 sur toutes les interfaces (0.0.0.0 / [::]). Cela ne publie pas le port sur Internet : n’ajoutez pas de redirection sur le routeur. La clé d’association DuckTerm reste obligatoire.

    Voir les détails

    Windows (natif)

    La configuration ajoute le dossier d’installation au PATH utilisateur. Dans un nouveau terminal, utilisez duckterm-hookd ou l’alias court dhook. Une règle de port TCP s’applique à tous les profils réseau. Si une élévation est requise, exécutez dans PowerShell administrateur :

    duckterm-hookd firewall install
    duckterm-hookd firewall status

    macOS

    Homebrew installe duckterm-hookd et l’alias court dhook. Choisissez « Autoriser » à la première alerte du pare-feu. En cas de refus antérieur, ces commandes n’autorisent que hookd installé par Homebrew :

    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add \
      "$(brew --prefix duckterm-hookd)/bin/duckterm-hookd"
    sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp \
      "$(brew --prefix duckterm-hookd)/bin/duckterm-hookd"

    Linux / WSL

    Le script installe duckterm-hookd et l’alias court dhook dans /usr/local/bin. Avec UFW, autorisez TCP 11434. Ne configurez pas de redirection publique sur le routeur :

    sudo ufw allow 11434/tcp
    duckterm-hookd firewall status
  6. 6

    Public Direct

    Optionnel · avancé

    hookd peut ouvrir une entrée en loopback uniquement sur 127.0.0.1:11435, publiée par un tunnel HTTPS/WSS que vous exploitez vous-même — Cloudflare Tunnel, frp ou un reverse proxy. Cela n'élargit jamais le contrôle d'adresse LAN et n'inclut jamais le port 20080 du panneau Web ; routeSecret sert à isoler les scanners, ce n'est pas la clé applicative, l'authentification d'appairage est inchangée. Redémarrez hookd après toute modification.

    Voir les détails
    # 1 · Enable the loopback ingress (default port 11435) and register the origin
    duckterm-hookd access enable
    duckterm-hookd access add https://hookd.example.com
    duckterm-hookd access list
    
    # 2a · Cloudflare Tunnel — shortest form
    cloudflared tunnel --url http://127.0.0.1:11435
    
    # 2b · frp — shortest frpc.toml
    # serverAddr = "frps.example.com"
    # serverPort = 7000
    # [[proxies]]
    # name = "hookd"
    # type = "https"
    # localIP = "127.0.0.1"
    # localPort = 11435
    # customDomains = ["hookd.example.com"]
    
    # 3 · Public Direct changes only take effect after a restart
    duckterm-hookd restart

Détails par Agent

Installer hookd raccorde tous les Agents pris en charge. Certains ont en plus une étape au premier lancement qui décide si les événements atteignent votre téléphone — ceux ci-dessous en font partie. Ensuite, lancez l’Agent dans tmux (ou Herdr) et envoyez un message ; Live Preview a besoin d’une session à laquelle se rattacher.

OpenCode

OpenCode ne demande rien : l’installateur écrit un plugin DuckTerm dans son répertoire de plugins. Si hookd a été installé avant qu’OpenCode existe sur cet hôte, relancez l’installateur pour que le plugin soit déposé.

Essayer
cd tmp
tmux new -s op-prod-main
opencode

Saisissez Quel modèle es-tu ? Vérifiez ensuite votre téléphone : le message doit arriver dans l’Inbox et Live Preview doit montrer la session en temps réel.

Codex

Codex demande au premier lancement s’il faut faire confiance aux hooks. Choisissez de tous les approuver — un hook non approuvé n’est jamais exécuté, hookd n’a donc rien à relayer et l’Inbox reste vide.

Essayer
cd tmp
tmux new -s cx-prod-main
codex

Saisissez Quel modèle es-tu ? Vérifiez ensuite votre téléphone : le message doit arriver dans l’Inbox et Live Preview doit montrer la session en temps réel.

Claude Code

Claude Code lit les hooks depuis ~/.claude/settings.json, écrit par l’installateur. Claude Code ne relit ce fichier qu’au démarrage et signale les changements de hooks pour validation : redémarrez une session déjà lancée et approuvez le changement avant d’attendre des événements.

Essayer
cd tmp
tmux new -s cc-prod-main
claude

Saisissez Quel modèle es-tu ? Vérifiez ensuite votre téléphone : le message doit arriver dans l’Inbox et Live Preview doit montrer la session en temps réel.

DeepSeek Harness

DeepSeek Harness rejoint hookd via un pont de hooks hors arborescence, que hookd installe pour vous. En cas d’échec, l’interface web de dsh affiche l’erreur — installez le pont vous-même avec dsh plugin add @deepseek-ai/dsh-hooks-claude-code, relancez l’installateur hookd, puis redémarrez l’interface web de dsh. Le pont ne prend effet qu’après ce redémarrage.

Essayer
cd tmp
tmux new -s dsh-prod-main
dsh

Saisissez Quel modèle es-tu ? Vérifiez ensuite votre téléphone : le message doit arriver dans l’Inbox et Live Preview doit montrer la session en temps réel.

Agents connectés

hookd vérifie des workflows pour Claude Code, Codex, Grok Build, Antigravity, Cursor, OpenCode, Pi, Devin, Droid, Qoder, Amp, Gemini CLI, Kimi Code et DeepSeek Harness. Les neuf schémas de décision du contrat v1 comprennent sept adaptateurs structurés natifs, ainsi que des adaptateurs Hook à confirmation unique protégée pour Antigravity et Grok.

Claude Code Codex Grok Build Antigravity Cursor OpenCode Pi Devin Droid Qoder Amp Gemini DeepSeek Harness Kimi Code

Ce qui quitte votre machine

hookd construit les aperçus de notification à partir des hooks et transcriptions des Agents ; du texte ou du code provenant des prompts et sorties peut y apparaître. Les approbations, réponses et replis de Live Preview ou d'image peuvent aussi passer par le relais, tandis que le trafic du terminal reste direct. Les identifiants SSH ne sont jamais envoyés à nos serveurs. Consultez la politique de confidentialité pour les détails de stockage et de conservation.

Politique de confidentialité

Un problème ?

Consultez les problèmes fréquents sur la page Support ou écrivez-nous ; nous répondons rapidement.