mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 09:34:42 +02:00
docs: passe de cohérence documentaire (STT, Ghostfolio, embeddings, Qdrant)
Aligne la documentation sur l'état réel du cluster au 2026-06-18 : - Qdrant : crash-loop résolu le 17/06 (statut « HS / EN COURS » corrigé dans CLAUDE.md, README, admin/ia/rag.md, admin/incidents.md, admin/ia/stt.md). Précision : collection funk-docs supprimée lors de la réparation → re-ingest RAG encore à faire (pas de surévaluation du statut). - STT (assistant vocal « Jarvis ») : ajouté partout (était déployé mais non documenté). - Ghostfolio : ajouté partout (était déployé mais non documenté). - Embeddings dédiés nomic-embed-text :1238 : marqués opérationnels (roadmap README disait encore « TODO »). - llama-server : ×3 → ×4 (instance embeddings) ; gap IaC précisé (embeddings géré par le rôle, seules les 2 instances CPU restent manuelles). - Structure k8s/ corrigée dans CLAUDE.md : ajout stt/ + ghostfolio/, suppression des sous-dossiers traefik/ + metallb/ inexistants (installés via helm au bootstrap). - Namespaces et liste des secrets Vault (vault_pg_ghostfolio_password) complétés. - admin/README.md : index complété (~10 docs manquants : email, n8n, open-webui, ghostfolio, k9s, stt, rag, hermes-voice/souls/auto-improve, alertmanager-webhook). - Funk/ (conception d'origine : LM Studio + agents Goose, obsolète) déplacé sous archive/ avec bandeau « obsolète » + archive/README.md (historique git préservé). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017Qjq5jHiqNepnobJpHYpCa
This commit is contained in:
parent
e1ec26d546
commit
1f2d970398
17 changed files with 102 additions and 31 deletions
26
CLAUDE.md
26
CLAUDE.md
|
|
@ -6,17 +6,19 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||
|
||||
**Funk** — homelab IA composé d'un cluster Kubernetes (Talos) pour les services applicatifs, d'un hôte d'inférence LLM dédié (gpu-01 / llama-server ROCm), et d'un agent autonome (Hermes Agent) sur storage-01. Stack IaC complète : Ansible + talhelper + ArgoCD.
|
||||
|
||||
**État actuel (2026-06-10)** :
|
||||
**État actuel (2026-06-18)** :
|
||||
- ✅ Hermes Agent opérationnel — multi-profils (funk-ai/system/monitor/brain)
|
||||
- ⚠️ RAG **HS depuis 2026-06-05** — Qdrant en crash-loop (segment `funk-docs` corrompu, voir `admin/incidents.md`) ; `rag-ingest` / `rag-query` indisponibles
|
||||
- ✅ Qdrant réparé (2026-06-17) — fin du crash-loop (segment `funk-docs` corrompu, voir `admin/incidents.md`). ⚠️ La collection RAG `funk-docs` a été supprimée lors de la réparation → **re-`rag-ingest` requis** pour réactiver `rag-query`
|
||||
- ✅ Monitoring complet — Prometheus + Grafana + AlertManager → webhook Hermes + n8n
|
||||
- ✅ storage-01 installé — `192.168.10.1` (LAN cluster), `192.168.1.200` (WAN)
|
||||
- ✅ gpu-01 installé — llama-server GPU (:1234) + CPU (:1236/:1237) + embeddings nomic-embed-text (:1238, GPU) opérationnels, kernel 5.14.0-687.5.3
|
||||
- ✅ gpu-01 installé — llama-server GPU (:1234) + CPU (:1236/:1237) + embeddings dédiés nomic-embed-text (:1238, GPU) opérationnels, kernel 5.14.0-687.5.3
|
||||
- ✅ LiteLLM sur storage-01 — proxy multi-modèles + ask-agent (écoute `0.0.0.0:4000`)
|
||||
- ✅ Cluster k8s Talos opérationnel (MetalLB + Traefik + wildcard DNS lab.local)
|
||||
- ✅ postfix_relay — SMTP sortant via Gmail SMTP + App Password (aliyesilkaya93@gmail.com)
|
||||
- ✅ Open WebUI opérationnel — `openwebui.lab.local`, namespace `ai`, backend LiteLLM
|
||||
- ✅ n8n opérationnel — `n8n.lab.local`, namespace `ai`, 3 workflows actifs (alertes, rapport horaire, Hermes Doc Worker)
|
||||
- ✅ STT (assistant vocal « Jarvis ») — STT-server in-cluster (`stt.lab.local`, namespace `ai`) + client `stt` (pipx) ; mémoire long-terme Qdrant `stt-memory` validée 2026-06-17 (voir `admin/ia/stt.md`)
|
||||
- ✅ Ghostfolio opérationnel — `ghostfolio.lab.local`, namespace `ai`, suivi de portefeuille (PostgreSQL s01 + Redis in-cluster)
|
||||
- ✅ hermes-auto-improve — analyse quotidienne de `admin/` par Hermes à 22h (n8n → trigger :9095), PR sur `hermes/daily-work`
|
||||
- ⏳ WOL compute nodes non configuré (BIOS) — allumage manuel requis
|
||||
|
||||
|
|
@ -111,7 +113,7 @@ Variables globales (non-secrètes) dans `ansible/group_vars/all/vars.yml` : `adm
|
|||
|
||||
Variables chiffrées dans `ansible/group_vars/all/vault.yml` :
|
||||
- `vault_anthropic_api_key` — clé Anthropic pour le profil brain
|
||||
- `vault_pg_hermes_password`, `vault_pg_litellm_password`, `vault_pg_n8n_password`, `vault_pg_openwebui_password`
|
||||
- `vault_pg_hermes_password`, `vault_pg_litellm_password`, `vault_pg_n8n_password`, `vault_pg_openwebui_password`, `vault_pg_ghostfolio_password`
|
||||
- `vault_postfix_relay_password` — App Password Gmail (relay SMTP)
|
||||
- `vault_n8n_api_key` — clé API n8n (label "claude") pour gérer les workflows via `/api/v1`
|
||||
|
||||
|
|
@ -153,17 +155,21 @@ k8s/
|
|||
│ └── apps/ # Un fichier Application par workload — ArgoCD les crée automatiquement
|
||||
│ ├── n8n.yaml
|
||||
│ ├── open-webui.yaml
|
||||
│ ├── stt.yaml
|
||||
│ ├── ghostfolio.yaml
|
||||
│ ├── monitoring.yaml
|
||||
│ └── nfs-provisioner.yaml
|
||||
├── apps/ # Manifests raw k8s par application
|
||||
│ ├── n8n/ # namespace: ai
|
||||
│ ├── open-webui/ # namespace: ai
|
||||
│ ├── stt/ # namespace: ai — STT-server (assistant vocal, stt.lab.local)
|
||||
│ ├── ghostfolio/ # namespace: ai — suivi de portefeuille (ghostfolio.lab.local)
|
||||
│ └── {external-services}/ # ExternalName/Endpoints pointant vers storage-01 ou gpu-01
|
||||
└── infra/ # Helm releases (HelmRelease + values.yaml)
|
||||
├── monitoring/ # kube-prometheus-stack 85.0.2
|
||||
├── nfs-provisioner/
|
||||
├── traefik/
|
||||
└── metallb/
|
||||
└── nfs-provisioner/
|
||||
# ⚠️ Traefik + MetalLB ne sont PAS dans k8s/infra/ : ils sont installés via `helm install`
|
||||
# lors du bootstrap Talos (voir admin/k8s/talos.md), hors pattern App-of-Apps ArgoCD.
|
||||
```
|
||||
|
||||
### Ajouter un nouveau workload k8s
|
||||
|
|
@ -172,7 +178,7 @@ k8s/
|
|||
2. Créer `k8s/apps-of-apps/apps/<nom>.yaml` (ArgoCD Application CRD) — copier `n8n.yaml` comme modèle
|
||||
3. `git commit` + `git push` → ArgoCD prend en charge automatiquement
|
||||
|
||||
Namespaces actifs : `argocd`, `infra` (Traefik, MetalLB, NFS-provisioner), `monitoring` (Prometheus/Grafana), `ai` (n8n, open-webui).
|
||||
Namespaces actifs : `argocd`, `infra` (Traefik, MetalLB, NFS-provisioner), `monitoring` (Prometheus/Grafana), `ai` (n8n, open-webui, stt, ghostfolio).
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -213,9 +219,9 @@ ask-agent monitor "logs litellm : <résultat étape 1> — erreurs ?"
|
|||
|
||||
### RAG — Documentation Funk
|
||||
|
||||
> ⚠️ **HS depuis 2026-06-05** — Qdrant en crash-loop (segment `funk-docs` corrompu). Réparation : supprimer la collection corrompue puis relancer `rag-ingest` (reconstructible depuis `admin/`).
|
||||
> ⚠️ **Qdrant réparé le 2026-06-17** (fin du crash-loop, segment `funk-docs` corrompu — voir `admin/incidents.md`). La réparation a **supprimé** la collection `funk-docs` sans la reconstruire → relancer `rag-ingest` pour réactiver `rag-query`. Le service Qdrant et la mémoire long-terme STT (`stt-memory`) sont opérationnels.
|
||||
|
||||
Qdrant collection `funk-docs` indexée depuis `admin/` (339 chunks, score min 0.60).
|
||||
Qdrant collection `funk-docs` indexée depuis `admin/` (≈339 chunks avant suppression, score min 0.60 ; à re-ingérer).
|
||||
|
||||
```bash
|
||||
rag-query "comment relancer dnsmasq ?"
|
||||
|
|
|
|||
26
README.md
26
README.md
|
|
@ -69,12 +69,13 @@ L'ensemble est géré en Infrastructure-as-Code : **Ansible** pour les hôtes Al
|
|||
|
||||
| Composant | Rôle | Hôte |
|
||||
|---|---|---|
|
||||
| **llama-server** (×3) | Inférence GPU + 2× CPU isolés (ROCm 7.x) | gpu-01 |
|
||||
| **llama-server** (×4) | Inférence GPU (:1234) + 2× CPU isolés (:1236/:1237) + embeddings dédiés nomic-embed-text (:1238) — ROCm 7.x | gpu-01 |
|
||||
| **LiteLLM** | Proxy API — routing local/cloud transparent | storage-01 |
|
||||
| **Hermes Agent** | Agent IA multi-profils avec mémoire vectorielle | storage-01 |
|
||||
| **ask-agent** | Délégation inter-agents (system / monitor / brain) | storage-01 |
|
||||
| **Qdrant** | Base vectorielle pour la mémoire sémantique | storage-01 |
|
||||
| **PostgreSQL 16** | Persistance Hermes + LiteLLM | storage-01 |
|
||||
| **STT** | Assistant vocal « Jarvis » — client `stt` (poste) + STT-server in-cluster | k8s (`ai`) |
|
||||
| **Qdrant** | Base vectorielle — RAG (`funk-docs`) + mémoire STT (`stt-memory`) | storage-01 |
|
||||
| **PostgreSQL 16** | Persistance Hermes, LiteLLM, n8n, Open WebUI, Ghostfolio | storage-01 |
|
||||
|
||||
### Profils Hermes
|
||||
|
||||
|
|
@ -143,13 +144,15 @@ L'ensemble est géré en Infrastructure-as-Code : **Ansible** pour les hôtes Al
|
|||
│ └── souls/ # Prompts système par profil (funk-ai, system, monitor, brain)
|
||||
├── tools/ # Sources des outils déployés
|
||||
│ ├── hermes-auto-improve/ # auto-improve.py + trigger-server.py
|
||||
│ └── hermes-voice/ # Client vocal Hermes
|
||||
│ └── hermes-voice/ # Client vocal Hermes (CLI faster-whisper + Piper)
|
||||
├── stt/ # Assistant vocal « Jarvis » — client `stt` (pipx) + STT-server (conteneur)
|
||||
├── admin/ # Base de connaissance (indexée dans le RAG)
|
||||
├── progress/ # Journaux de session (référencés par PROGRESS.md)
|
||||
├── archive/ # Documents historiques obsolètes (conception d'origine) — ne fait pas foi
|
||||
├── talos/ # Cluster Kubernetes (talhelper)
|
||||
└── k8s/ # Workloads ArgoCD
|
||||
├── infra/ # MetalLB, Traefik, monitoring, nfs-provisioner
|
||||
└── apps/ # Open WebUI, n8n, external-services
|
||||
├── infra/ # monitoring, nfs-provisioner (Traefik + MetalLB via helm au bootstrap)
|
||||
└── apps/ # Open WebUI, n8n, STT, Ghostfolio, external-services
|
||||
```
|
||||
|
||||
---
|
||||
|
|
@ -209,7 +212,7 @@ ansible-vault encrypt ansible/group_vars/all/vault.yml
|
|||
ansible-vault edit ansible/group_vars/all/vault.yml
|
||||
```
|
||||
|
||||
Variables stockées dans le vault : `vault_anthropic_api_key`, `vault_pg_hermes_password`, `vault_pg_litellm_password`, `vault_pg_n8n_password`, `vault_pg_openwebui_password`, `vault_postfix_relay_password`, `vault_n8n_api_key`.
|
||||
Variables stockées dans le vault : `vault_anthropic_api_key`, `vault_pg_hermes_password`, `vault_pg_litellm_password`, `vault_pg_n8n_password`, `vault_pg_openwebui_password`, `vault_pg_ghostfolio_password`, `vault_postfix_relay_password`, `vault_n8n_api_key`.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -228,7 +231,7 @@ Elle est gérée automatiquement par le rôle Ansible `llama_server`.
|
|||
## Roadmap
|
||||
|
||||
- [x] Ansible — storage-01 (gateway, NFS, PostgreSQL, Qdrant, LiteLLM, Hermes, postfix, AlertManager webhook)
|
||||
- [x] Ansible — gpu-01 (ROCm, llama-server ×3 — GPU + 2× CPU)
|
||||
- [x] Ansible — gpu-01 (ROCm, llama-server : GPU :1234 + embeddings :1238 via le rôle ; 2× CPU manuels)
|
||||
- [x] Stack IA opérationnelle (Hermes multi-profils + Qwen3 + Claude API)
|
||||
- [x] Délégation inter-agents (`ask-agent` + skill `agent-delegation`)
|
||||
- [x] RAG opérationnel — Qdrant 339 chunks, `rag-query` / `rag-ingest`
|
||||
|
|
@ -240,7 +243,10 @@ Elle est gérée automatiquement par le rôle Ansible `llama_server`.
|
|||
- [x] n8n (`n8n.lab.local`, namespace `ai`, 3 workflows actifs)
|
||||
- [x] Email sortant — Postfix relay → Gmail SMTP
|
||||
- [x] hermes-auto-improve — analyse quotidienne de la doc par Hermes (n8n 22h → PR `hermes/daily-work`)
|
||||
- [x] Ghostfolio — suivi de portefeuille (`ghostfolio.lab.local`, PostgreSQL s01 + Redis)
|
||||
- [x] STT — assistant vocal « Jarvis » (client `stt` + STT-server in-cluster, mémoire Qdrant `stt-memory`)
|
||||
- [x] Modèle d'embedding dédié — nomic-embed-text sur gpu-01 `:1238` (utilisé par la mémoire STT)
|
||||
- [x] Réparer Qdrant — crash-loop résolu 2026-06-17 (collection `funk-docs` supprimée → à re-ingérer)
|
||||
- [ ] Re-ingérer le RAG (`rag-ingest`) et le basculer sur l'embedding dédié `:1238`
|
||||
- [ ] WOL compute nodes (configuration BIOS)
|
||||
- [ ] Route statique Freebox
|
||||
- [ ] Modèle d'embedding dédié (nomic-embed-text ou bge-m3) pour améliorer le RAG
|
||||
- [ ] Réparer Qdrant (collection `funk-docs` corrompue depuis 2026-06-05) + re-ingest
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
| Déployer quelque chose sur k8s | [k8s/argocd.md](k8s/argocd.md) |
|
||||
| Débugger l'inférence LLM | [ia/llama_server.md](ia/llama_server.md) · [ia/rocm.md](ia/rocm.md) |
|
||||
| Débugger Hermes / ask-agent | [ia/hermes.md](ia/hermes.md) |
|
||||
| Assistant vocal (STT / « Jarvis ») | [ia/stt.md](ia/stt.md) · [ia/hermes-voice.md](ia/hermes-voice.md) |
|
||||
| RAG / recherche dans la doc | [ia/rag.md](ia/rag.md) |
|
||||
| Voir les métriques / alertes | [k8s/monitoring.md](k8s/monitoring.md) |
|
||||
| Problème réseau / nftables | [infra/reseau.md](infra/reseau.md) |
|
||||
| Problème NFS / stockage | [infra/nfs.md](infra/nfs.md) |
|
||||
|
|
@ -43,6 +45,7 @@
|
|||
| [infra/nfs.md](infra/nfs.md) | NFS + RAID5 — exports, montages, automount, ajout de partages |
|
||||
| [infra/dnsmasq.md](infra/dnsmasq.md) | DNS local `lab.local` — résolution, logs, ajout d'entrées |
|
||||
| [infra/ssh.md](infra/ssh.md) | Connexions SSH — alias, jump host, transfert de fichiers |
|
||||
| [infra/email.md](infra/email.md) | Postfix relay — SMTP sortant via Gmail (App Password) |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -53,6 +56,10 @@
|
|||
| [k8s/talos.md](k8s/talos.md) | Talos Linux — talhelper, nœuds, upgrades, backup etcd |
|
||||
| [k8s/argocd.md](k8s/argocd.md) | ArgoCD GitOps — App of Apps, déploiement, dépannage |
|
||||
| [k8s/monitoring.md](k8s/monitoring.md) | Grafana · Prometheus · AlertManager — métriques, dashboards, alertes |
|
||||
| [k8s/n8n.md](k8s/n8n.md) | n8n — automatisation, workflows actifs, credentials |
|
||||
| [k8s/open-webui.md](k8s/open-webui.md) | Open WebUI — chat web, backend LiteLLM |
|
||||
| [k8s/ghostfolio.md](k8s/ghostfolio.md) | Ghostfolio — suivi de portefeuille (PostgreSQL s01 + Redis) |
|
||||
| [k8s/k9s.md](k8s/k9s.md) | k9s — TUI de gestion du cluster |
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -60,10 +67,16 @@
|
|||
|
||||
| Fichier | Contenu |
|
||||
|---|---|
|
||||
| [ia/llama_server.md](ia/llama_server.md) | llama-server — 3 instances (GPU+CPU), métriques, build, modèles |
|
||||
| [ia/llama_server.md](ia/llama_server.md) | llama-server — 4 instances (GPU + 2× CPU + embeddings :1238), métriques, build, modèles |
|
||||
| [ia/rocm.md](ia/rocm.md) | GPU RX 6700XT — ROCm, `HSA_OVERRIDE_GFX_VERSION`, debug |
|
||||
| [ia/litellm.md](ia/litellm.md) | LiteLLM Proxy — routage Qwen local + Claude API, config, validation |
|
||||
| [ia/hermes.md](ia/hermes.md) | Hermes Agent + ask-agent — profils, skills, SOUL.md, délégation |
|
||||
| [ia/hermes-souls.md](ia/hermes-souls.md) | Prompts système (souls) par profil Hermes |
|
||||
| [ia/hermes-auto-improve.md](ia/hermes-auto-improve.md) | Worker d'analyse quotidienne de la doc par Hermes (trigger :9095) |
|
||||
| [ia/hermes-voice.md](ia/hermes-voice.md) | Client vocal Hermes (CLI : faster-whisper + Piper + wake word) |
|
||||
| [ia/stt.md](ia/stt.md) | STT — assistant vocal « Jarvis » (client `stt` + STT-server in-cluster + mémoire) |
|
||||
| [ia/rag.md](ia/rag.md) | RAG — `rag-query`/`rag-ingest`, Qdrant `funk-docs`, embeddings |
|
||||
| [ia/alertmanager-webhook.md](ia/alertmanager-webhook.md) | Pont AlertManager → ask-agent (analyse LLM des alertes) |
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -207,12 +207,12 @@ sudo systemctl restart llama-server
|
|||
|
||||
## ⚠️ Gap IaC — instances CPU non couvertes par Ansible
|
||||
|
||||
Le rôle `ansible/roles/llama_server/` ne déploie que l'instance **GPU** (`llama-server.service` sur :1234).
|
||||
Le rôle `ansible/roles/llama_server/` déploie l'instance **GPU** (`llama-server.service` :1234) et l'instance **embeddings** (`llama-embed` :1238, activée par `llama_embed_enabled`).
|
||||
Les instances CPU (`llama-server-system` :1236 et `llama-server-monitor` :1237) ont été créées **manuellement** et ne sont pas encore dans le code Ansible.
|
||||
|
||||
Conséquence : un `make apply-gpu` complet sur un hôte vierge ne déploierait PAS les instances CPU.
|
||||
|
||||
**Axe d'amélioration** : étendre le rôle `llama_server` pour déployer les 3 instances via une boucle (`with_items` ou `loop` Ansible), avec des variables dédiées dans `host_vars/gpu-01/vars.yml`.
|
||||
**Axe d'amélioration** : étendre le rôle `llama_server` pour déployer aussi les 2 instances CPU via une boucle (`with_items` ou `loop` Ansible), avec des variables dédiées dans `host_vars/gpu-01/vars.yml`.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
# RAG — Documentation Funk
|
||||
|
||||
> ⚠️ **HS depuis 2026-06-05** — Qdrant en crash-loop (segment `funk-docs` corrompu).
|
||||
> Procédure de réparation dans `admin/incidents.md` (entrée 2026-06-05).
|
||||
> ⚠️ **À re-ingérer** — Qdrant a été réparé le **2026-06-17** (fin du crash-loop), mais la
|
||||
> réparation a **supprimé la collection `funk-docs`** : `rag-query` ne retourne rien tant que
|
||||
> `rag-ingest` n'a pas reconstruit l'index (reconstructible depuis `admin/`).
|
||||
> Détails de l'incident : `admin/incidents.md` (entrée 2026-06-05).
|
||||
|
||||
Le RAG (Retrieval-Augmented Generation) permet à Hermes de répondre en s'appuyant
|
||||
sur la documentation du repo (`admin/`) plutôt que sur sa seule mémoire de modèle.
|
||||
|
|
@ -38,7 +40,7 @@ Hermes formule sa réponse en citant les sources
|
|||
| `rag-query` | `/usr/local/bin/rag-query` | Interroge Qdrant depuis la ligne de commande |
|
||||
| Skill `rag-docs` | Profil `funk-ai` Hermes | Enseigne à Hermes comment utiliser `rag-query` |
|
||||
| Docs indexées | `/srv/data/rag/docs/` (NVMe) | Copie locale du dossier `admin/` |
|
||||
| Collection Qdrant | `funk-docs` | 339 chunks — dimension 4096 (Cosine) |
|
||||
| Collection Qdrant | `funk-docs` | supprimée le 2026-06-17 → **à re-ingérer** (≈339 chunks, dim 4096 Cosine) |
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ Objectif ultérieur : « agir sur le homelab » via les outils de Hermes (phase
|
|||
| Agir sur le homelab | Hermes Agent (`:8080`, profils funk-ai/system/monitor/brain) | ✅ opérationnel |
|
||||
| Voix (STT + TTS + wake word) | `tools/hermes-voice/` — faster-whisper + Piper + webrtcvad | ✅ existe (CLI only) |
|
||||
| Démarrage auto au boot | pattern `systemd --user` (`tools/hermes-voice/install-service.sh`) | ✅ éprouvé |
|
||||
| Mémoire sémantique | Qdrant `:6333` + RAG (`rag-query`/`rag-ingest`) sur s01 | ⚠️ **HS depuis 05/06** |
|
||||
| Mémoire sémantique | Qdrant `:6333` + RAG (`rag-query`/`rag-ingest`) sur s01 | ✅ Qdrant réparé 17/06 (RAG `funk-docs` à re-ingérer) |
|
||||
|
||||
Maillon réellement manquant : **l'interface graphique HUD** + le packaging + la mémoire perso.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Incidents — Historique et résolutions
|
||||
|
||||
## 2026-06-05 — Qdrant en crash-loop : segment funk-docs corrompu (EN COURS)
|
||||
## 2026-06-05 — Qdrant en crash-loop : segment funk-docs corrompu (RÉSOLU 2026-06-17)
|
||||
|
||||
### Symptômes
|
||||
|
||||
|
|
@ -20,7 +20,7 @@ error: unexpected character 'D' while parsing minor version number
|
|||
|
||||
Le fichier `version.info` du segment contient `0.D\0` au lieu d'un numéro de version — corruption de données (première occurrence le 2026-06-05 à 21h10).
|
||||
|
||||
### Résolution (à appliquer)
|
||||
### Résolution (crash-loop résolu le 2026-06-17 ; re-ingest encore à faire)
|
||||
|
||||
La collection `funk-docs` est entièrement reconstructible depuis `admin/` :
|
||||
|
||||
|
|
@ -32,6 +32,12 @@ curl -s http://127.0.0.1:6333/collections # doit répondre
|
|||
/usr/local/bin/rag-ingest # ré-indexe /srv/data/rag/docs
|
||||
```
|
||||
|
||||
> **État au 2026-06-17** : les 3 premières étapes (stop + drop `funk-docs` + start) ont été
|
||||
> appliquées sur s01 pour sortir Qdrant du crash-loop (cf. `admin/ia/stt.md`, jalon 5c). Le
|
||||
> service Qdrant et la mémoire STT (`stt-memory`) sont donc opérationnels, **mais** `rag-ingest`
|
||||
> n'a pas encore été relancé : la collection `funk-docs` est vide → `rag-query` reste muet
|
||||
> tant que l'index n'est pas reconstruit.
|
||||
|
||||
### Prévention
|
||||
|
||||
- Ajouter une alerte Prometheus sur les unités systemd en `activating` prolongé (`node_systemd_unit_state`) — un crash-loop n'apparaît ni dans `failed` ni dans les alertes actuelles
|
||||
|
|
@ -42,7 +48,7 @@ curl -s http://127.0.0.1:6333/collections # doit répondre
|
|||
|
||||
| Date | Composant | Résumé | Sévérité |
|
||||
|---|---|---|---|
|
||||
| 2026-06-05 | Qdrant | **EN COURS** — crash-loop : segment `funk-docs` corrompu, RAG HS | Important |
|
||||
| 2026-06-05 | Qdrant | **Résolu 2026-06-17** — crash-loop corrigé (drop `funk-docs`) ; RAG à re-ingérer | Important |
|
||||
| 2026-05-29 | RAID5 / sdb + storage-01 | sdb ATA bus errors sous I/O — migration /srv/data du RAID vers NVMe | Important |
|
||||
| 2026-05-27 | RAID5 / sdd | Disque sdd défaillant (44 secteurs morts) — corruptions multiples en cascade | Critique |
|
||||
| 2026-05-14 | Grafana | OOMKilled — limite 256Mi trop serrée pour Grafana 13 | Warning |
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
# Homelab IA — Architecture et plan de déploiement
|
||||
|
||||
> ## ⚠️ DOCUMENT OBSOLÈTE — ARCHIVE HISTORIQUE
|
||||
>
|
||||
> Ceci est la **conception d'origine** du homelab (pré-`Funk-lab`). Il décrit des choix
|
||||
> **abandonnés** : inférence via **LM Studio** (remplacée par llama-server / ROCm) et agents
|
||||
> **Goose** (remplacés par **Hermes Agent**). **Ce document ne fait plus foi.**
|
||||
>
|
||||
> 👉 Référence à jour : [`CLAUDE.md`](../../../CLAUDE.md) et la base de connaissance [`admin/`](../../../admin/).
|
||||
> Conservé pour mémoire uniquement — voir [`archive/README.md`](../../README.md).
|
||||
|
||||
> Document de référence consolidé pour le déploiement d'un homelab IA combinant
|
||||
> un cluster Kubernetes (Talos) pour les services applicatifs et deux hôtes
|
||||
> Linux dédiés pour l'inférence LLM (LM Studio) et l'agent autonome (Hermes Agent).
|
||||
|
|
@ -1,5 +1,14 @@
|
|||
# Homelab IA — Architecture et plan de déploiement
|
||||
|
||||
> ## ⚠️ DOCUMENT OBSOLÈTE — ARCHIVE HISTORIQUE
|
||||
>
|
||||
> Ceci est la **conception d'origine** du homelab (pré-`Funk-lab`). Il décrit des choix
|
||||
> **abandonnés** : inférence via **LM Studio** (remplacée par llama-server / ROCm) et agents
|
||||
> **Goose** (remplacés par **Hermes Agent**). **Ce document ne fait plus foi.**
|
||||
>
|
||||
> 👉 Référence à jour : [`CLAUDE.md`](../../CLAUDE.md) et la base de connaissance [`admin/`](../../admin/).
|
||||
> Conservé pour mémoire uniquement — voir [`archive/README.md`](../README.md).
|
||||
|
||||
> Document de référence consolidé pour le déploiement d'un homelab IA combinant
|
||||
> un cluster Kubernetes (Talos) pour les services applicatifs et deux hôtes
|
||||
> Linux dédiés pour l'inférence LLM (LM Studio) et l'agent autonome (Hermes Agent).
|
||||
20
archive/README.md
Normal file
20
archive/README.md
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# archive/ — Documents historiques (obsolètes)
|
||||
|
||||
Ce dossier conserve des documents **superseded** — gardés pour la mémoire du projet, mais qui
|
||||
**ne font plus foi**. Pour l'état courant du homelab, se référer à :
|
||||
|
||||
- [`CLAUDE.md`](../CLAUDE.md) — présentation, architecture, état actuel
|
||||
- [`README.md`](../README.md) — vue d'ensemble
|
||||
- [`admin/`](../admin/) — base de connaissance opérationnelle
|
||||
|
||||
---
|
||||
|
||||
## Contenu
|
||||
|
||||
| Chemin | Description | Pourquoi obsolète |
|
||||
|---|---|---|
|
||||
| `Funk/HOMELAB.md` · `Funk/Funk-infra/HOMELAB.md` | Document de conception d'origine du homelab (plan de déploiement initial) | Décrit **LM Studio** (remplacé par llama-server / ROCm) et l'inférence/agents **Goose** (remplacés par **Hermes Agent**). Antérieur à la structure actuelle du repo. |
|
||||
| `Funk/Funk-infra/agents/*/goose-config.yaml` | Configurations d'agents **Goose** (data / global / infra / monitoring / sysadmin) | Approche Goose abandonnée — la stack agent est désormais **Hermes Agent** (profils funk-ai / system / monitor / brain, voir `admin/ia/hermes.md`). |
|
||||
|
||||
> Ces fichiers ont été déplacés ici (depuis la racine `Funk/`) le 2026-06-18 lors d'une passe
|
||||
> de cohérence documentaire. L'historique git complet est préservé (`git mv`).
|
||||
|
|
@ -19,7 +19,7 @@ qui nécessitent un raisonnement approfondi.
|
|||
|
||||
### Stack IA
|
||||
|
||||
- **llama-server** (gpu-01) — llama.cpp compilé ROCm 7.x, 3 instances : GPU :1234, CPU :1236/:1237
|
||||
- **llama-server** (gpu-01) — llama.cpp compilé ROCm 7.x, 4 instances : GPU :1234, CPU :1236/:1237, embeddings nomic-embed-text :1238
|
||||
- **Modèles** : Qwen3-8B Q4_K_M (GPU), Qwen3-1.7B Q4_K_M (CPU ×2)
|
||||
- **LiteLLM** (storage-01:4000) — proxy multi-modèles + Claude API
|
||||
- **Hermes Agent** — 4 profils : funk-ai (principal), brain (toi), system, monitor
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue