# Notifications — Liu Terminal

> Notifications de Liu Terminal. Soyez averti quand les agents IA terminent des tâches, avec des hooks configurables et des alertes sonores.

URL: https://liu.software/fr/docs/notify/  
Language: fr  
Updated: 2026-10-17

liu-notify est un processus autonome facultatif, tandis que l’interface Liu peut héberger le même serveur dans son processus. Il accepte un en-tête v1 de 24 octets ou l’en-tête v2 actuel de 28 octets avec métadonnées facultatives sur un socket local, limite le débit, déduplique les événements et achemine son ou voix par paire (agent, événement).

## L'exécuter

```
# Compiler avec l'application principale
cmake --build build --target liu-notify

# Démarrer le démon
./build/liu-notify daemon

# Envoyer un événement ponctuel
./build/liu-notify send --tool=claude --event=stop
```

La configuration se trouve dans ~/.config/liu/notify.conf — séparée du config.json de l'application principale afin que le démon reste utilisable même sans que Liu ne fonctionne.

When Liu is running, its GUI hosts the notification server in-process; the CLI does not need to start a second daemon. If no server is listening, send exits without delivering an event. Use the standalone daemon only when notifications must work without Liu.

## Hooks d’agents pris en charge

Liu peut installer et supprimer des hooks de cycle de vie pour les agents ci-dessous pendant l’exécution de l’application. Le hook est écrit dans la configuration de l’agent et Liu supprime son entrée gérée à la fermeture de l’instance hôte.

| Agent | Surface du hook | Signaux | Notes |
| --- | --- | --- | --- |
| Claude Code | `~/.claude/settings.json` | `start · notify · complete` | UserPromptSubmit drives the working state; Notification and Stop can alert you. |
| Codex | `~/.codex/config.toml` | `complete` | The Stop hook reports a completed turn. Run /hooks in Codex once to trust it. |
| Grok | `~/.grok/hooks/liu-notify.json` | `notify · complete` | Notification and top-level Stop events are handled; sub-agent completions stay silent. |
| OpenCode | `~/.config/opencode/plugins/liu-notify.js` | `complete` | The managed plugin listens for top-level session.idle events. |
| Antigravity | `~/.gemini/config/hooks.json` | `complete` | A named Stop hook reports when the top-level execution loop ends. |
| Command Code | `~/.commandcode/settings.json` | `complete` | Its Claude-compatible settings schema is wired to the top-level Stop event. |

Copilot et custom sont acceptés par le protocole de notification bas niveau et la matrice sonore, mais Liu n’installe pas encore de hook automatique de cycle de vie pour eux. Les autres agents fonctionnent normalement dans les onglets Liu, sans recevoir de notifications automatiques de hook.

## Matrice Outil × Événement

Configurez une règle sonore pour n'importe quelle combinaison. Les cellules non définies retombent sur la règle générale.

|  | start | stop | notify | error | complete |
| --- | --- | --- | --- | --- | --- |
| claude | · | · | · | · | · |
| copilot | · | · | · | · | · |
| codex | · | · | · | · | · |
| custom | · | · | · | · | · |

## Format de trame

L’en-tête v1 fait 24 octets; l’en-tête v2 actuel en fait 28 car il ajoute meta\_len. La trame complète est limitée à 4096 octets. tests/fuzz\_notify\_validate.c teste la validation par fuzzing pour rejeter les trames malformées en toute sécurité.

```
offset  size  field
0       4     magic      ('N','T','F','Y')
4       2     version    (1 or current 2)
6       2     flags      (speak=1, bell=2)
8       1     tool_id    (claude=1, copilot=2, codex=3, custom=255)
9       1     event_id   (start=1, stop=2, notify=3, error=4, complete=5)
10      1     priority   (reserved)
11      1     source     (cli=0, stdin=1, test=2)
12      4     seq        (client nonce — for dedup)
16      4     title_len  (<= 256)
20      4     body_len   (<= 3072)
24      4     meta_len   (v2 only, <= 512)
payload         title, body, then metadata key=value lines
                total frame <= 4096 bytes
```

La section de métadonnées v2 contient actuellement les lignes cwd=, session= et agent=. Les émetteurs de hooks s’en servent pour attribuer l’événement au bon volet; les clés inconnues sont ignorées pour la compatibilité future.

## Backends de plateforme

Même trame, haut-parleur différent. macOS utilise AVSpeechSynthesizer et Linux fait appel à notify-send. Chaque backend réside dans son propre fichier (platform\_notify\_macos.m, platform\_notify\_linux.c), de sorte que le remplacement ou le stub de l'un d'eux n'est qu'une modification d'un seul fichier.

[Suivant Configuration →](https://liu.software/fr/docs/config.md)
