‹ Jarvis Dashboard

IPCRA — infrastructure de données

Carte des flux

Où chaque donnée entre, comment elle est traitée, où elle finit rangée — capture personnelle, veille, distillation en notes permanentes, exports business, garde-fous de sécurité et mémoire du système.

Dernière mise à jour manuelle : 22 juillet 2026 — rien ne maintient cette carte à jour toute seule, si le workflow change sans qu'elle suive, elle devient fausse.

1 · Capture
2 · Veille
3 · Distillation
4 · Business
5 · Sécurité & santé
6 · Mémoire système

Confidentialité (doctrine CLAUDE.md)

Vert public / générique, utilisable avec une IA
Orange à anonymiser avant usage IA
Rouge jamais vers une IA externe
Variable dépend du contenu envoyé

Vue d'ensemble

flowchart LR
    subgraph CAP["1 · CAPTURE"]
        direction TB
        TG["Bot Telegram djefrey (VPS)"] --> HE["Hermès + Ollama local
enrichissement horaire"] HE --> MAC["process_inbox_local.py
Mac, rapatrie par SSH"] end subgraph VEI["2 · VEILLE"] direction TB RSS["14 flux RSS
timer 12h"] --> WB["Wallabag
self-hosted VPS"] NEWS["Newsletters
6 comptes mail, 7h30"] --> WB end subgraph DIS["3 · DISTILLATION"] direction TB LIT["Notes littéraires
1_Idées/*-inbox"] --> NP["Notes permanentes
pool plat, manuel"] NP --> MOC["MOC
relie par thème"] end subgraph BUS["4 · BUSINESS"] direction TB ADD["L'Addition"] --> TIP["Exports / Supabase TIP"] MYP["mypizzadoor"] --> TIP TIP --> DASH["Dashboards HTML"] end subgraph SEC["5 · SÉCURITÉ ET SANTÉ"] direction TB HC["health_check.py
quotidien 7h"] SK["smoke.sh
hebdo lundi 7h10"] end subgraph MEM["6 · MÉMOIRE SYSTÈME"] direction TB CTXT["CONTEXT.md / HISTORY.md"] CLMD["CLAUDE.md locaux"] end MAC --> LIT WB -->|"plugin Obsidian"| LIT MOC -.->|"pointeur Voir aussi"| CLMD MAC -.-> CLMD classDef cap fill:#2a78d6,stroke:#1c5aa8,color:#fff classDef vei fill:#eb6834,stroke:#c04f22,color:#fff classDef dis fill:#4a3aa7,stroke:#362a7d,color:#fff classDef bus fill:#e34948,stroke:#b9302f,color:#fff classDef sec fill:#1baf7a,stroke:#128a5d,color:#fff classDef mem fill:#eda100,stroke:#b87d00,color:#fff class TG,HE,MAC cap class RSS,NEWS,WB vei class LIT,NP,MOC dis class ADD,MYP,TIP,DASH bus class HC,SK sec class CTXT,CLMD mem

Acteurs de l'écosystème — clique pour le détail

01

Capture personnelle

Tout ce que Xavier envoie sur le vif (texte, photo, document, note vocale) depuis son téléphone, plus le travail confié directement à Hermès.

Entrée
Message Telegram (texte / photo / document / note vocale) reçu par le bot hébergé sur le VPS Hostinger, /opt/ipcra-telegram-bot
Stockage brut
/var/telegram-inbox/ (VPS) : fichier + .json de métadonnées (timestamp, type, filename, caption)
Fréquence
continu, 24h/24
Confidentialité
Variable — dépend de ce que Xavier envoie (texte libre, photo, document)

Entrée
Paires fichier + .json non encore enrichies dans /var/telegram-inbox/ et /var/hermes-work-output/
Traitement
Lecture réelle du contenu (texte direct, photo via vision moondream, PDF texte natif, audio via faster-whisper) puis classement par LLM local (gemma4:12b) : ajoute content_summary, suggested_destination, confidence, suggested_tags
Fréquence
timer systemd, toutes les heures
Confidentialité
Variable — peut toucher de l'Orange/Rouge, d'où le traitement 100% local (voir garde-fou)
Garde-fou — tout le traitement IA reste local (Ollama), jamais de routage cloud pour ce contenu potentiellement Orange/Rouge. Hermès n'a et n'aura jamais d'accès SSH vers le Mac : le sens de circulation est toujours VPS → Mac, jamais l'inverse.

Entrée
Contenu enrichi, récupéré par SCP/SSH depuis le VPS
Traitement
process_inbox_local.py suit la suggestion Hermès si confiance haute, sinon retombe sur un classement par mots-clés locaux (projet actif > casquette > ressource > archive > inbox)
Stockage
Note texte → .md avec tags en frontmatter ; photo/document/audio → fichier brut conservé + note .md compagnon (embed + tags), dans 1_Idées/, 2_Projets/, 3-Casquettes/, 4-Ressources/ ou 5-Archives/
Fréquence
launchd, inbox Telegram 2×/jour · dépôt Hermès toutes les 30 min
Confidentialité
Variable — hérite du niveau de la capture d'origine
02

Veille (Wallabag)

Lecture externe qui arrive toute seule : flux RSS suivis et newsletters mail, poussés dans un second cerveau de lecture avant de rejoindre Obsidian.

Entrée
14 flux : Eliott Meunier, Renaud Dékode, OpenAI, DeepMind, Google AI, Hugging Face, NVIDIA, 4 releases GitHub (Ollama, llama.cpp, LangChain, Open WebUI), 3 newsletters IA
Traitement
Tags calculés par mots-clés (domaine/ia etc.) avant envoi ; au premier sync d'un flux, plafond de 15 entrées importées (le reste marqué « vu » sans être réimporté)
Stockage
Wallabag (self-hosted, VPS)
Fréquence
timer systemd, toutes les 12h
Confidentialité
Vert — sources publiques
Garde-fou — le plafond premier-sync a été ajouté après l'incident du 22/07 : OpenAI et Hugging Face avaient livré tout leur historique (2111 articles d'un coup) au lieu du récent.

Entrée
Boîtes de réception des 6 comptes mail (via AppleScript / Mail.app), détection newsletter par marqueurs (« se désabonner »...)
Traitement
Filtrage du bruit connu (SENDER_BLOCKLIST : FDJ, LinkedIn, Veepee, eToro, Interencheres, Famileo), tags calculés, contenu poussé directement (pas de fetch d'URL)
Stockage
Wallabag
Fréquence
cron Mac, quotidien 7h30
Confidentialité
Vert — contenu marketing/public, pas de correspondance personnelle

Entrée
Entrées Wallabag (non lues + archivées)
Traitement
Plugin obsidian-wallabag, tags Wallabag reportés nativement dans le frontmatter de la note créée
Stockage
1_Idées/wallabag-inbox/, notes littéraires .md
Fréquence
manuel ou au démarrage d'Obsidian
Confidentialité
Vert — hérite du niveau des entrées Wallabag
03

Distillation en notes permanentes

La seule étape volontairement non automatisée : transformer une note littéraire en idée autonome, reformulée avec les mots de Xavier.

Entrée
Notes littéraires de 1_Idées/wallabag-inbox/ et 1_Idées/telegram-inbox/, triées à la main
Traitement
Xavier choisit et reformule l'idée centrale ; Claude propose des brouillons/candidats mais ne décide jamais de ce qui mérite d'être gardé
Stockage
4-Ressources/Notes permanentes/, pool plat (pas de sous-dossier par thème), tags type/idee + domaine/... optionnel, lien wiki vers la note d'origine
Fréquence
manuel, en session
Confidentialité
Vert — idées reformulées, pas de chiffre ni de donnée commerciale précise

Entrée
Plusieurs notes permanentes qui partagent un thème
Traitement
Une MOC (tag type/moc) les relie avec une question directrice ; si le thème sert concrètement une casquette/un projet, un pointeur (section « Voir aussi ») est ajouté dans le CLAUDE.md local correspondant — jamais de duplication
Stockage
Reste dans le même pool plat que les notes permanentes
Fréquence
manuel, en session
Confidentialité
Vert
Garde-fou — un détecteur de notes orphelines (notes_permanentes_orphelines.py) signale les notes sans aucun lien entrant, remonté dans /afternoon.
04

Données business

Ventes, stocks et prévisions des activités opérationnelles : la seule catégorie qui alimente des décisions financières directes.

Entrée
Pizzeria : export Playwright headless direct. La Plage : mail Z quotidien (Gmail)
Traitement
Pizzeria : session persistante + parsing XLSX. La Plage : scénario Make (Watch Gmail → regex → download → POST multipart) → Edge Function import-laddition
Stockage
Pizzeria : 3-Casquettes/Pizzeria des Lacs/laddition/exports/. La Plage : Supabase (projet terralac-tip)
Fréquence
Pizzeria : cron 23h55 + mensuel · La Plage : déclenché par réception du mail
Confidentialité
Orange — chiffres financiers détaillés, à anonymiser avant tout usage IA externe

Entrée
Ventes et stocks des distributeurs Clairvaux et Pont-de-Poitte
Traitement
Export Playwright headless
Stockage
3-Casquettes/Pizzeria des Lacs/mypizzadoor/exports/AAAA-MM-JJ/
Fréquence
cron quotidien 5h + relevé stocks à la demande
Confidentialité
Orange — ventes et stocks par point de vente

Entrée
Ventes La Plage (via L'Addition) + météo (Open-Meteo)
Traitement
Moteur de prévision weekday-weather-ols, Edge Functions sync-weather / run-forecast
Stockage
Supabase Postgres, exposé via l'app terralac-tip.pages.dev
Fréquence
pg_cron quotidien, 03h30/04h15 UTC
Confidentialité
Orange — prévisions construites sur des ventes réelles

Entrée
Génération de post (Claude via Make) ou nouvel avis Google My Business
Traitement
Validation par Telegram (post) ou scoring/escalade (avis ≤3★ en attente humaine, 4-5★ auto-publiés)
Stockage
Facebook / réponses Google, Data Store Make par casquette
Fréquence
hebdomadaire (génération) · continu (avis)
Confidentialité
Vert — contenu déjà public par nature (posts et avis publiés)
05

Sécurité & santé du système

Rien ne décide à la place de Xavier ici : uniquement de la détection, remontée en silence si tout va bien.

Vérifie
Fraîcheur des exports Mac, jobs launchd attendus, accessibilité VPS, sécurité Ollama (jamais republié sur 0.0.0.0)
Alerte
Notification macOS uniquement si échec
Fréquence
cron quotidien 7h
Confidentialité
Vert — état technique uniquement

Vérifie
Fichiers requis, contenu CONTEXT/HISTORY.md, settings Claude Code, liens cassés dans les CLAUDE.md
Alerte
Notification macOS si échec ou avertissement
Fréquence
cron hebdomadaire, lundi 7h10
Confidentialité
Vert

Vérifie
Notes permanentes orphelines · volume de wallabag-inbox (seuil 30 fichiers) · stock distributeurs (seuil 10)
Alerte
Ligne affichée dans le briefing, silencieuse si rien à signaler
Fréquence
à chaque lancement de /afternoon
Confidentialité
Vert — compteurs et seuils, aucun détail nominatif
06

Mémoire système

Le contexte que Claude relit à chaque session, et sa seule copie poussée vers l'extérieur.

Contenu
CLAUDE.md (doctrine, structure), context/CONTEXT.md (profil, projets), context/HISTORY.md (journal chronologique), context/PROJETS.md (noyau actif, max 8), context/REGISTRE_FIABILITE.md (file d'attente de vérification), context/TAXONOMIE_TAGS.md (convention de tags)
Mise à jour
Manuelle, via /update en fin de session
Confidentialité
Orange — peut contenir des chiffres financiers ou des informations RH nominatives

Contenu
Un par casquette/projet (vision, état, prochaine action), chargé automatiquement quand Claude travaille dans ce dossier
Mise à jour
Manuelle, dès qu'une session fait évoluer le projet concerné
Confidentialité
Orange — les chiffres clés par casquette/projet peuvent être sensibles

Contenu
HERMES-CONTEXT.md / HERMES-BRIEF.md, résumé volontairement limité au niveau Vert (aucun chiffre précis, aucune donnée RH/financière nommée)
Sens
Mac → VPS uniquement, jamais l'inverse
Fréquence
cron quotidien 6h30
Confidentialité
Vert — contrainte de conception : jamais de chiffre précis ni de donnée RH nommée

Où vit tout ça — dossiers IPCRA & rôle d'Obsidian

Obsidian n'ouvre pas un système séparé : c'est l'app qui affiche /Users/xavier/IPCRA lui-même comme un « vault » (le dossier tel quel, plus sa config .obsidian/). Il ne fait tourner aucune automatisation — scripts et Claude écrivent les .md qu'Obsidian soit ouvert ou non. Son rôle : donner à Xavier une couche de lecture sur cette même arborescence. Panneau de liens retour (qui pointe vers quelle note — la base du principe MOC), panneau de tags (retrouver tout ce qui porte domaine/..., statut/... etc. sans ouvrir dossier par dossier), vue graphe des notes permanentes. Seul plugin communautaire installé : wallabag, qui rapatrie les articles (détail en section 02).

Pourquoi ce découpage en 7 dossiers — le classement ne se fait jamais par thème ou par client, mais par la nature de l'engagement : une capture brute n'a encore aucun engagement (1_Idées), un projet a un début et une fin visée (2_Projets), une casquette est une responsabilité permanente tant que Xavier la porte (3-Casquettes), une ressource est réutilisable par plusieurs activités à la fois (4-Ressources), une archive est un engagement terminé (5-Archives). Ainsi on sait toujours où chercher selon ce qu'est la chose, pas selon qui elle concerne. Clique un dossier pour le détail et des exemples de contenu réel.

DossierRôleLu dans Obsidian ?
Mémoire du système : profil, historique, projets actifs, registre de fiabilité, taxonomie de tagsOui, en continu
Capture brute à trier : brouillons, wallabag-inbox, telegram-inboxOui — c'est là que le tri se fait
Activités avec un début et une fin : IA, Formation, Le Panier GessienOui
Aires de responsabilité permanentes, un CLAUDE.md par casquetteOui
Réutilisable transverse : Artifacts, Automations, Déploiements, Notes permanentesNotes permanentes oui (Zettelkasten) — Automations/scripts non, fichiers exécutés, pas lus
Projets clôturés, clients inactifsRarement, recherche ponctuelle
Config Claude Code (commandes, skills, agents) et agents planifiésNon — couche d'exécution, jamais ouverte en lecture

Taxonomie de tags

Un tag ne remplace jamais le classement par dossier : il répond à des questions transversales qu'un dossier seul ne couvre pas (« tout ce qui touche la pizzeria, même dispersé entre 1_Idées et 3-Casquettes », « tout ce qui reste à trier »). Volontairement léger : 5 familles, jamais plus de 4-5 tags sur une même note.

FamilleRépond àExemplesQui la pose
domaine/...Quelle casquette ou quel projetdomaine/pizzeria, domaine/ia, domaine/persoAuto (pipeline) ou manuel
type/...Nature du contenutype/idee, type/action, type/lecture, type/mocSuggéré auto, confirmé à la revue
statut/...Où en est le traitementstatut/a-trier (défaut) → actiffait / archiveAuto à la capture, manuel ensuite
fiabilite/...Fiabilité d'une affirmation (optionnel)fiabilite/verifie, fiabilite/a-verifierManuel, seulement si affirmation à suivre
origine/...Traçabilité de la captureorigine/telegram, origine/hermes, origine/wallabag-rssToujours automatique, jamais à la main

Le principe MOC

Une MOC (Map of Content) relie plusieurs notes permanentes autour d'un thème, taguée type/moc. Elle reste dans le même pool plat que les notes qu'elle relie — jamais un sous-dossier, jamais un classement rigide. Deux existent aujourd'hui : et .

Une MOC-passerelle est une MOC dont le thème sert concrètement le travail sur une casquette ou un projet. Sa découvrabilité se fait par un pointeur, jamais une copie : une ligne « Voir aussi » ajoutée dans le CLAUDE.md local concerné, qui renvoie vers la MOC. C'est le seul pont entre le pool plat des notes permanentes et le contenu opérationnel de 3-Casquettes/ / 2_Projets/.

Automatisations & agents — vue chronologique

Tout ce qui tourne sans que Xavier n'ait à y penser, dans l'ordre de la journée. Chaque nom renvoie à sa fiche complète (même contenu que dans les sections 01 à 06 ci-dessus, regroupé ici par horaire plutôt que par catégorie).

Heure / déclencheurAutomatisationCatégorie
Continu, 24h/24Capture
Toutes les heuresCapture
launchd, 2×/jour + 30 minCapture
Toutes les 12hVeille
Quotidien 7h30Veille
Manuel / démarrage ObsidianVeille
Manuel, en sessionDistillation
Manuel, en sessionDistillation
Quotidien 5hBusiness
Cron 23h55 + mensuel / événement mailBusiness
pg_cron 03h30/04h15 UTCBusiness
Hebdomadaire + continuBusiness
Cron quotidien 6h30Mémoire
Cron quotidien 7hSécurité
Cron hebdo lundi 7h10Sécurité
À chaque /afternoonSécurité
Manuelle, via /updateMémoire
Manuelle, dès évolutionMémoire

Agents Claude spécialisés

Chaque type de donnée, en un coup d'œil

Même contenu que les sections ci-dessus, lu par type de donnée plutôt que par mécanisme.

Type de donnée Entrée Traitement Destination Fréquence Confidentialité
Texte / note vocale Bot Telegram djefrey Hermès (lecture directe / transcription faster-whisper) .md + tags, dossier selon destination suggérée Horaire + rapatriement 2×/jour Variable
Photo / document Bot Telegram djefrey Hermès (vision moondream / minicpm, extraction PDF) Fichier brut + note .md compagnon Horaire + rapatriement 2×/jour Variable
Article web (flux suivi) Pont RSS Tags par mots-clés, plafond anti-backlog Wallabag → 1_Idées/wallabag-inbox/ Toutes les 12h Vert
Newsletter mail Pont newsletter (6 comptes) Détection + filtrage bruit + tags Wallabag → 1_Idées/wallabag-inbox/ Quotidien 7h30 Vert
Idée distillée Note littéraire choisie à la main Reformulation manuelle (Xavier) 4-Ressources/Notes permanentes/ Manuel, en session Vert
Vente pizzeria L'Addition (Playwright) Parsing XLSX 3-Casquettes/Pizzeria des Lacs/laddition/ Quotidien 23h55 Orange
Vente La Plage Mail Z L'Addition Make → Edge Function import-laddition Supabase TIP À réception du mail Orange
Stock distributeur mypizzadoor (Playwright) Export direct 3-Casquettes/Pizzeria des Lacs/mypizzadoor/ Quotidien 5h Orange
Avis Google Google My Business Scoring Make, auto-publication 4-5★ Réponse publiée ou file d'attente humaine Continu Vert
État des pipelines Exports, crons, VPS, Ollama health_check.py Notification macOS si échec Quotidien 7h Vert
Intégrité du workspace Fichiers requis, liens CLAUDE.md smoke.sh Notification macOS si échec/avertissement Hebdomadaire, lundi 7h10 Vert
Contexte partagé Sessions Claude Édition manuelle via /update CLAUDE.md, context/*.md Fin de session Orange

Journal des dernières corrections — 22 juillet 2026

Nettoyage de l'hygiène des tags, déclenché en creusant pourquoi le graphe Obsidian était devenu illisible.