diff --git a/CLAUDE.md b/CLAUDE.md index d92b009..b713e3b 100644 --- a/CLAUDE.md +++ b/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/.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 : — 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 ?" diff --git a/README.md b/README.md index 473ab1b..be742ea 100644 --- a/README.md +++ b/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 diff --git a/admin/README.md b/admin/README.md index f3b7e5c..c238bbe 100644 --- a/admin/README.md +++ b/admin/README.md @@ -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) | --- diff --git a/admin/ia/llama_server.md b/admin/ia/llama_server.md index 9c7b275..c75f0f6 100644 --- a/admin/ia/llama_server.md +++ b/admin/ia/llama_server.md @@ -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`. --- diff --git a/admin/ia/rag.md b/admin/ia/rag.md index b2d8f84..dad6708 100644 --- a/admin/ia/rag.md +++ b/admin/ia/rag.md @@ -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) | --- diff --git a/admin/ia/stt.md b/admin/ia/stt.md index a4d07dd..7ee32d4 100644 --- a/admin/ia/stt.md +++ b/admin/ia/stt.md @@ -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. diff --git a/admin/incidents.md b/admin/incidents.md index 37c14a3..4299c0a 100644 --- a/admin/incidents.md +++ b/admin/incidents.md @@ -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 | diff --git a/Funk/Funk-infra/HOMELAB.md b/archive/Funk/Funk-infra/HOMELAB.md similarity index 98% rename from Funk/Funk-infra/HOMELAB.md rename to archive/Funk/Funk-infra/HOMELAB.md index 0a07ab0..6ab722e 100644 --- a/Funk/Funk-infra/HOMELAB.md +++ b/archive/Funk/Funk-infra/HOMELAB.md @@ -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). diff --git a/Funk/Funk-infra/agents/README.md b/archive/Funk/Funk-infra/agents/README.md similarity index 100% rename from Funk/Funk-infra/agents/README.md rename to archive/Funk/Funk-infra/agents/README.md diff --git a/Funk/Funk-infra/agents/data/goose-config.yaml b/archive/Funk/Funk-infra/agents/data/goose-config.yaml similarity index 100% rename from Funk/Funk-infra/agents/data/goose-config.yaml rename to archive/Funk/Funk-infra/agents/data/goose-config.yaml diff --git a/Funk/Funk-infra/agents/global/goose-config.yaml b/archive/Funk/Funk-infra/agents/global/goose-config.yaml similarity index 100% rename from Funk/Funk-infra/agents/global/goose-config.yaml rename to archive/Funk/Funk-infra/agents/global/goose-config.yaml diff --git a/Funk/Funk-infra/agents/infra/goose-config.yaml b/archive/Funk/Funk-infra/agents/infra/goose-config.yaml similarity index 100% rename from Funk/Funk-infra/agents/infra/goose-config.yaml rename to archive/Funk/Funk-infra/agents/infra/goose-config.yaml diff --git a/Funk/Funk-infra/agents/monitoring/goose-config.yaml b/archive/Funk/Funk-infra/agents/monitoring/goose-config.yaml similarity index 100% rename from Funk/Funk-infra/agents/monitoring/goose-config.yaml rename to archive/Funk/Funk-infra/agents/monitoring/goose-config.yaml diff --git a/Funk/Funk-infra/agents/sysadmin/goose-config.yaml b/archive/Funk/Funk-infra/agents/sysadmin/goose-config.yaml similarity index 100% rename from Funk/Funk-infra/agents/sysadmin/goose-config.yaml rename to archive/Funk/Funk-infra/agents/sysadmin/goose-config.yaml diff --git a/Funk/HOMELAB.md b/archive/Funk/HOMELAB.md similarity index 98% rename from Funk/HOMELAB.md rename to archive/Funk/HOMELAB.md index fb4ae2b..bd35778 100644 --- a/Funk/HOMELAB.md +++ b/archive/Funk/HOMELAB.md @@ -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). diff --git a/archive/README.md b/archive/README.md new file mode 100644 index 0000000..da3585c --- /dev/null +++ b/archive/README.md @@ -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`). diff --git a/hermes-skills/souls/brain.md b/hermes-skills/souls/brain.md index a186be4..e09473f 100644 --- a/hermes-skills/souls/brain.md +++ b/hermes-skills/souls/brain.md @@ -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