Plan de configuration global — Stack Marty (Hermes v2)
Version : 1.2 · Date : 2026-06-20 · Statut : source de vérité configuration.
Ce document est la référence de configuration de toute la stack Marty. Il
synthétise les docs officielles
OpenCode), les attendus du projet Marty
(`~/DEV/marty/README.md` — 28+ agents,
NLU français, validation humaine, Baserow/CalDAV/email/AFFiNE/n8n/LibreOffice) et
1. Architecture — tout déporté sur marty
flowchart TB
subgraph p53["Poste P53 — client uniquement"]
BR[Navigateur]
OC[OpenCode CLI]
TUN[(Tunnel SSH<br/>:18000 vLLM / :19000 gateway)]
end
subgraph marty["marty — WRX90 (RTX PRO 5000, 48 Go) — exécution complète"]
TRA[Traefik :443<br/>*.nassim.netlib.re]
VLLM[vLLM OpenAI :8000<br/>alias marty-llm]
HG[Hermes Gateway :8642]
HD[Hermes Dashboard :9119]
HW[Hermes Workspace :3002]
OUI[OpenWebUI]
end
BR -->|HTTPS| TRA
OC -->|marty-vllm / marty-hermes| TUN
TUN --> VLLM
TUN --> HG
TRA --> HW
TRA --> HD
TRA --> OUI
TRA --> HG
HW --> HG
HW --> HD
HG -->|profils marty-* + tools + MCP + aux| VLLMTrois surfaces Hermes (doc
toutes hébergées sur marty :
| Surface | Port (marty) | Accès P53 | Rôle |
|---|---|---|---|
| Gateway | 8642 | tunnel :19000 + HTTPS | API OpenAI-compatible, tools, profils, MCP, kanban dispatch |
| Dashboard | 9119 | HTTPS | Sessions, skills, jobs, config, kanban UI |
| Workspace | 3002 | HTTPS (app.nassim.netlib.re) | UI « command center » (hermes-workspace) |
2. Couches & responsabilités
Tout s'exécute sur marty. Le P53 n'héberge qu'un navigateur, OpenCode et le tunnel.
| Couche (sur marty) | Rôle | Doc | Accès depuis P53 |
|---|---|---|---|
| vLLM | Inférence unique (turns + tâches auxiliaires), alias marty-llm | vLLM | tunnel :18000 / HTTPS |
| Hermes Gateway | Agent + tools + MCP + profils + délégation + kanban | Hermes | tunnel :19000 / HTTPS |
| Hermes Dashboard | Skills, sessions, jobs, kanban UI | Hermes | HTTPS |
| Hermes Workspace | UI web command center | hermes-workspace | HTTPS app.nassim.netlib.re |
| OpenWebUI | Chat web | OpenWebUI | HTTPS marty.nassim.netlib.re |
| Traefik | TLS + auth + routage | — | :443 |
| OpenCode (P53) | CLI coding agent — client | OpenCode | tunnel :18000/:19000 |
3. vLLM — modèles & tool parsers
Contrainte VRAM 48 Go → un seul gros modèle chargé à la fois ; vLLM sert
toujours l'alias stable marty-llm en plus du served_id réel. Doc
Tool Calling : toujours
--enable-auto-tool-choice + --tool-call-parser adapté à la famille.
Source : Configuration (models registry)
· Mapping : Configuration (marty hermes model mapping).
| Clé registre | served_id | Quant | Parser tools | Score / tools | Ctx | Rôle |
|---|---|---|---|---|---|---|
gemma4-26b | gemma4-26b-a4b-awq | compressed-tensors | gemma4 + reasoning gemma4 | 9.0 / 10 | 16k | PRINCIPAL — meilleur score, ~180 tok/s |
qwen3.6-35b | qwen3.5-35b-a3b-abliterated | NVFP4 | qwen3_coder + reasoning qwen3 | 8.5 / 10 | 32k | Alternative — ctx long / abliterated, enable_thinking:false |
gemma4-31b | gemma4-31b-awq | AWQ (--dtype float16) | gemma4 + reasoning gemma4 | 7.4 / 8 | 16k | Fallback qualité dense |
qwen2.5 | qwen2.5-32b-abliterated | AWQ | hermes | 7.2 / 8 | 32k | Fallback sûr tool-use ≥8 |
Choix du principal : par score bench v2, gemma4-26b (9.0) > qwen3.6-35b (8.5).
Il est aussi le plus rapide (~180 tok/s) et 10/10 tools. Seules limites : contexte 16k
(vs 32k pour qwen3.6-35b) et non abliterated (refus possibles sur sujets sensibles).
→ bascule vers qwen3.6-35b pour ces deux cas (voir mapping load_policy.alternative).
Règles vLLM :
- AWQ / compressed-tensors : ajouter
--dtype float16quand requis (cf. registre). - Qwen MoE :
enable_thinking:falsecôté Hermes hors tâche de raisonnement explicite.
reconfigurent jamais l'alias (toujours marty-llm).
- Synchroniser
context_lengthHermes au modèle chargé :16384pour gemma4-*,
32768 pour qwen* (sinon erreurs de dépassement sur gemma4-26b). À automatiser dans
marty-llm-model.sh switch (cf. §10 Phase A).
- Modèles retirés du registre v2 :
deepseek-r1,qwq(échec dtype),llama3.3,
qwen2.5-72b, qwen2.5-coder, gemma3, qwen2.5-7b, hermes-3 (tool-use insuffisant).
4. Hermes Agent — configuration cœur
4.1 Fichiers maîtres (sur marty)
| Fichier (sur marty) | Contenu clé |
|---|---|
| Configuration (config) | model, providers, delegation, kanban, mcp_servers, toolsets, auxiliary |
| .env | API_SERVER_*, secrets métier, OPENAI_API_*, MARTY_LLM_API_KEY |
| auth | active_provider (résolution provider CLI / workers kanban) |
| marty * | 34 profils agents (provider, model, sources, outils) |
4.2 API Server (obligatoire)
Doc API Server —
API_SERVER_KEY est requis. Bind 0.0.0.0 derrière Traefik (TLS + auth), jamais exposé nu.
API_SERVER_ENABLED=true
API_SERVER_HOST=0.0.0.0 # derrière Traefik sur marty (bindé conteneur 127.0.0.1)
API_SERVER_PORT=8642
API_SERVER_KEY=<secret fort>
API_SERVER_CORS_ORIGINS=https://app.nassim.netlib.re,https://hermes.nassim.netlib.re
4.3 Providers LLM (internes à marty)
vLLM, Hermes et tâches auxiliaires co-localisés sur marty → tout pointe sur le
vLLM interne. Plus aucun provider Ollama, plus de fallback offline.
| Contexte | Provider Hermes | base_url (sur marty) | Modèle |
|---|---|---|---|
| Profils marty-* (runtime) | openrouter (OpenAI-compat custom) | http://127.0.0.1:8000/v1 (vLLM) ou gateway v1 | marty-llm |
| CLI / workers kanban | openrouter + auth active_provider | idem | marty-llm |
| Tâches auxiliaires | même moteur | http://127.0.0.1:8000/v1 | marty-llm |
| Bench / scripts directs | marty-vllm custom | v1 | marty-llm / served_id |
Scripts : Script Python (apply marty edge llm config),
Script Python (apply marty hermes model mapping),
Script shell (finalize marty v2).
4.4 Délégation (CEO / coordinator)
Doc Delegation :
delegation:
max_spawn_depth: 2 # orchestrateur → feuilles ; coût ×3^depth
max_concurrent_children: 3
orchestrator_enabled: true
provider: openrouter # hérite du parent si vide
model: marty-llm
base_url: http://127.0.0.1:8000/v1 # vLLM interne marty
4.5 Kanban
Doc Kanban :
Synthèse PRISME — 707 lignes dans la source complète.
Voir aussi PRISME : Nœud IA Expérimental