Commit graph

192 commits

Author SHA1 Message Date
bcdb4f8b2a
feat(stt): mode texte + sélection de modèle (client→serveur par requête) (#7)
Serveur : /v1/ask accepte un model optionnel (validé contre STT_ALLOWED_MODELS),
nouvel endpoint GET /v1/models (défaut + alias autorisés). Pas de switch global.

Client : 'stt --text' (chat texte simple sans micro/HUD), '--model hermes|claude|qwen|opus'
(noms courts → alias LiteLLM), commandes /model et /models en mode texte. Le modèle
choisi est envoyé au serveur à chaque requête (voix comme texte).


Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-17 13:36:06 +02:00
47936b0088
fix(stt): joindre LiteLLM en IP directe (192.168.10.1:4000) (#6)
L'indirection litellm-ext (Service sans sélecteur + Endpoints manuel) ne routait pas
('All connection attempts failed'). open-webui joint LiteLLM en IP directe — on copie
ce pattern éprouvé et on supprime litellm-external.yaml.


Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-17 13:19:51 +02:00
35f37bd293
fix(stt): imagePullSecret ghcr-pull pour l'image privée ghcr (#5)
* fix(stt): imagePullSecret ghcr-pull pour l'image privée

Le Deployment référence un secret de pull ghcr-pull (ns ai) — image ghcr privée.
Secret créé manuellement (même pratique que ghostfolio-secret, non versionné).
Doc d'install dans stt/README.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT

* fix(stt): securityContext conforme PodSecurity restricted (ns ai)

runAsNonRoot + runAsUser 1000 + seccompProfile RuntimeDefault (pod),
allowPrivilegeEscalation false + drop ALL caps (conteneur).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-17 12:40:34 +02:00
e390ddef12
feat(stt): assistant vocal Jarvis — client pipx + STT-server in-cluster (#4)
* feat(stt): cadrage + squelette assistant vocal Jarvis

Conception validée du projet STT — assistant vocal/HUD du homelab Funk :
- HUD web sur-mesure + STT/TTS local (faster-whisper + Piper)
- Packaging commande pipx (stt), démarrage auto systemd --user
- Cerveau 3 modes + auto-détection LAN : hermes / local-direct / claude-direct
- Mémoire 3 tiers : SQLite local + Qdrant s01 + GitHub (distillée, versionnée)

Réutilise tools/hermes-voice, LiteLLM, Hermes Agent. Squelette + doc admin/ia/stt.md,
implémentation par phases (roadmap dans le doc).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT

* feat(stt): phase 1-2 — commande, backend vocal, routeur cerveau, HUD MVP

- cli.py : commande `stt` (--setup, --mode, --no-tts)
- config.py : défauts embarqués + ~/.config/stt/stt.toml
- voice/engine.py : refactor de hermes-voice en classe avec callbacks d'état
- brain/router.py : 3 modes (hermes SSH / local LiteLLM / claude API) + auto-détection LAN
- server/app.py : HTTP statique (HUD) + websocket (états → HUD)
- memory/store.py : tier local SQLite (Qdrant + sync GitHub = phase 4)
- hud/index.html : HUD MVP (visualiseur d'état + conversation)

Vérifié hors-LAN : py_compile, --help, config, routeur (→ claude), mémoire SQLite.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT

* fix(stt): embarquer le HUD dans le package (404 après pipx install)

Le HUD était à la racine du projet (stt/hud/) donc absent du package installé
par pipx → HTTP 404 sur /. Déplacé dans le package (stt/stt/hud/) + package-data,
HUD_DIR ajusté. Vérifié : le wheel contient bien stt/hud/index.html.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT

* refactor(stt): pivot client-serveur — STT-server in-cluster + client pipx

Sépare STT en deux :
- stt/client/ : commande `stt` (pipx), voix locale (Whisper/Piper) + HUD ; envoie
  le texte au serveur via api.py (ServerClient → POST /v1/ask). URL serveur paramétrable,
  pas de cerveau local (suppression du routeur 3 modes).
- stt/server/ : STT-server FastAPI (conteneur), /healthz + /v1/ask → LiteLLM (Qwen3/Claude).

Déploiement cluster :
- k8s/apps/stt/ : Deployment, Service, IngressRoute (stt.lab.local), litellm-ext
  (Service + Endpoints → 192.168.10.1:4000 pour joindre LiteLLM hors cluster)
- k8s/apps-of-apps/apps/stt.yaml : Application ArgoCD (depuis main)
- .github/workflows/build-stt-server.yml : build/push image → ghcr.io/alkatrazz24/funk-stt-server

Inférence/chat seulement (outils Hermes 'agir sur Funk' = phase ultérieure, API :8080 à spécifier).
Vérifié : py_compile client+serveur, YAML manifests, ServerClient.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013FmcxGsyXZXogiAHQLjnZT

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-17 12:08:58 +02:00
22d40023e1 docs(n8n): rapports portefeuille — news en FR + piège apostrophe JS + édition via API
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 13:24:21 +02:00
047785be1a docs(n8n): rapports portefeuille (hebdo+quotidien) auth durable + news + recommandations
Auth via jeton de securite (auto-renouvelle, plus d'expiration JWT). News par
action via Yahoo RSS dans le noeud Code. Analyse approfondie + recommandations.
Caveat: Qwen 8B peut se tromper sur les chiffres -> se fier au tableau exact.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 23:44:27 +02:00
69818c29a8 docs(n8n): workflow Rapport Portefeuille Hebdo (Ghostfolio + Qwen)
Cron dimanche 18h -> API Ghostfolio (perf+holdings) -> Qwen commente -> email.
Filtre le cash, poids relatifs aux actions. Auth JWT en dur (exp 2026-12-12).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 23:31:35 +02:00
e61f1c76fc docs(n8n): fix parsing webhook alertes (0 alerte/unknown) + filtre anti-bruit
Le noeud Format Alertes lisait body.alerts/body.status au lieu de body.body.* ->
tous les mails affichaient 0 alerte/unknown meme en cas de vraie alerte.
Correctif applique au workflow (live) + filtre Watchdog/InfoInhibitor/severity none.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 21:37:13 +02:00
6437df5ff7 revert(ghostfolio): retirer BASE_CURRENCY (no-op en v3.11)
La devise interne est figée à USD en v3.11 (BASE_CURRENCY non pris en compte) ;
EUR devient disponible via la collecte du taux EUR/USD, pas via cet env.
La devise d'affichage se choisit par utilisateur dans Paramètres.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 14:50:22 +02:00
6b6103992c feat(ghostfolio): devise système BASE_CURRENCY=EUR
Avoirs majoritairement en euros — fixe la devise de base système à l'installation
pour un affichage natif en EUR sans dépendre d'un taux de change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 14:30:58 +02:00
b615e9e0fd docs(ghostfolio): sslmode=disable + caveat grant schema public
Corrige la procédure : sslmode=disable (PG s01 sans SSL, seed Prisma 7.x échoue
en TLS sinon) et documente le GRANT ALL ON SCHEMA public requis pour les bases
possédées par postgres.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 14:20:05 +02:00
4f1c03df08 feat(ghostfolio): suivi de portefeuille sur k8s (PG s01 + Redis)
Nouvel app ArgoCD ghostfolio (namespace ai) : suivi/analyse de portefeuille
boursier. Base PostgreSQL dédiée sur storage-01, Redis in-cluster pour le cache.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 14:04:19 +02:00
0aa4c3650d docs(ansible): README par rôle (19) + gaps IaC découverts à l'audit
Audit complet des rôles vs état réel du cluster. Chaque rôle a maintenant
un README.md : but, variables (défauts + surcharges host_vars/vault),
handlers, vérifications, caveats.

Gaps découverts et documentés :
- minio : rôle VIDE (tasks/main.yml sans aucune tâche), service inactif —
  placeholder à implémenter ou retirer (ports 9000/9001 ouverts pour rien)
- llama_server : ne gère que l'instance GPU :1234 — les services CPU
  llama-server-system :1236 et llama-server-monitor :1237 sont créés à la
  main sur gpu-01, non reproductibles par make apply-gpu (+ un
  llama-server-dev.service non documenté présent sur l'hôte)
- hermes_auto_improve : defaults port/repo/branch/log non consommés
  (valeurs en dur dans les scripts), défaut branch obsolète
- lm_studio : README de dépréciation, candidat suppression

Tables admin/ops/ansible.md, README.md et CLAUDE.md corrigées en conséquence.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 15:21:24 +02:00
40fd7f0868 docs: synchroniser la doc avec l'état réel du cluster (revue Ansible + incident Qdrant)
- ops/ansible.md : tableau complet des rôles par playbook (15 storage-01, 6 gpu-01),
  caveat hermes_agent, note lm_studio inutilisé
- ia/hermes-auto-improve.md : NOUVEAU — doc du worker déployé (trigger :9095,
  modes du script, endpoints, PR squash, pièges connus)
- k8s/n8n.md : workflow 3 "Hermes Doc Worker" documenté (22h, /trigger/all,
  boucle de polling), clé API → vault
- incidents.md : Qdrant crash-loop depuis 2026-06-05 (segment funk-docs corrompu,
  invisible dans --state=failed) + procédure de réparation
- ia/rag.md : bandeau RAG HS
- CLAUDE.md : état 2026-06-10, rôle hermes_auto_improve, 3 workflows n8n,
  vault complet (n8n_api_key, Gmail au lieu de Brevo), section auto-improve
- README.md : lien admin/ops/cluster.md corrigé, arborescence complète
  (tools/, admin/, progress/, skills), roadmap à jour
- PROGRESS.md : entrée 2026-05-29 (migration NVMe) qui existait sans être référencée
- ansible : suppression effective des templates daily timer (cleanup b9be63c)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 15:11:53 +02:00
ddff71a0fb chore(vault+ansible): clé API n8n dans vault + cleanup rôle hermes_auto_improve
- vault.yml : ajout vault_n8n_api_key (clé API n8n "claude", label n8n UI)
- hermes_auto_improve tasks : retirer déploiement timer/service daily (scheduling via n8n)
- hermes_auto_improve handlers : retirer handler Reload systemd daemon (inutilisé)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 14:01:46 +02:00
b9be63cd59 refactor(hermes-auto-improve): scheduling via n8n — supprimer timer systemd
Le scheduling est géré par n8n (workflow "Hermes Doc Worker — Funk-lab") :
- Schedule 30min désactivé dans n8n
- Schedule 22h → POST /trigger/all (tous les docs, timeout 2h)
- Attendre run 5min → 120min dans le workflow n8n

Ansible : retirer les templates daily service/timer (plus nécessaires)
auto-improve.py : flag --all conservé (utilisé par le trigger /trigger/all)
trigger-server.py : timeout 7200s conservé pour les runs --all

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 13:58:00 +02:00
7d02efd9fa feat(hermes-auto-improve): passe quotidienne complète à 22h (tous les docs)
- Ajout systemd timer hermes-auto-improve-daily.timer (22h00, Persistent=true)
- Service oneshot : --all puis --daily-pr (TimeoutSec=7200 pour 28 fichiers)
- auto-improve.py : flag --all qui bypass MAX_FILES et traite tout admin/
- trigger-server.py : timeout 600s → 7200s pour les runs --all via HTTP

La rotation par batch (MAX_FILES=5) reste active pour les triggers n8n
à la demande. Le workflow n8n 30-min doit être désactivé manuellement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 13:46:14 +02:00
3780c90804 refactor(hermes-doc-enrich): append-only — section État vérifié, jamais de réécriture
Le script n'écrase plus les docs existants. Pour chaque fichier admin/ :
- Inspecte le cluster en read-only (systemctl, kubectl, nft, etc.)
- Demande à Hermes d'écrire UNIQUEMENT une section "## État vérifié — DATE"
- Appende cette section au doc (ou remplace la précédente)
- Commit local dans hermes/daily-work, pas de push
- rag-ingest Qdrant à la fin du batch

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 13:46:14 +02:00
d79ebf7d36 fix(hermes-auto-improve): squash merge + correction PR existante dans create_github_pr
- GitHub repo configuré squash-only (allow_merge_commit=false, allow_rebase_merge=false)
- create_github_pr() vérifie si une PR hermes/daily-work est déjà ouverte :
  si oui → met à jour titre+body (pas de PR dupliquée)
  si non → crée une nouvelle PR
- Supprime le bug de silence sur "a pull request for branch X already exists"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 13:46:14 +02:00
e62832fd71 feat(hermes-auto-improve): ajouter hermes-doc-rewrite pour réécriture doc basée sur état cluster
Script hermes-doc-rewrite : inspecte l'état réel du cluster (read-only)
et demande à Hermes de réécrire chaque fichier admin/ avec des infos exactes.
Commit local dans hermes/daily-work, pas de push automatique.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 13:46:14 +02:00
alkatrazz
994a2f1e54 fix(hermes-auto-improve): configurer user.email/name git dans git_sync() pour root 2026-06-10 13:46:14 +02:00
a6f5207aa5
merge: rapports Hermes analyse documentation 03-05 juin 2026
[Hermes] Rapport documentation — 2026-06-03
2026-06-05 11:41:54 +02:00
Hermes Bot
18e5174166 docs(hermes): rapport analyse 2026-06-05_11-30 — 5 fichiers
Analysés : litellm.md, llama_server.md, rag.md, rocm.md, incidents.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 11:32:58 +02:00
Hermes Bot
5d240fe2f0 docs(hermes): rapport analyse 2026-06-05_11-00 — 5 fichiers
Analysés : README.md, alertmanager-webhook.md, hermes-souls.md, hermes-voice.md, hermes.md
À améliorer : 1/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 11:03:02 +02:00
Hermes Bot
00869a61cd docs(hermes): rapport analyse 2026-06-05_10-30 — 3 fichiers
Analysés : ansible.md, cluster.md, systeme.md
À améliorer : 0/3

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 10:32:04 +02:00
Hermes Bot
29f45959bc docs(hermes): rapport analyse 2026-06-05_10-00 — 5 fichiers
Analysés : k9s.md, monitoring.md, n8n.md, open-webui.md, talos.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 10:02:55 +02:00
Hermes Bot
0b3a934704 docs(hermes): rapport analyse 2026-06-05_09-30 — 5 fichiers
Analysés : README.md, gpu-01.md, kubernetes.md, storage-01.md, argocd.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 09:32:58 +02:00
Hermes Bot
8f59e5cacb docs(hermes): rapport analyse 2026-06-05_09-00 — 5 fichiers
Analysés : dnsmasq.md, email.md, nfs.md, reseau.md, ssh.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 09:02:37 +02:00
Hermes Bot
037ea15884 docs(hermes): rapport analyse 2026-06-05_08-30 — 5 fichiers
Analysés : litellm.md, llama_server.md, rag.md, rocm.md, incidents.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 08:33:03 +02:00
Hermes Bot
c1cef4869c docs(hermes): rapport analyse 2026-06-05_08-00 — 5 fichiers
Analysés : README.md, alertmanager-webhook.md, hermes-souls.md, hermes-voice.md, hermes.md
À améliorer : 2/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 08:03:38 +02:00
Hermes Bot
27f3397b41 docs(hermes): rapport analyse 2026-06-05_07-30 — 3 fichiers
Analysés : ansible.md, cluster.md, systeme.md
À améliorer : 0/3

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 07:32:12 +02:00
Hermes Bot
fbc3f34d9d docs(hermes): rapport analyse 2026-06-05_07-00 — 5 fichiers
Analysés : k9s.md, monitoring.md, n8n.md, open-webui.md, talos.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 07:02:51 +02:00
Hermes Bot
5d36731364 docs(hermes): rapport analyse 2026-06-05_06-30 — 5 fichiers
Analysés : README.md, gpu-01.md, kubernetes.md, storage-01.md, argocd.md
À améliorer : 1/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 06:33:05 +02:00
Hermes Bot
9ea51b8101 docs(hermes): rapport analyse 2026-06-05_06-00 — 5 fichiers
Analysés : dnsmasq.md, email.md, nfs.md, reseau.md, ssh.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 06:02:47 +02:00
Hermes Bot
083bb12660 docs(hermes): rapport analyse 2026-06-05_05-30 — 5 fichiers
Analysés : litellm.md, llama_server.md, rag.md, rocm.md, incidents.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 05:32:51 +02:00
Hermes Bot
7608b2bdac docs(hermes): rapport analyse 2026-06-05_05-00 — 5 fichiers
Analysés : README.md, alertmanager-webhook.md, hermes-souls.md, hermes-voice.md, hermes.md
À améliorer : 1/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 05:03:12 +02:00
Hermes Bot
6673c9dd4c docs(hermes): rapport analyse 2026-06-05_04-30 — 3 fichiers
Analysés : ansible.md, cluster.md, systeme.md
À améliorer : 0/3

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 04:32:05 +02:00
Hermes Bot
98e1bb2a1b docs(hermes): rapport analyse 2026-06-05_04-00 — 5 fichiers
Analysés : k9s.md, monitoring.md, n8n.md, open-webui.md, talos.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 04:02:50 +02:00
Hermes Bot
c7eb1e69dc docs(hermes): rapport analyse 2026-06-05_03-30 — 5 fichiers
Analysés : README.md, gpu-01.md, kubernetes.md, storage-01.md, argocd.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 03:33:03 +02:00
Hermes Bot
ed9c7921cd docs(hermes): rapport analyse 2026-06-05_03-00 — 5 fichiers
Analysés : dnsmasq.md, email.md, nfs.md, reseau.md, ssh.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 03:02:42 +02:00
Hermes Bot
38047c5a86 docs(hermes): rapport analyse 2026-06-05_02-30 — 5 fichiers
Analysés : litellm.md, llama_server.md, rag.md, rocm.md, incidents.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 02:32:59 +02:00
Hermes Bot
7e6abac67b docs(hermes): rapport analyse 2026-06-05_02-00 — 5 fichiers
Analysés : README.md, alertmanager-webhook.md, hermes-souls.md, hermes-voice.md, hermes.md
À améliorer : 1/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 02:02:48 +02:00
Hermes Bot
2f8763b7d8 docs(hermes): rapport analyse 2026-06-05_01-30 — 3 fichiers
Analysés : ansible.md, cluster.md, systeme.md
À améliorer : 0/3

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 01:32:11 +02:00
Hermes Bot
1788328c09 docs(hermes): rapport analyse 2026-06-05_01-00 — 5 fichiers
Analysés : k9s.md, monitoring.md, n8n.md, open-webui.md, talos.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 01:02:47 +02:00
Hermes Bot
ed1ead07cf docs(hermes): rapport analyse 2026-06-05_00-30 — 5 fichiers
Analysés : README.md, gpu-01.md, kubernetes.md, storage-01.md, argocd.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 00:32:53 +02:00
Hermes Bot
ba0deb9cdb docs(hermes): rapport analyse 2026-06-05_00-00 — 5 fichiers
Analysés : dnsmasq.md, email.md, nfs.md, reseau.md, ssh.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-05 00:03:27 +02:00
Hermes Bot
60f27a19bb docs(hermes): rapport analyse 2026-06-04_23-30 — 5 fichiers
Analysés : litellm.md, llama_server.md, rag.md, rocm.md, incidents.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-04 23:33:16 +02:00
Hermes Bot
0d10eb9fd7 docs(hermes): rapport analyse 2026-06-04_23-00 — 5 fichiers
Analysés : README.md, alertmanager-webhook.md, hermes-souls.md, hermes-voice.md, hermes.md
À améliorer : 1/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-04 23:03:04 +02:00
Hermes Bot
dfc5afc06e docs(hermes): rapport analyse 2026-06-04_22-30 — 3 fichiers
Analysés : ansible.md, cluster.md, systeme.md
À améliorer : 0/3

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-04 22:32:00 +02:00
Hermes Bot
b6c60fb84c docs(hermes): rapport analyse 2026-06-04_22-00 — 5 fichiers
Analysés : k9s.md, monitoring.md, n8n.md, open-webui.md, talos.md
À améliorer : 0/5

Co-Authored-By: Hermes <hermes@funk.lab>
2026-06-04 22:02:57 +02:00