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
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.
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.
Ubuntu, Debian et distributions systemd courantes · arm64 / x86_64
hookd setupsh
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 setupsh
curl -fsSL https://raw.githubusercontent.com/ducksee/duckterm-hookd-releases/main/install.sh \
| DUCKTERM_PAIR_QR=1 sh
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
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
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 :
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
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
SaisissezQuel 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
SaisissezQuel 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
SaisissezQuel 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
SaisissezQuel 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.