Pourquoi
L'information dispersée est du bruit. GitHub, Gmail, Calendar, RSS, Home Assistant : chaque source parle un langage différent, à des moments différents. Lun'Acedia les écoute tous simultanément.
Principe de conception : les connecteurs classent par règles uniquement, jamais par LLM. Ce qui sort est un AcediaEvent typé : source, priorité, clé de dédup, corps. Des faits, pas des interprétations. L'interprétation appartient au consommateur.
Comment
Architecture event-driven : chaque connecteur (GitHub webhooks, Gmail OAuth2, Google Calendar/Tasks, RSS/Atom, Home Assistant) pousse des AcediaEvent dans un IngestionHub central. Déduplication par clé stable, TTL 7 jours. Les clients consomment via WebSocket (:4000) ou REST (:4001), protégés par bearer token. Actions retour via POST /api/actions : répondre un email, compléter une tâche, mettre à jour un événement. Couche IA optionnelle (openai, ollama, ou délégation à Natsume). FCM pour les notifications push Android.
01 Connecteurs GitHub webhooks, Gmail OAuth2, Google Calendar/Tasks, RSS/Atom, Home Assistant
02 IngestionHub Déduplication par clé stable, TTL 7 jours, classification par règles uniquement
03 EventBus WebSocket (:4000) + REST (:4001), AcediaEvent typés, bearer token
04 Actions Répondre email, compléter tâche, mettre à jour événement, FCM push Android
05 Couche IA Optionnelle : openai, ollama ou délégation Natsume. L'interprétation appartient au consommateur
Node.jsTypeScriptRESTWebSockets
GitHub ↗
Où en est-on
Connecteur GitHub notifications
Connecteur Gmail OAuth2
Connecteur Google Calendar / Tasks
Connecteur RSS / Atom
Bus d'événements central (WebSocket + REST)
Déduplication par clé stable (TTL 7j)
Actions retour (email · tâche · événement)
FCM push notifications Android
Docker-ready, bearer auth
En cours
- Connecteur Home Assistant
- Couche IA butler (délégation Natsume)
Ensuite
- Dashboard de monitoring web
- Règles de classification configurables via UI