ACCUEILCAS D'USAGESPLATEFORMEMATÉRIELACCOMPAGNEMENTACADÉMIENOUS
Guide

Fabriquer la Vigie : un écran qui veille sur vos agents IA et votre courrier, en local

Un Jetson, une IA locale et un écran rond tactile : le pas-à-pas complet, du matériel aux réglages, avec le code en accès libre.

La Vigie est un petit compagnon de bureau. Elle suit les sessions Claude Code des PC de la maison et du bureau, relève les boîtes mail, et affiche sur un écran rond qui travaille, qui a fini, qui attend une réponse et quel mail compte vraiment. L'IA tourne sur une carte Jetson Orin Nano : rien ne sort du réseau local. Voici comment nous l'avons fabriquée, étape par étape, pour que vous puissiez faire pareil.

Mise à jour octobre 2026

Maquette de l'écran rond de la Vigie : anneau ambre, titre « On t'attend », phrase « Le rapport attend ta réponse. » et la liste des agents en dessous
Comprendre

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.

La Vigie en service : un mail important attend, puis un agent Claude Code travaille et termine. Vidéo muette.
Voir le code sur GitHubTout le code de la Vigie, sous licence MIT : github.com/PHCsubOceana/vigie. Quatre dossiers, un par grande étape du guide.

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.

2Comment ça marche

Schéma de la Vigie. À gauche, les PC avec Claude Code envoient leurs événements au Jetson par des hooks HTTP sur le port 8765, et les boîtes mail sont relevées toutes les 2 minutes en lecture seule. Au centre, le Jetson fait tourner trois programmes : le cerveau vigie avec l'IA locale, le tri vigie-courrier, et le broker MQTT mosquitto. À droite, l'écran rond ESP32-P4 reçoit les messages par MQTT en Wi-Fi sur le port 1883. Le tout reste dans le réseau local.
Tout passe par le Jetson, et rien ne sort du réseau local.
  • Le cerveau (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.
  • Le tri du courrier (vigie-courrier, un autre programme Python) relève les boîtes et publie la liste des mails importants.
  • MQTT est un petit système de messagerie entre appareils. Le broker (ici mosquitto) fait office de bureau de poste : le Jetson y dépose ses messages, et l'écran s'y abonne.
  • L'écran rond affiche, joue les sons et peut détecter une présence avec sa caméra.

Le dépôt, dossier par dossier

Dossier du dépôtRôleOù il s'installeÉtape
vigie/le cerveaule Jetson2
vigie-postes/les hooks Claude Codechaque PC3
vigie-corps/le firmware de l'écran rondl'écran, depuis un PC4 et 5
vigie-courrier/le tri du courrierle Jetson6

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.

3Le matériel

ÉlémentRô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.4Cl'é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), facultativela détection de présence
Câble USB-Calimenter et programmer l'écran
Un PC Windows avec Claude Codeles agents à surveiller
La carte NVIDIA Jetson Orin Nano posée sur un bureau en bois, avec son radiateur et son ventilateur noirs, ses ports USB et Ethernet, et le câble d'alimentation branché
Le Jetson Orin Nano : il fait tourner le cerveau de la Vigie, le tri du courrier et l'IA locale.
Fabriquer

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 -y

Installer 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.sh
sudo sh /tmp/ollama-install.sh

La fin de l'installation doit afficher >>> NVIDIA JetPack ready.

Télécharger le modèle

ollama pull llama3.2:3b-instruct-q5_K_M

Trois 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.git

Depuis 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.sh

Le 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 vigie et 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.env

6É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.sh

Il 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.

  1. Installez VS Code et l'extension ESP-IDF d'Espressif, en choisissant ESP-IDF v6.1.
  2. Copiez le dossier vigie-corps du dépôt, par exemple dans C:\esp\projets\vigie-corps, et ouvrez-le dans VS Code.
  3. 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 esp32p4
idf.py menuconfig

Dans 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 build
idf.py -p <PORT_COM> flash monitor

La 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.py depuis 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-tomli

Depuis 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.sh

Ouvrez ensuite le fichier de configuration (installez nano au besoin avec sudo apt install nano) :

nano ~/vigie/courrier.toml

Ce 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 :

  1. 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.
  2. Copiez l'ID d'application (client) dans la section [microsoft] du fichier, en client_id, avec tenant = "common".
  3. Authentification : passez « Autoriser les flux de clients publics » sur Oui.
  4. Autorisations d'API, Microsoft Graph, autorisations déléguées : ajoutez IMAP.AccessAsUser.All et offline_access, puis accordez le consentement administrateur si vous êtes administrateur.
  5. Dans le centre d'administration Exchange, vérifiez qu'IMAP est activé pour la boîte.
  6. 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 --contacts

Essayer, 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 15

Quand le tri vous convient, démarrez le service et suivez-le :

sudo systemctl start vigie-courrier
journalctl -u vigie-courrier -f
L'écran rond de la Vigie en alerte : anneau jaune, mention « On t'attend » et enveloppe avec le chiffre 1. Au centre, « Le mail Phil_explo attend ta réponse », puis la liste des agents et des boîtes mail suivis
Un mail important attend une réponse : l'anneau passe au jaune et l'enveloppe compte les mails.
Utiliser

10Au quotidien : lire l'écran

L'écran au calme : anneau ardoise, titre « En veille », phrase « Rien à signaler. »Un agent attend : anneau ambre, titre « On t'attend », phrase « Le rapport attend ta réponse. », et la liste des agents en dessousAlerte courrier : titre « Courrier » en corail et résumé d'un mail en une phraseLa fiche des mails importants : pour chaque mail, l'expéditeur, la boîte, l'ancienneté, le résumé et l'objet
Maquettes de l'écran, avec des données fictives : au calme, en attente de réponse, en alerte courrier, et la fiche des mails importants.
  • 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.

L'écran rond de la Vigie pendant qu'un agent travaille : double anneau bleu lumineux, mention « Au travail » et la phrase « site-explo-vps · Explo · Phil-Laptop est en cours, rien à signaler »
Un agent Claude Code travaille : l'anneau bleu respire. Il passe au vert quand la tâche est terminée.

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 :

Voir le code sur GitHubLicence MIT : github.com/PHCsubOceana/vigie

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.

Haut de page