Funk-lab/k8s/apps/openalice/README.md
ALI YESILKAYA 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

67 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# OpenAlice — agent IA financier (in-cluster)
[TraderAlice/OpenAlice](https://github.com/TraderAlice/OpenAlice) — *"one-person Wall Street"* :
agent autonome de recherche financière (actions, crypto, commodités, forex, macro). **AGPL-3.0**.
Déployé in-cluster (namespace `ai`, `openalice.lab.local`) comme **back-end de connaissances
financières d'Asa** : Asa lui parle via le connecteur **MCP Ask** (cf. PR outil `ask_alice`).
> ⚠️ **Logiciel beta, expérimental.** Ici on l'utilise en **lecture/recherche uniquement** :
> **aucun broker (UTA) connecté → zéro trading réel.** Données de marché via **TraderHub**
> (hébergé, sans clé) + clé **FMP** gratuite optionnelle pour les cours live.
## Image
Pas d'image publique : la CI (`.github/workflows/build-openalice.yml`) rebuild depuis le
Dockerfile amont à une **ref épinglée** (`OPENALICE_REF`) → `ghcr.io/alkatrazz24/funk-openalice`.
Changer de version = éditer `OPENALICE_REF` puis relancer le workflow (`workflow_dispatch`).
## Architecture du déploiement
| Composant | Détail |
|---|---|
| Deployment | 1 réplica, `Recreate` (volume RWO), PodSecurity *restricted* (uid 1000, `fsGroup` 1000) |
| PVC `openalice-data` | 5Gi NFS → `/data` (auth CLIs, sessions, **config + credentials scellés**, caches) |
| Service `openalice` | `web:47331` (Web UI) + `mcpask:3003` (MCP Ask, in-cluster, pour Asa) |
| IngressRoute | `openalice.lab.local` → 47331 |
Le cerveau d'Alice **n'est pas** une clé Claude par défaut : on le pointe sur **LiteLLM
(`storage-01:4000`) → Qwen3-8B** (gratuit), avec Claude basculable (hybride). Tout se règle
au **premier boot** (voir ci-dessous) car OpenAlice **scelle ses credentials dans `/data`**
(impossible à seeder en clair via ConfigMap — par design).
## Pré-requis manuels (une fois)
### 1. Secret de pull GHCR (si absent du ns `ai`)
```bash
kubectl -n ai create secret docker-registry ghcr-pull \
--docker-server=ghcr.io \
--docker-username=Alkatrazz24 \
--docker-password=<GHCR_PAT_read_packages>
```
### 2. Premier boot — onboarding via la Web UI
OpenAlice génère un **token admin** (256 bits) au premier démarrage. Le récupérer :
```bash
kubectl -n ai logs deploy/openalice | grep -i token
```
Ouvrir **http://openalice.lab.local**, coller le token, puis configurer :
1. **Settings AI Provider** — ajouter un credential **OpenAI-compatible** :
- baseUrl `http://192.168.10.1:4000/v1` · modèle `hermes-default` (ou `qwen3-8b`) · apiKey `lm-studio`
- (option **hybride**) ajouter aussi un credential **Anthropic** (Claude) avec ta clé pour basculer.
2. **Settings Market Data** — laisser **TraderHub** activé (par défaut). Ajouter la clé
**FMP** (palier gratuit, [financialmodelingprep.com](https://site.financialmodelingprep.com))
pour les cours/K-lines live (hors hub).
3. **Connectors MCP Ask****activer**, port **3003**. C'est l'entrée qu'Asa consomme
(`askWithSession`) via `http://openalice:3003` in-cluster.
Tout ceci est **persisté + scellé** dans le volume → survit aux redémarrages et rebuilds d'image.
## Asa (STT-server)
L'outil `ask_alice(question)` de la boucle agentique d'Asa délègue à Alice via MCP Ask
(`http://openalice:3003`). Voir `admin/ia/openalice.md` et le déploiement `stt`.