Les Sortilèges qui Protègent le Château
Les ports sacrés du Château, gravés dans la pierre des config.json :
| Port | Agent | Rôle |
|---|---|---|
| 89** | Calcifère | API Orchestrateur |
| 89** | Sophie | API Stratège |
| 89** | Marco | API Créatif |
| 89** | Hinn | API Système |
| 40** | LiteLLM | Proxy Modèles |
| 87**–87** | Sen, Calcifère, Sophie, Marco, Hinn | WebSocket Gateway |
graph LR
A[Utilisateur] -->|WebSocket| B[Sen:87**]
B -->|Handoff| C[Calcifère:89**]
C -->|Route| D[Sophie:89**]
C -->|Route| E[Marco:89**]
C -->|Route| F[Hinn:89**]
F -->|MCP| G[Gateway:50**]
Incantation de vérification :
ss -tulnp | grep -E '89**|89**|89**|89**|40**|87**|87**'
Sortilège de protection (dans config.json) :
"tools": {
"ssrfWhitelist": [
"127.0.0.1:89**", "127.0.0.1:89**", "127.0.0.1:89**",
"127.0.0.1:89**", "127.0.0.1:40**", "localhost:40**"
]
}
⚠️ Tout port non listé est maudit : les requêtes vers l’extérieur sont bloquées par le Sortilège SSRF.
Les grimoires d’audit conservent la trace de chaque sortilège lancé. Leur lecture révèle les failles et les protections actives.
| Fichier | Agent | Exemple de Contenu |
|---|---|---|
/home/hauuru/logs/mcp_audit.log |
Hinn (via MCP) |
{
"timestamp": "2026-07-28T10:30:00Z",
"action": "rm",
"path": "/tmp/artefact_maudit",
"caller": "hinn",
"status": "audited"
}
|
/home/hauuru/logs/hinn.log |
Hinn |
[2026-07-28 10:25:42] ✅ Exécution:
{
"tool": "mcp_ls",
"params": {"path": "/home/hauuru/Desktop"},
"result": "fichier1.txt fichier2.txt"
}
|
tail -n 20 /home/hauuru/logs/mcp_audit.log
grep -i "failed\|denied" /home/hauuru/logs/*.log
journalctl -u mcp-gateway --since "1 hour ago"
flowchart TD
A[Logs Bruts] -->|tail/grep| B[Filtrage]
B -->|jq| C[Analyse JSON]
C --> D[Rapport d'Audit]
D -->|alert| E[Calcifère]
⚠️ Un audit non récité chaque lune nouvelle laisse des failles ouvertes.
Les clefs des royaumes externes ouvrent des portes puissantes, mais mal utilisées, elles attirent les ombres. Ne les gravez jamais en clair dans les grimoires publics.
| Service | Fichier de Configuration | Exemple (Masqué) |
|---|---|---|
| LiteLLM | ~/.litellm/config.yaml |
model_list:
- model_name: "mistral-medium-2508"
litellm_params:
model: "mistralai/mistral-medium"
api_key: "xxxxxxxx"
|
| Cerebras | ~/.nanobot-hinn/config.json |
"providers": {
"cerebras": {
"api_key": "xxxxxxxx",
"api_base": "https://api.cerebras.ai/v1"
}
}
|
litellm update_key --model mistral-medium-2508
gpg --encrypt pour les sauvegardes :
gpg -c ~/.litellm/config.yaml
chmod 600 ~/.litellm/config.yaml
graph LR
A[Clef en clair] -->|❌ Danger| B[Ombres]
C[Clef chiffrée] -->|gpg| D[Coffre]
D -->|litellm| E[API Sécurisée]
⚠️ Une clef exposée est une porte ouverte aux démons du réseau.
Utilisez export LITELLM_MASTER_KEY="xxxxxxxx" pour les environnements temporaires.
Chaque agent trace un cercle de pouvoir, limité par des runes de permission. Un cercle brisé laisse entrer le chaos.
graph TD
A[Sen] -->|WebSocket:87**| B[Calcifère]
B -->|API:89**| C[Sophie]
B -->|API:89**| D[Marco]
B -->|API:89**| E[Hinn]
E -->|MCP:50**| F[Gateway]
style A fill:#f9d71c,stroke:#333
style F fill:#d4af37,stroke:#333
| Agent | Accès Filesystem | Accès Réseau | Outils |
|---|---|---|---|
| Sen | ~/.nanobot-sen/workspace/** |
WebSocket seulement (87**) | exec (handoff) |
| Hinn | /home/hauuru/logs/ (lecture) |
SSRF whitelist (89**, 50**) | mcp_ls, shell |
| Sophie | ~/projects/** (écriture) |
Aucun (isolation) | memory, long-goal |
# docker-compose.yml (exemple)
services:
sophie:
volumes:
- ~/projects:/projects:ro # Lecture seule
ps aux | grep -E 'nanobot|mcp'
⚠️ Un agent hors de son cercle devient un démon incontrôlable.
Avant chaque invocation, récitez ces serments pour sceller le pacte avec les agents. Un serment oublié est une faille ouverte.
Je jure de ne jamais invoquer un agent sans :
1. Vérifier son cercle d’influence.
2. Limiter ses permissions au strict nécessaire.
3. Graver chaque action dans les logs.
Que les démons me frappent si je mens.
Avant de lancer un sortilège (ex: rm -rf), je réciterai :
« Par la lune et les runes, je vérifie :
- Le chemin est exact et limité.
- Les logs sont activés.
- Un rollback est prêt. »
Sinon, que le chaos s’installe.
Tous les 28 jours, je : 1. Tourne les clefs (litellm update_key). 2. Purge les artefacts maudits (find ~/tmp -mtime +7 -delete). 3. Récite les logs (grep "failed\|denied" ~/logs/*.log). Que les anciens sorts s’effacent.
flowchart TD
A[Invocateur] -->|Serment| B[Agent]
B -->|Action| C[Logs]
C -->|Vérification| D[Lune]
D -->|Cycle| A
style D fill:#f9d71c,stroke:#333
⚠️ Un serment non récité est une porte ouverte aux démons du réseau.