1Ce que fait la Vigie
- Elle suit vos agents IA. Les sessions Claude Code des PC de la maison et du bureau lui signalent qui travaille, qui a fini et qui attend une réponse ou une autorisation.
- Elle trie le courrier. Elle relève les boîtes mail toutes les 2 minutes et ne garde que les mails importants encore non lus, chacun résumé en une phrase par l'IA.
- Elle affiche tout sur un écran rond posé sur le bureau. L'anneau change de couleur, une phrase résume la situation, et un son signale ce qui demande votre attention.
- Tout reste chez vous. L'IA tourne sur le Jetson. Aucun mail et aucun événement ne part dans le cloud.
- IA
- Llama 3.2 3B, sur la carte
- Relève du courrier
- toutes les 2 min
- Boîtes mail
- en lecture seule
- Écran
- rond, 800 × 800, tactile
- Connexion internet pour l'IA
- aucune
La configuration décrite dans ce guide, telle qu'elle tourne sur notre bureau.
Le Jetson Orin Nano et le modèle Llama 3.2 3B de la Vigie nous servent aussi pour un assistant documentaire qui répond au public sans internet. Là, l'IA répond. Ici, elle veille pour nous.
3Le matériel
| Élément | Rôle |
|---|---|
| NVIDIA Jetson Orin Nano Super Developer Kit (8 Go) | le cerveau et l'IA locale |
| Carte microSD de 64 Go ou plus (un SSD NVMe est un plus) | le système du Jetson |
| Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C | l'écran rond tactile 800 × 800, avec Wi-Fi |
| Haut-parleur 8 Ω 2 W (livré avec l'écran Waveshare) | les sons |
| Caméra OV5647 (nappe 15 broches), facultative | la détection de présence |
| Câble USB-C | alimenter et programmer l'écran |
| Un PC Windows avec Claude Code | les agents à surveiller |

4Étape 1 : préparer le Jetson
Nous avons détaillé la mise en route de cette carte, avec nos mesures de performance, dans notre retour d'expérience sur l'IA générative en local. Voici l'essentiel.
Installer le système
Flashez l'image carte SD officielle JetPack 6.2.1 avec Balena Etcher, insérez la microSD dans le lecteur situé sous le module, puis suivez l'assistant d'installation d'Ubuntu. Mettez ensuite le système à jour :
sudo apt update && sudo apt upgrade -yInstaller Ollama
Ollama fait tourner le modèle de langage. Téléchargez son script d'installation, puis lancez-le en root : le téléchargement est long, et une autorisation sudo demandée en cours de route expirerait.
curl -fsSL https://ollama.com/install.sh -o /tmp/ollama-install.shsudo sh /tmp/ollama-install.shLa fin de l'installation doit afficher >>> NVIDIA JetPack ready.
Télécharger le modèle
ollama pull llama3.2:3b-instruct-q5_K_MTrois réglages conseillés sur 8 Go
- Démarrer en mode console, sans bureau graphique : la mémoire ainsi libérée profite au modèle.
- Limiter le contexte du modèle à 4096 jetons, la taille que nous avons retenue après nos mesures.
- Créer un fichier d'échange (swap) de 8 Go, un filet de sécurité quand la mémoire sature.
Donner une adresse fixe au Jetson
Dans l'interface de votre box, réservez une adresse IP fixe pour le Jetson : l'écran et les PC s'en servent pour le joindre. Dans la suite du guide, elle s'écrit <IP_DU_JETSON>.
5Étape 2 : installer le cerveau de la Vigie
Dossier du dépôt : vigie/. Téléchargez le code depuis GitHub (bouton « Code », puis « Download ZIP »), ou clonez-le :
git clone https://github.com/PHCsubOceana/vigie.gitDepuis le PC, copiez le dossier vigie sur le Jetson :
scp -r vigie <utilisateur>@<IP_DU_JETSON>:~Puis, sur le Jetson, lancez l'installation :
cd ~/vigie
bash setup-jetson.shLe script vous demande votre prénom : la Vigie s'adresse à vous. Il installe trois choses :
- le broker mosquitto sur le port 1883, avec un compte
vigieet un mot de passe (pas d'accès anonyme) ; - le service vigie, qui écoute les événements sur le port 8765 ;
- un jeton secret, que les PC présenteront à chaque envoi.
Le mot de passe MQTT et le jeton sont rangés dans ~/vigie/vigie.env. Affichez-les et notez-les : ils servent aux étapes 3 et 4.
grep -E "MQTT_PASS|VIGIE_TOKEN" ~/vigie/vigie.env6Étape 3 : relier Claude Code
Dossier du dépôt : vigie-postes/, à installer sur chaque PC.
Claude Code sait lancer une commande à chaque étape d'une session : ce sont les hooks. La Vigie en utilise six : début de session, message envoyé, outil utilisé, notification (une demande d'autorisation, par exemple), fin de réponse et fin de session. À chacun, une petite commande envoie l'événement au Jetson.
Sous Windows, Claude Code exécute les hooks avec Git Bash, installé avec lui. Un installateur fait tout. Dans le dossier vigie-postes, ouvrez Git Bash et lancez :
bash installer-postes.shIl vous demande :
- l'adresse IP du Jetson ;
- le jeton de la Vigie, noté à l'étape 2 ;
- un nom court pour le poste : bureau, salon… ;
- une étiquette par compte Claude, si le PC en a plusieurs : perso, pro…
Il fait une copie de sauvegarde de settings.json, ajoute les hooks, contrôle le fichier et revient à la sauvegarde en cas de problème. Chaque session s'affichera ensuite sur l'écran sous la forme « projet · compte · poste ».
Tester à la main depuis PowerShell
Pratique pour vérifier la liaison sans passer par Claude Code. Remplacez le jeton et l'adresse par les vôtres :
$jeton = "<VOTRE_JETON>"
$corps = @{source="script"; agent="essai"; projet="essai"; etat="attend"; message="test"} | ConvertTo-Json
Invoke-RestMethod -Method Post -Uri http://<IP_DU_JETSON>:8765/event `
-Headers @{"X-Vigie-Token"=$jeton} -ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($corps))7Étape 4 : programmer l'écran rond
Dossier du dépôt : vigie-corps/. Le programme de l'écran, son firmware, se compile sur le PC puis s'envoie à la carte par USB.
- Installez VS Code et l'extension ESP-IDF d'Espressif, en choisissant ESP-IDF v6.1.
- Copiez le dossier
vigie-corpsdu dépôt, par exemple dansC:\esp\projets\vigie-corps, et ouvrez-le dans VS Code. - Ouvrez le terminal ESP-IDF PowerShell (pas un PowerShell ordinaire) et placez-vous dans le dossier du projet.
Choisissez la puce, puis ouvrez le menu de configuration :
$env:IDF_TARGET = "esp32p4"
idf.py set-target esp32p4idf.py menuconfigDans le menu Vigie, renseignez : le nom du Wi-Fi (<VOTRE_WIFI>, en 2,4 GHz), son mot de passe, l'adresse MQTT mqtt://<IP_DU_JETSON>:1883, l'utilisateur vigie et le mot de passe MQTT noté à l'étape 2. S pour enregistrer, Q pour quitter.
Branchez l'écran par sa prise USB-C marquée UART, puis repérez son port :
[System.IO.Ports.SerialPort]::GetPortNames()Compilez, puis envoyez le programme à l'écran :
idf.py buildidf.py -p <PORT_COM> flash monitorLa première compilation télécharge les composants (écran, bibliothèque graphique LVGL, Wi-Fi, MQTT, caméra) : il faut une connexion internet et quelques minutes.
idf.py« non reconnu » : vous n'êtes pas dans le terminal ESP-IDF.- Le menu Vigie n'apparaît pas : lancez
idf.pydepuis le dossier du projet. - Pour quitter le moniteur série : Ctrl+].
- Au démarrage, un avertissement sur la version du firmware de la puce Wi-Fi peut s'afficher. Il est sans conséquence.
8Étape 5 : brancher la caméra et le haut-parleur
Dossier du dépôt : vigie-corps/, comme à l'étape 4. Branchez toujours la carte éteinte.
- Haut-parleur : sur le connecteur SPK de la carte. Le volume se règle à l'écran et reste mémorisé.
- Caméra OV5647, facultative : sa nappe va sur le connecteur caméra de la carte. La détection de visage tourne sur la puce de l'écran, sans le Jetson. Elle sert à savoir si quelqu'un est devant le bureau.
Les réglages de la caméra sont dans menuconfig, menu Vigie, puis Caméra : miroir, retournement, détection de visage et délai d'absence (60 s par défaut).
Une caméra absente ne bloque rien : l'écran affiche « Caméra absente » et tout le reste fonctionne.
9Étape 6 : le tri du courrier
Dossier du dépôt : vigie-courrier/, à installer sur le Jetson.
Installer
Sur le Jetson (Ubuntu 22.04, Python 3.10), installez d'abord le module qui lit le fichier de configuration :
sudo apt install python3-tomliDepuis le PC, copiez le dossier sur le Jetson :
scp -r vigie-courrier <utilisateur>@<IP_DU_JETSON>:~Puis, sur le Jetson :
cd ~/vigie-courrier
bash installer-courrier.shOuvrez ensuite le fichier de configuration (installez nano au besoin avec sudo apt install nano) :
nano ~/vigie/courrier.tomlCe fichier contient des mots de passe : il est protégé (droits 600), lisible par vous seul.
Déclarer les boîtes
Un bloc par boîte. Exemple pour une boîte hébergée chez OVH :
[[compte]]
nom = "pro"
serveur = "ssl0.ovh.net"
utilisateur = "<votre adresse>"
mot_de_passe = "<mot de passe de la boîte>"Le nom est court : c'est lui qui apparaît sur l'écran.
Le cas de Microsoft 365 et Outlook.com
Ces boîtes refusent les mots de passe en IMAP. Il faut une autorisation OAuth2, préparée une fois pour toutes dans Microsoft Entra :
- Sur entra.microsoft.com : Inscriptions d'applications, puis Nouvelle inscription. Nom : « Vigie ». Types de comptes : « annuaire d'organisation et comptes Microsoft personnels ». Pas d'URI de redirection.
- Copiez l'ID d'application (client) dans la section
[microsoft]du fichier, enclient_id, avectenant = "common". - Authentification : passez « Autoriser les flux de clients publics » sur Oui.
- Autorisations d'API, Microsoft Graph, autorisations déléguées : ajoutez
IMAP.AccessAsUser.Alletoffline_access, puis accordez le consentement administrateur si vous êtes administrateur. - Dans le centre d'administration Exchange, vérifiez qu'IMAP est activé pour la boîte.
- Déclarez la boîte dans le fichier avec
auth = "microsoft", puis autorisez-la une fois avec la commande ci-dessous.
python3 ~/vigie/vigie-courrier.py --connexion <nom>Le programme affiche un code à saisir sur microsoft.com/devicelogin. Le jeton d'accès se renouvelle ensuite tout seul.
Écrire les règles
La section [regles] du fichier dit ce qui compte pour vous :
toujours: les expéditeurs ou les domaines toujours importants ;objets_importants: les débuts d'objet toujours importants, par exemple les notifications de votre CRM (HubSpot, par exemple) quand un prospect prend rendez-vous ;jamais: réseaux sociaux, lettres d'information ;mots_urgents: facture, échéance, relance… Ils font examiner un envoi en masse qui serait sinon ignoré.
Dans la section [llm], prenom et contexte donnent votre prénom et deux ou trois lignes sur votre activité : de quoi aider l'IA à juger les mails d'inconnus.
Apprendre vos contacts
La Vigie lit les destinataires de vos mails envoyés : quelqu'un à qui vous avez écrit est présumé important. Elle peut aussi apprendre les contacts de votre CRM (HubSpot, par exemple), avec un jeton d'application privée qui a le droit crm.objects.contacts.read.
python3 ~/vigie/vigie-courrier.py --contactsEssayer, puis démarrer
Avant de démarrer, essayez sans rien publier : le programme affiche son verdict et sa raison pour vos derniers mails, ce qui permet d'ajuster les règles.
python3 ~/vigie/vigie-courrier.py --essai 15Quand le tri vous convient, démarrez le service et suivez-le :
sudo systemctl start vigie-courrierjournalctl -u vigie-courrier -f
10Au quotidien : lire l'écran
- L'anneau extérieur : ambre qui pulse, quelqu'un vous attend ; bleu qui respire, ça travaille ; vert, c'est terminé ; ardoise lente, tout est calme ; gris, la liaison avec le Jetson est perdue.
- Le centre : l'humeur en toutes lettres, la phrase de l'IA et la liste des agents. Les textes trop longs défilent.
- Le haut : une enveloppe corail et le nombre de mails importants. Un nouveau mail prend le centre pendant 20 secondes, avec un son.
Les gestes
- Toucher bref : réglage du volume, ou fiche des mails quand une alerte courrier est affichée.
- Appui long : aperçu de la caméra.
- Dans la fiche des mails, toucher un mail le marque « vu » sur l'écran (pas dans la boîte).
Les sons
Chaque situation a son son : un agent qui attend, une tâche terminée, un rappel après 5 minutes d'attente, une liaison perdue et un mail important.

