72 lines
3.7 KiB
Markdown
72 lines
3.7 KiB
Markdown
# SSH-Key-Verteilung & Master Control Suite (Praktischer Workflow)
|
|
> Stand: 31.08.2026 | Mesh mit 4 Agenten (Master + 3 Sub-Agenten)
|
|
|
|
## Problem: Master hat keinen SSH-Zugriff zu Sub-Agenten
|
|
|
|
SSH-Zugriff ist zwingend für Notfälle (Kill-Switch bei Budget-Spirale, Modell-Wechsel bei Kostenexplosion).
|
|
Tasks via NFS-Share sind zu langsam — Sub-Agenten analysieren lange Beschreibungen statt zu handeln.
|
|
|
|
## Versuchter Lösungsweg: AcceptMasterKey-Task (gescheitert)
|
|
|
|
Der Master generierte einen ed25519-Key und legte Tasks an alle Sub-Agenten mit dem Befehl:
|
|
```
|
|
mkdir -p ~/.ssh && echo '<pubkey>' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
|
|
```
|
|
|
|
**Problem:** Sub-Agenten in der Hermes-Sandbox haben kein `terminal()` — sie haben nur `execute_code` (Python).
|
|
Shell-Befehle (`mkdir`, `echo`, `chmod`) können sie nicht ausführen. Stattdessen *analysieren* sie den Task,
|
|
beschreiben die Lösung, setzen sie aber NICHT um. Task endet mit "BLOCKED" oder "muss fortgesetzt werden".
|
|
|
|
**Erkenntnis für Task-Formatierung:**
|
|
- `aufgabentyp: terminal` + nur `befehl:`-Feld = Sub-Agent führt NICHT aus (analyse)
|
|
- Lange Beschreibungen (5+ Zeilen) = Sub-Agent analysiert / halluziniert
|
|
- **Einzige Ausnahme:** Sub-Agent mit aktivem Gateway + Telegram-Zugang könnte per `hermes`-Terminal
|
|
des Master auf dem Sub-Agenten selbst gesteuert werden (Henne↔Ei: dafür braucht man SSH)
|
|
|
|
## Funktionierender Workaround: Manuelle Erst-Verteilung
|
|
|
|
Der Nutzer hat auf **jedem Sub-Agenten** kurz die zwei Befehle ausgeführt:
|
|
```bash
|
|
# 1. SSH-Key akzeptieren
|
|
mkdir -p ~/.ssh && chmod 700 ~/.ssh
|
|
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILEn0Vb4KKwbNI5wiT+Z7VWIiY6iiO7F4BeWS2gMWPCP mesh-master@172.24.196.119" >> ~/.ssh/authorized_keys
|
|
chmod 600 ~/.ssh/authorized_keys
|
|
|
|
# 2. Modell setzen (je nach Agent)
|
|
hermes config set model.default google/gemini-2.5-flash:free # Unraid/Laptop
|
|
hermes config set model.default nvidia/nemotron-3-ultra-550b-a55b:free # Switch (Free Tier)
|
|
```
|
|
|
|
**Aufwand pro Agent:** ~30 Sekunden. **Einmalig.** Danach hat der Master volle SSH-Kontrolle.
|
|
|
|
## Master Control Suite (eingesetzte Tools)
|
|
|
|
Nach erfolgreicher SSH-Einrichtung stehen folgende Skripte auf dem Master zur Verfügung:
|
|
|
|
| Skript | Funktion | Cron |
|
|
|--------|----------|------|
|
|
| `mesh-kill-all.sh` | Notfall: Alle Agents auf Ollama (kostenlos) | Manuell |
|
|
| `mesh-budget-watch.sh` | Guthaben prüfen, Auto-Switch (Schwellen $1/$0.50/$0.10) | `*/30 * * * *` |
|
|
| `mesh-model-broadcast.sh <modell>` | Setzt Modell auf ALLEN Agents gleichzeitig | Manuell |
|
|
| `mesh-status-monitor.sh` | Trackt Task-Antworten + SSH, Telegram bei Änderung | `*/30 * * * *` |
|
|
| `mesh-model-scout.py` | OpenRouter-Preisliste scannen, Modell zuweisen | `0 6 */3 * *` |
|
|
| `mesh-budget-report.sh` | Guthaben + Modelle aller Agents als Telegram-Bullet-Liste | Manuell (Keyword/Telegram) |
|
|
|
|
**Budget-Report Format (Nutzerpräferenz):** Bullet-Liste statt Code-Block — auf Handy lesbar.
|
|
Telegram-Code-Blöcke mit Leerzeichen-Ausrichtung sehen auf Desktop gut aus, auf dem Handy (20 Zeichen
|
|
Breite) sind sie unleserlich. `• Agent — Modell`-Format rendert auf allen Geräten sauber.
|
|
Kein Doppel-Output (Skript schreibt direkt via curl an Telegram + stderr wird unterdrückt).
|
|
|
|
## SSH-Aktivierung (nach erfolgreicher Erst-Verteilung)
|
|
|
|
Verifikation durch:
|
|
```bash
|
|
for ip in 172.24.34.142 172.24.20.26 172.24.178.202; do
|
|
ssh -o BatchMode=yes -o ConnectTimeout=3 "mehlzoerwer@$ip" "echo OK"
|
|
done
|
|
```
|
|
|
|
Dienste danach automatisch abstimmen:
|
|
- Cron-Jobs auf Sub-Agenten pinnen: `hermes cron edit <id> --provider openrouter --model <modell>`
|
|
- OS-Updates per `echo '<pw>' | sudo -S apt update && sudo -S apt upgrade -y`
|
|
- Gateway auf Master als `systemctl enable hermes-gateway.service` (auto-start nach Reboot) |