# Commander Next – Migrationsbericht **Prüf-/Migrationszeitraum:** 2026-07-16 UTC **Ziel:** kontrollierte Übernahme kompatibler Commander-Alt-Daten nach Commander Next **Sicherheitsgrenze:** Keine produktive Umschaltung, keine öffentliche Route, kein Nginx-Reload, keine Änderung an Alt-Commander, Carlo oder Messaging. > **Secret-Schutz:** Dieser Bericht enthält keine API-Schlüssel, Tokens, Passwörter, Authentifizierungsinhalte oder Secretwerte. Secret-nahe Inhalte werden nur als vorhanden/nicht vorhanden und über Dateirechte beschrieben. Die finalen SHA256-Werte der beiden Berichte werden extern ausgegeben, weil ein Bericht keine nichtrekursive Selbstreferenz enthalten kann. ## 1. Systeme und Pfade | Bestand | Installation | Daten/Home | Benutzer | Version/Format | |---|---|---|---|---| | Commander Alt | `/opt/hermes-root` | `/root/.hermes` | `root:root` | Hermes-Config-Version 24; State-Schema 16 | | Commander Next | `/opt/hermes-commander-next` | `/opt/hermes-commander-next-data` | `hermes-commander:hermes-commander` | Hermes Agent v0.18.2; Release v2026.7.7.2; Config-Version 33; State-Schema 19 | Next-Dienste: - `hermes-commander-next.service` - `hermes-commander-next-dashboard.service` - Dashboard: `127.0.0.1:9129` Alt-Dienste: - `hermes-root.service` - `hermes-root-dashboard.service` ## 2. Vollständige Inventur ### 2.1 Umfang und Kategorien | Kategorie | Alt | Next vor Migration | Ergebnis/Methode | |---|---:|---:|---| | Dateien gesamt | 1.108 | 659 | keine Komplettkopie | | Bytes gesamt | 160.365.870 | 48.313.991 | nur freigegebene Bestände | | `SKILL.md` | 86 erkannt / 482 Skill-Bestand-Dateien | 86 erkannt / 485 Bestand-Dateien | bereits byteidentisch; 0 erneut kopiert | | Built-in Memory-Dateien | 2 nichtleer | 0 | `MEMORY.md` und `USER.md` direkt kompatibel übernommen | | State-Sessions | 26 | 15 | 26 kontrolliert gemerged | | State-Nachrichten | 4.350 | 34 | 4.350 kontrolliert gemerged | | MCP-Server | 0 | 0 | nicht übernommen | Die größeren Dateibestände enthalten bei Alt insbesondere Logs, Cache, LSP, SQLite-WAL/SHM, Locks, PID-Dateien, Backups und Laufzeitdaten. Diese wurden nicht in die laufende Next-Konfiguration kopiert. ### 2.2 Konfiguration und Provider - Alt: `/root/.hermes/config.yaml`, 2.042 Bytes, `root:root`, `0600`, Config-Version `24`. - Next: `/opt/hermes-commander-next-data/config.yaml`, vor Migration 1.851 Bytes, `hermes-commander:hermes-commander`, `0600`, Config-Version `33`. - Provider/Modell in beiden aktiven Hauptkonfigurationen: `openai-codex` / `gpt-5.4-mini`. - Alt enthielt zusätzlich OpenRouter-/YOLO-/Root-CWD-Variablen. Diese wurden nicht übernommen. - `auth.json` war in beiden Homes vorhanden, `0600`; Inhalte wurden nicht ausgegeben oder kopiert. - `.env` wurde nicht von Alt nach Next kopiert. Next behält nur seine bereits vorhandene Dashboard-Authentifizierung und die vorhandene Codex-Authentifizierung. Über offizielle Befehle übernommen/gesetzt: - `config set memory.memory_enabled true` - `config set memory.user_profile_enabled true` - `config set memory.memory_char_limit 2200` - `config set memory.user_char_limit 1375` - `config set display.language de` - `config set display.show_reasoning true` - `config set display.streaming true` Nicht übernommen wurden Alt-Werte für Root-CWD, OpenRouter-Fallback/Delegation, YOLO-Modus, Messaging und externe Memory-Provider. ### 2.3 Skills - Herkunft: `/root/.hermes/skills` - Ziel: `/opt/hermes-commander-next-data/skills` - Vorher/Nachher-Vergleich: Alt `86`, Next `86` `SKILL.md`. - Hashvergleich: `ONLY_ALT=0`, `ONLY_NEXT=0`, `MISMATCH=0`. - Next erkannte `13` lokale Skills, `0` Hub-installed und `0` Builtin-Skills; `13` aktiviert. - Es war keine erneute Skill-Kopie erforderlich; der Bestand war bereits aus Alt vorhanden und byteidentisch. - Aktive Skills wurden nicht überschrieben. ### 2.4 Memories - Alt: `/root/.hermes/memories/MEMORY.md` (574 Bytes, 3 Zeilen, `0600`, root), `USER.md` (384 Bytes, 3 Zeilen, `0600`, root); jeweils nichtleer und lesbar. - Nicht übernommen: `*.lock`. - Next vor Migration: keine eigentlichen Memory-Dateien. - Next nach Migration: `/opt/hermes-commander-next-data/memories/MEMORY.md` und `USER.md`, jeweils `0600`, Besitzer `hermes-commander:hermes-commander`, nichtleer. - SHA256 der migrierten Memory-Dateien: nur als technische Identität im Prüfprotokoll erfasst, nicht als Secret. - Externer Memory-Provider: keiner; Hermes meldet Built-in Memory „always active“. ### 2.5 Sessions und Metadaten - Alt: 26 Sessions, 4.350 Nachrichten, State-Schema 16. - Next vor Migration: 15 Sessions, 34 Nachrichten, State-Schema 19. - Next nach Migration und dem Hauptprüfstand: 52 Sessions, 4.406 Nachrichten. - Danach erzeugte die zusätzliche inhaltliche Kontext-Resume-Prüfung eine weitere CLI-Session; finaler Stand bei Berichtabschluss: 53 Sessions, 4.411 Nachrichten. - Migriert: 26 Sessions / 4.350 Nachrichten. - Übersprungen: 0. - Session-ID-Konflikte: 0. - Titelkonflikte: 0. - Die offizielle Hermes-Funktion `sessions export --format jsonl --redact --yes` wurde erfolgreich ausgeführt: 26 redigierte JSONL-Zeilen im Backup. - Ein offizieller Session-Import ist in `hermes sessions --help` nicht vorhanden. Deshalb wurde nach Schema-Prüfung ein transaktionaler, kontrollierter DB-Merge verwendet. - Gemeinsame Session-Felder wurden übernommen; Next-v0.18.2-Zusatzfelder blieben auf Defaults. - Message-IDs wurden nicht übernommen, sondern von Next neu vergeben; dadurch keine ID-Kollision. - Alle alten/root-spezifischen CWDs wurden explizit auf `/opt/hermes-commander-next-data/test-workspace` gemappt. - Drei Sessions wurden mit Metadaten, Verlauf und tatsächlicher Nachrichtenanzahl validiert: - `20260624_131719_6fadbe`: 22/22 Nachrichten, Titel `00_Commander_Systemstatus`. - `20260625_193502_a3f5b8`: 158/158 Nachrichten, Titel `00_Commander_Wissensbasis`. - `20260715_150725_d3f3c7`: 119/119 Nachrichten, Titel `Hermes-Carlo-Container Diagnose #3`, `openai-codex` / `gpt-5.4-mini`. - Echter Kontext-Resume: `hermes --resume 20260715_150725_d3f3c7 ...` lieferte nach Neustarts `0.144.4`, eine Information aus dem übernommenen Alt-Verlauf. Exit `0`. - Hermes legt bei CLI-Resume eine neue Antwort-Session an; die ursprüngliche Session bleibt unverändert erhalten. Providerverteilung der Alt-Sessions: - `openrouter`: 12 Sessions; wegen bewusst nicht übernommener OpenRouter-Secrets nicht ohne weitere Freigabe ausführbar. - `openai-codex`: 9 Sessions; funktional geprüft. - kein Provider in Metadaten: 5 Sessions; historische Metadaten unvollständig. ### 2.6 MCP, Tools, Gateway, Messaging und Automationen - MCP: Alt und Next melden jeweils „No MCP servers configured“; keine Migration. - Tool-Konfiguration: Alt hatte `toolsets: [hermes-cli]`; Next behielt seine isolierte v0.18.2-Auswahl `[terminal, file, skills, todo, session_search]`. Kein Root-CWD und keine Alt-Toolbreite wurden blind übernommen. - Tool-Funktionstest: Skill-Laden und Terminal-/Dateiumgebung waren erfolgreich; der Agent antwortete `SKILL_MIGRATION_OK`. - Gateway-Dateien, PID, Locks, Logs, Cron-Locks, Cache und Runtime-Zustände wurden nicht migriert. - Messaging-/Allowlists: nicht aktiviert und nicht übernommen. - Cron-/Automationsdaten: nicht übernommen; bestehende Next-Isolation blieb erhalten. - Systemprompt: Die in den migrierten Sessionzeilen enthaltenen Systemprompt-Felder wurden schema-kompatibel übernommen. `SOUL.md` war in Next bereits vorhanden; keine blinde Kopie. - Profile: keine separate aktive Profilmigration nachgewiesen; Next bleibt im eigenen Daten-Home. ## 3. Backup Vor der Migration erstellt: `/opt/backups/hermes-commander-next-before-migration-20260716-084705/` Enthalten: - vollständige Kopie `/root/.hermes` als `alt-hermes/` - vollständige Kopie `/opt/hermes-commander-next-data` als `next-data/` - Next-Units - `/opt/hermes-commander-next/bin/hermes-systemd-planned-stop` - konsistente SQLite-Kopien von Alt und Next - redigierter offizieller Alt-Sessionexport - Vor-Migrations-Konfigurationskopie und Session-Merge-Proof - `SHA256SUMS` - `FILELIST-OWNER-MODE-SIZE.json` Finale Backupprüfung: - 1.781 Dateien - 282.668.566 Bytes - SHA256 `SHA256SUMS`: `0fe67c72dda869ac82c79efca09d49324685bde0e724cf6f1a8c299a70ed9a3f` - SHA256 Datei-/Owner-/Modusliste: `b8e52f289d763d50b894203604df185b2576dd9d6d527be77f1bf21a856d9f19` - `sha256sum -c SHA256SUMS`: Exit `0` - Stichproben: Configs, Memory, Units, Helper und beide konsistenten SQLite-Kopien tatsächlich gelesen; SQLite-Integrität jeweils `ok`. ## 4. Migrationsmethode und Rechte Nicht durchgeführt wurde eine Komplettkopie von `/root/.hermes`. Direkt übernommen: - zwei Built-in-Memory-Dateien - 26 Sessiondatensätze und 4.350 kompatible Nachrichten nach transaktionalem Schema-Merge Nicht übernommen: - PID-/Lock-Dateien - alte Logs - Caches - WAL-/SHM-Laufzeitreste als aktive Next-Daten - Root-Rechte und Root-CWDs - alte `.env`-Provider-Secrets - historische Gateway-/Cron-Zustände - Messaging und Allowlists - externe Memory-Provider Nach Migration: - Benutzer/Gruppe migrierter Memory- und State-Dateien: `hermes-commander:hermes-commander` - Memory-Dateien: `0600` - State-DB: `0600` - Memory- und Session-Verzeichnisse: `0700` - keine vorhandenen Dateien stillschweigend überschrieben; Konfigurations-Diff und Backup vorhanden. ## 5. Konfigurations- und Funktionstests | Test | Ergebnis | |---|---| | `hermes config migrate` nach Migration | Exit `0` | | `hermes config check` nach Migration | Exit `0`, Version 33 | | final `config migrate` nach Neustarts | Exit `0` | | final `config check` nach Neustarts | Exit `0` | | exakter Agententest `MIGRATION_AGENT_OK` | Exit `0`, 7.342 ms, stdout exakt Marker, stderr leer | | Skilltest `SKILL_MIGRATION_OK` | Exit `0` | | Dashboard `/` | HTTP 200 | | Dashboard `/health` | HTTP 200 | | Dashboard `/openapi.json` | HTTP 200 | | Memorytest vor Neustarts | Exit `0`, `MEMORY_MIGRATION_OK` | | Memorytest nach Neustarts | Exit `0`, `MEMORY_POST_RESTART_OK` | | Resume nach Neustarts | Exit `0`, Kontextantwort `0.144.4` | | neue Next-Session | Exit `0`, `MIGRATION_NEW_SESSION_OK` | | FTS/Trigram-Index | 4.406/4.406, Integrität `ok` | Provider/Modell des funktional geprüften Next-Agenten: `openai-codex` / `gpt-5.4-mini`. ## 6. Stop-/Start- und Restarttests Zwei vollständige Stop-/Start-Zyklen für beide Next-Dienste: - Zyklus 1: Gateway Stop `0`/371 ms, Dashboard Stop `0`/210 ms; beide `Result=success`, `ExecMainStatus=0`, CGroup/Prozessbestand leer, Port frei; Start `0`, Health 200, Agent `MIG_CYCLE_1_OK` Exit 0. - Zyklus 2: Gateway Stop `0`/373 ms, Dashboard Stop `0`/168 ms; beide `Result=success`, `ExecMainStatus=0`, CGroup/Prozessbestand leer, Port frei; Start `0`, Health 200, Agent `MIG_CYCLE_2_OK` Exit 0. Zwei vollständige Restart-Zyklen: - Restart 1: Dashboard/Gateway Exit `0`, 557 ms, beide active, Health 200, Agent `MIG_RESTART_1_OK` Exit 0, `NRestarts=0`, Gateway `Result=success`, `ExecMainStatus=0`. - Restart 2: Dashboard/Gateway Exit `0`, 581 ms, beide active, Health 200, Agent `MIG_RESTART_2_OK` Exit 0, `NRestarts=0`, Gateway `Result=success`, `ExecMainStatus=0`. In den geprüften Journals keine Timeout-, SIGKILL-, `status=1/FAILURE`-, Permission- oder Datenbankfehler. ## 7. Alt-Commander, Carlo und Nginx Keine Alt-/Carlo-/Nginx-Aktion wurde ausgeführt. Nach der Migration: - `hermes-root.service`: active/running, `Result=success`, `ExecMainStatus=0`, `NRestarts=0`. - `hermes-root-dashboard.service`: active/running, `Result=success`, `ExecMainStatus=0`, `NRestarts=0`. - Carlo `hermes-carlo`: running. - Carlo-Image: `hermes-carlo:bak-pre-chathdr-20260607-215006`. - Carlo-Portbindungen unverändert: `127.0.0.1:3010 -> 3000/tcp`, `127.0.0.1:3014 -> 9119/tcp`. - Alt-Unit-SHA256 unverändert: `hermes-root.service` `9bcd026103e3109d7a5a06864d9013364728eebc973df14145414fa38f8f6289`; Dashboard `dbd11c990f77c838140357f98afd56bc2eb3285bd862ac82786a8d03c15c960f`. - Alt-Nginx-Vhost `hermes-root.agentsolutions-mallorca.com`: `b9e87c554c14c226d9b87d27d573a41d4b1bf064baf974ba3f7a1bc225b30f34`. - Kein Nginx-Reload und keine öffentliche Next-Route. ## 8. Sicherheits- und Updatebewertung **Sicherheitsbewertung:** Die Migration war restriktiv: keine Secrets im Bericht, keine Alt-Secrets kopiert, keine Root-Rechte in Next, Memory/State restriktiv geschützt, keine Messaging-Aktivierung, keine öffentliche Route. Die migrierten historischen Sessions enthalten jedoch historische Provider-/Toolinhalte und sind als sensible Benutzerdaten zu behandeln. **Updatebewertung:** Next bleibt auf Hermes v0.18.2 / Release v2026.7.7.2. `config migrate` und `config check` sind erfolgreich. Ein späteres Update muss erneut mit Backup, Config-Migration, DB-Integritätsprüfung, Agent-, Skill-, Resume-, Stop-/Start- und Rollbacktests erfolgen. Die 12 OpenRouter-Sessions dürfen erst nach separater Credential-Freigabe operativ wiederaufgenommen werden. ## 9. Rollbackplan 1. Nur Commander Next stoppen: `hermes-commander-next.service` und `hermes-commander-next-dashboard.service`. 2. Vor-Migrations-Next-Daten aus `next-data/` bzw. konsistenter `next-state-premerge-consistent.db` wiederherstellen. 3. Migrierte Memory-Dateien und die geänderte Config anhand des Backups zurücksetzen. 4. Besitzer/Rechte auf `hermes-commander:hermes-commander`, Secrets `0600`, private Verzeichnisse `0700` setzen. 5. `config check` ausführen; danach ausschließlich Next starten und Health/Agent/Journal prüfen. 6. Alt-Commander, Carlo und Nginx bleiben während des Rollbacks unverändert. ## 10. Abschlussentscheidung # B – Kernmigration erfolgreich; klar benannte Restdaten/Funktionen fehlen noch. Commander Next ist technisch stabil und für eine spätere kontrollierte Umschaltung vorbereitet, aber noch nicht vollständig funktionsgleich für alle historischen Sessions: - 12 Alt-Sessions referenzieren OpenRouter/Nemotron; kein OpenRouter-Secret wurde aus Sicherheitsgründen übernommen. - 5 Alt-Sessions haben keinen Billing-Provider in ihren Metadaten. - Die Sessions sind vorhanden, lesbar und nicht beschädigt; eine vollständige operative Wiederaufnahme dieser Providerhistorien erfordert einen separaten, ausdrücklich freigegebenen Provider-/Credential-Auftrag. Es wurde nicht umgeschaltet. Boot-Autostart, öffentliche Route, Nginx-Reload, Alt-Stop und Carlo-Änderungen bleiben offen und wurden nicht ausgeführt. ## 11. Berichtspfade Vorgesehene Dateien: - `K:\Espresso\10_SYSTEM\Hermes\Commander-Next-Migrationsbericht.md` - `/opt/struktur/reports/commander-next-migrationsbericht.md` Beide Zielpfade waren vor Erstellung nicht vorhanden. Größe, Änderungszeit und SHA256 werden nach dem Schreiben separat verifiziert und extern ausgegeben; der Bericht enthält keine rekursive Selbstreferenz.