c2f7255da0
feat(openalice): déploiement in-cluster de l'agent IA financier (back-end finance d'Asa) ( #61 )
...
Déploie TraderAlice/OpenAlice (AGPL-3.0) dans le namespace ai comme back-end de
connaissances financières pour Asa, consommé via le connecteur MCP Ask.
- CI build-openalice.yml : rebuild depuis le Dockerfile amont (ref épinglée v0.60.0-beta.1)
→ ghcr.io/alkatrazz24/funk-openalice, bump manifest sur main
- k8s/apps/openalice : Deployment (restricted + fsGroup, Recreate), PVC 5Gi NFS /data,
Service web:47331 + mcpask:3003, IngressRoute openalice.lab.local
- ArgoCD app + doc admin/ia/openalice.md (RAG) + MAJ CLAUDE.md
- Cerveau hybride : LiteLLM/Qwen3-8B local (gratuit) + Claude basculable ; données
TraderHub (sans clé) + FMP gratuit. Lecture/recherche seule — aucun broker, zéro trading.
Onboarding premier boot (Web UI) imposé : credentials scellés dans /data par design.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 12:39:35 +02:00
73b52cde2c
feat(stt): recherche web (SearXNG in-cluster) + fix cluster_status ( #49 )
...
Phase 2 d'Asa agentique : nouvel outil web_search adossé à un SearXNG
self-host in-cluster, + correction du faux positif de cluster_status.
- SearXNG (k8s/apps/searxng/) : Deployment + Service + ConfigMap settings.yml
+ IngressRoute searxng.lab.local, Application ArgoCD. Namespace ai, interne
(l'outil tape http://searxng:8080 ). use_default_settings + search.formats
inclut json (sinon API JSON 403) ; limiter/image_proxy off ; image pinnée ;
conf copiée dans un emptyDir via initContainer (contourne le mount RO) ;
PodSecurity restricted.
- Outil web_search (tools._web_search) ajouté au contexte asa + STT_SEARXNG_URL.
- fix(cluster_status) : les pods de CronJob TERMINÉS (Succeeded/Failed, ex.
sacrifice-assign-renfort) comptaient comme « non prêts » → fausse alarme.
Join kube_pod_status_phase{phase=~"Running |Pending"} (3 faux positifs → 0,
validé in-cluster).
- Serveur 0.8.0 ; doc stt.md + journal mis à jour.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 22:10:59 +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
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
alkatrazz
bc137d13b4
feat(k8s): déployer Open WebUI + n8n sur namespace ai via ArgoCD
...
Open WebUI (openwebui.lab.local) :
- Connecté à LiteLLM (192.168.10.1:4000/v1) comme backend OpenAI-compatible
- PostgreSQL via storage-01 pour l'historique des conversations
- PVC 5Gi NFS pour les uploads, Traefik IngressRoute
n8n (n8n.lab.local) :
- PostgreSQL via storage-01, chiffrement des credentials
- PVC 2Gi NFS, Traefik IngressRoute
- Webhook URL interne : http://n8n.lab.local
Ansible : ajoute openwebui et n8n dans postgresql_databases/users
(vault_pg_openwebui_password + vault_pg_n8n_password à ajouter au vault)
Prérequis avant 1er déploiement :
make vault-edit # ajouter les 2 passwords
make apply-storage --tags postgresql
kubectl create secret generic open-webui-secret -n ai ...
kubectl create secret generic n8n-secret -n ai ...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 15:08:41 +02:00
alkatrazz
630bdee1a2
fix: monitoring ArgoCD — directory.recurse pour dashboards/ et alerts/
...
L'Application monitoring ne scannait que le répertoire racine,
ignorant les sous-dossiers dashboards/ et alerts/.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 22:57:52 +02:00
alkatrazz
655ca4dc8c
feat: NFS provisioner + persistance Prometheus et Grafana
...
- k8s/infra/nfs-provisioner/ : nfs-subdir-external-provisioner v4.0.18
StorageClass "nfs" (default), ReclaimPolicy=Retain, server=192.168.10.1
path=/srv/data/nfs/k8s (export RAID5 déjà existant)
- k8s/apps-of-apps/apps/nfs-provisioner.yaml : Application ArgoCD
- monitoring/values.yaml : persistance activée
Prometheus: 20Gi sur nfs, Grafana: 2Gi sur nfs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 21:22:05 +02:00
alkatrazz
7409c6fa1c
fix: ArgoCD — SSH URL repo + clé SSH pour auth GitHub
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 20:31:00 +02:00
alkatrazz
d7b33bb34a
feat: bootstrap ArgoCD + structure GitOps k8s
...
- k8s/argocd-bootstrap/values.yaml : ArgoCD Helm values (ingress Traefik,
resources limités, dex désactivé)
- k8s/apps-of-apps/ : root Application + monitoring Application
- k8s/infra/monitoring/ : kube-prometheus-stack v85.0.2 (Grafana, Prometheus,
AlertManager, node-exporter daemonset)
- Scrape additionnels : storage-01:9100, gpu-01:9100 (node), :9101 (ROCm),
llama-server :1234/:1236/:1237
- AlertManager webhook → http://192.168.10.1:9093/webhook (Hermes monitor)
- Ressources dimensionnées pour compute 8GB
- kubeEtcd/Scheduler/ControllerManager/Proxy désactivés (Talos)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 20:26:49 +02:00