IPCRA — infrastructure de données
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.
Confidentialité (doctrine CLAUDE.md)
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
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.
/opt/ipcra-telegram-bot/var/telegram-inbox/ (VPS) : fichier + .json de métadonnées (timestamp, type, filename, caption).json non encore enrichies dans /var/telegram-inbox/ et /var/hermes-work-output/moondream, PDF texte natif, audio via faster-whisper) puis classement par LLM local (gemma4:12b) : ajoute content_summary, suggested_destination, confidence, suggested_tagsprocess_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).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/Lecture externe qui arrive toute seule : flux RSS suivis et newsletters mail, poussés dans un second cerveau de lecture avant de rejoindre Obsidian.
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é)SENDER_BLOCKLIST : FDJ, LinkedIn, Veepee, eToro, Interencheres, Famileo), tags calculés, contenu poussé directement (pas de fetch d'URL)obsidian-wallabag, tags Wallabag reportés nativement dans le frontmatter de la note créée1_Idées/wallabag-inbox/, notes littéraires .mdLa seule étape volontairement non automatisée : transformer une note littéraire en idée autonome, reformulée avec les mots de Xavier.
1_Idées/wallabag-inbox/ et 1_Idées/telegram-inbox/, triées à la main4-Ressources/Notes permanentes/, pool plat (pas de sous-dossier par thème), tags type/idee + domaine/... optionnel, lien wiki vers la note d'originetype/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 duplicationnotes_permanentes_orphelines.py) signale les notes sans aucun lien entrant, remonté dans /afternoon.Ventes, stocks et prévisions des activités opérationnelles : la seule catégorie qui alimente des décisions financières directes.
import-laddition3-Casquettes/Pizzeria des Lacs/laddition/exports/. La Plage : Supabase (projet terralac-tip)3-Casquettes/Pizzeria des Lacs/mypizzadoor/exports/AAAA-MM-JJ/weekday-weather-ols, Edge Functions sync-weather / run-forecastterralac-tip.pages.devRien ne décide à la place de Xavier ici : uniquement de la détection, remontée en silence si tout va bien.
0.0.0.0)CLAUDE.mdwallabag-inbox (seuil 30 fichiers) · stock distributeurs (seuil 10)Le contexte que Claude relit à chaque session, et sa seule copie poussée vers l'extérieur.
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)/update en fin de sessionHERMES-CONTEXT.md / HERMES-BRIEF.md, résumé volontairement limité au niveau Vert (aucun chiffre précis, aucune donnée RH/financière 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.
| Dossier | Rôle | Lu dans Obsidian ? |
|---|---|---|
| Mémoire du système : profil, historique, projets actifs, registre de fiabilité, taxonomie de tags | Oui, en continu | |
Capture brute à trier : brouillons, wallabag-inbox, telegram-inbox | Oui — c'est là que le tri se fait | |
| Activités avec un début et une fin : IA, Formation, Le Panier Gessien | Oui | |
Aires de responsabilité permanentes, un CLAUDE.md par casquette | Oui | |
| Réutilisable transverse : Artifacts, Automations, Déploiements, Notes permanentes | Notes permanentes oui (Zettelkasten) — Automations/scripts non, fichiers exécutés, pas lus | |
| Projets clôturés, clients inactifs | Rarement, recherche ponctuelle | |
| Config Claude Code (commandes, skills, agents) et agents planifiés | Non — 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.
| Famille | Répond à | Exemples | Qui la pose |
|---|---|---|---|
domaine/... | Quelle casquette ou quel projet | domaine/pizzeria, domaine/ia, domaine/perso | Auto (pipeline) ou manuel |
type/... | Nature du contenu | type/idee, type/action, type/lecture, type/moc | Suggéré auto, confirmé à la revue |
statut/... | Où en est le traitement | statut/a-trier (défaut) → actif → fait / archive | Auto à la capture, manuel ensuite |
fiabilite/... | Fiabilité d'une affirmation (optionnel) | fiabilite/verifie, fiabilite/a-verifier | Manuel, seulement si affirmation à suivre |
origine/... | Traçabilité de la capture | origine/telegram, origine/hermes, origine/wallabag-rss | Toujours 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éclencheur | Automatisation | Catégorie |
|---|---|---|
| Continu, 24h/24 | Capture | |
| Toutes les heures | Capture | |
| launchd, 2×/jour + 30 min | Capture | |
| Toutes les 12h | Veille | |
| Quotidien 7h30 | Veille | |
| Manuel / démarrage Obsidian | Veille | |
| Manuel, en session | Distillation | |
| Manuel, en session | Distillation | |
| Quotidien 5h | Business | |
| Cron 23h55 + mensuel / événement mail | Business | |
| pg_cron 03h30/04h15 UTC | Business | |
| Hebdomadaire + continu | Business | |
| Cron quotidien 6h30 | Mémoire | |
| Cron quotidien 7h | Sécurité | |
| Cron hebdo lundi 7h10 | Sécurité | |
| À chaque /afternoon | Sécurité | |
| Manuelle, via /update | Mémoire | |
| Manuelle, dès évolution | Mémoire |
Agents Claude spécialisés
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.
node_modules de l'indexation Obsidian (.obsidian/app.json) — environ 2231 fichiers de dépendances npm (Mini-Apps, TIP) étaient indexés comme des notes du vault, gonflant le graphe et polluant la liste de tags.HISTORY.md et les fichiers agents (Pizzeria des Lacs, La Plage Doucier), pour ne plus être lus comme des tags Obsidian./ par - selon l'endpoint utilisé (domaine/ia → domaine-ia). normalize_wallabag_tags.py reconstruit la forme à slash, tourne désormais silencieusement à chaque /afternoon.rss ou newsletter seul), complétées directement via l'API Wallabag puis alignées en local.