flowchart TB
subgraph Users["Utilisateurs (10-20 employés)"]
U1[Employé 1]
U2[Employé 2]
U3[Employé ...]
end
subgraph Auth["Reverse Proxy"]
NGINX[Nginx]
AUTHELIA[Authelia]
end
subgraph Front["Interfaces Web"]
HW[hermes-webui]
WS[Portail Workspace]
end
subgraph Proxy["Observabilité"]
LLM[LiteLLM Proxy]
end
subgraph Agent["Hermes Agent"]
P1[Profil template par user]
end
subgraph Models["Modèles Ollama"]
LLM_M[Qwen 32B / Hermes 3-4]
EMB[nomic-embed-text]
end
subgraph Storage["Stockage"]
SQL[SQLite-vec par user]
FS[Dossier fichiers user]
SA[Sites HTML statiques]
end
subgraph Ingestion["Pipeline RAG"]
UP[Upload fichier]
CHK[Toggle Indexation]
OCR[OCR PDF]
CHUNK[Chunk + Embed]
end
U1 & U2 & U3 --> NGINX
NGINX --> AUTHELIA
AUTHELIA --> HW
AUTHELIA --> WS
HW --> LLM
WS --> LLM
LLM --> Agent
Agent --> LLM_M
Agent --> EMB
Agent --> FS
Agent --> SA
Agent --> SQL
WS --> UP --> CHK --> OCR --> CHUNK --> SQL
| Composant | Technologie | Justification |
|---|---|---|
| Orchestrateur IA | Hermes Agent (Nous Research) | Mémoire persistante, skills auto-créés, profils multi-utilisateurs natifs |
| Modèle principal | Qwen 32B / Hermes 3-4 Q4/Q5 | Bon équilibre performance / RAM / utilisateurs simultanés (via Ollama) |
| Embedding | nomic-embed-text / bge-small | Léger, local, sans dépendance externe |
| Interface | hermes-webui | Proche du feeling CLI Hermes, workspace intégré, personnalisable |
| Auth | Nginx + Authelia / Authentik | Reverse proxy, OIDC, rate limiting, MFA possible |
| Vector Store | SQLite-vec (1 fichier .db/user) | Zéro conteneur, isolation par fichier, backup simple |
| Pipeline ingestion | FastAPI + LlamaIndex | Upload, chunking, toggle RAG par document |
| Observabilité | LiteLLM → Prometheus + Grafana | Métriques par user, tokens, latence, saturation serveur |
| Stockage | /data/users/{username}/ | Dossier dédié par profil utilisateur |
| Sites statiques | Nginx → /static-apps/ | Publication HTML généré par Hermes |
| Serveur | HP AI Ready — 128 Go RAM | Lab dédié, non laptop, capacité correcte |
Upload d'une nouvelle norme → extraction automatique des changements vs version précédente. Interrogation directe des documents réglementaires.
Upload liasses fiscales → détection d'incohérences, écarts suspects entre exercices, génération de tableaux de bord et rapports d'audit.
Import suivi client → résumé ultra-court avant chaque rendez-vous. Rédaction réponses avec ton et formalité adaptés au client.
Upload CV → extraction points durs, questions personnalisées pour entretien. Simulation d'entretien (Mock Interview) avec l'agent en recruteur.
Mail brut → rédaction réponse professionnelle. Notes vocales de réunion → transcription + PV structuré avec plan d'action intégré.
Upload audio de réunion → transcription automatique → résumé exécutif → extraction décisions et action items. Archivage dans le workspace.
Analyse fichiers Excel complexes, automatisation via scripts Python, génération de mini-outils internes et dashboards interactifs.
Un employé crée une skill utile → la publie dans la marketplace → admin valide → tous les profils y accèdent. Diffusion virale des bonnes pratiques.
Document malveillant uploadé → exécution commandes indésirables. Probabilité faible (données internes), accepté dans le cadre safe lab.
4-7 utilisateurs actifs max avec modèle 32B. Au-delà : ralentissement. Solution : kill session + monitoring Prometheus.
Exécution scripts créés par l'agent ou l'utilisateur. Accepté (safe lab). Mitigation : utilisateur non-root, timeouts.
Un employé peut supprimer ses skills ou sa mémoire par accident. Résilience : workspace isolé, backups légers.
Profil Hermes, config Authelia, gateways. Mitigation : scripts automatisation profil template, un seul processus central.
Expérience dégradée si tous actifs simultanément. Mitigation : modèle 32B max, KV cache optimisé.
flowchart TD
A[Upload fichier] --> B[Stockage fichiers user]
B --> C{Activer RAG ?}
C -->|Oui| D[Chunking LlamaIndex]
D --> E[Embeddings nomic-embed-text]
E --> F[SQLite-vec .db user]
C -->|Non| G[Fichier dormant]
F --> H[Hermes interroge le .db]
H --> I[Reponse contextualisee]