11La suite : un corps de robot
La Vigie aura bientôt un corps : un boîtier en forme de robot, dessiné d'après les proportions du logo explorations360 (le nombre d'or), imprimé en 3D en bleu nuit et orange. Deux petits yeux ronds animés (Waveshare DualEye) suivront le visage détecté par la caméra.
Nous publierons la suite sur cette page. En attendant, tout le code est en accès libre :
NVIDIA, Jetson, Ollama, Llama, Claude, Espressif, ESP32, Waveshare, Microsoft, Outlook, HubSpot et OVH sont des marques de leurs propriétaires respectifs. Ce guide décrit notre propre réalisation : il n’est ni édité, ni validé, ni soutenu par ces fournisseurs. Code sous licence MIT. La police Nunito est sous licence SIL OFL 1.1.

2Comment ça marche
vigie, un programme Python) reçoit les événements des PC, en déduit une humeur (calme, au travail, en attente, terminé) et fait écrire une phrase courte par l'IA locale.vigie-courrier, un autre programme Python) relève les boîtes et publie la liste des mails importants.Le dépôt, dossier par dossier
vigie/vigie-postes/vigie-corps/vigie-courrier/Le code publié a été nettoyé : les adresses, prénoms et noms de boîtes qu'il contient sont des exemples. Votre prénom se règle à l'installation.