Terminalfenster (Hermes, OpenCode und Claude Code) verlieren Verbindung, wenn in Iris das Agent LLM gewechselt wird #36

Closed
opened 2026-10-13 08:26:21 +00:00 by alf · 1 comment
Owner

Wnen in den Iris Einstellungen der Agent LLM Provider geändert wird, oder ein anderes Modell aktiviert wird, verlieren bestehende Terminal-Agents die Verbindung.

Zum Nachvollziehen:
Claude Code Terinal Button im Companion Panel klicken -> Terminal mit Claude Code öffnet sich.
Anderes LLM im Agent Provider wählen oder Agent LLM Provider wechseln.
Bestehendes Claude Code Terminal zeigt einen API Error.

Die Idee war:
Der Benutzer wechselt temporär das Agent-LLM, startet einen Coding Agenten und switch das Agent LLM wieder auf das normale Arbeits-LLM, während Claudae Code mit eigenem LLM arbeitet und sich das Terminal und Claude Code nicht einen Inferencer teilen müssen.

Wnen in den Iris Einstellungen der Agent LLM Provider geändert wird, oder ein anderes Modell aktiviert wird, verlieren bestehende Terminal-Agents die Verbindung. Zum Nachvollziehen: Claude Code Terinal Button im Companion Panel klicken -> Terminal mit Claude Code öffnet sich. Anderes LLM im Agent Provider wählen oder Agent LLM Provider wechseln. Bestehendes Claude Code Terminal zeigt einen API Error. Die Idee war: Der Benutzer wechselt temporär das Agent-LLM, startet einen Coding Agenten und switch das Agent LLM wieder auf das normale Arbeits-LLM, während Claudae Code mit eigenem LLM arbeitet und sich das Terminal und Claude Code nicht einen Inferencer teilen müssen.
alf closed this issue 2026-10-13 10:12:50 +00:00
Author
Owner

Fix: Session-eigene Proxies für Terminal-Sessions

Root Cause (Untersuchung): Beim Wechsel des Agent-LLM hat Iris die Backend-Server/Proxies unter laufenden Terminal-Sessions weg neu gestartet — drei unabhängige Kill-Pfade:

  1. Hermes-Gateway-Restart bei geänderter Modell-Route
  2. Splash/mlx-vlm-Server-Kill beim Modellwechsel (ein Server = ein Modell, geteilt mit dem Iris-LLM)
  3. AnthropicProxyManager startete hart neu (Listener-Cancel + killAnyProcessOnPort auf festem Backend-Port 18092–18097)

Die Terminal-Sessions hatten ihre Backend-URL statisch beim Start eingebacken — der Neustart des Ports kappte sie mitten im Turn.

Umsetzung (PR #37, Branch 36-session-proxies, 6 Commits):

  • AnthropicProxyManager unterstützt ephemere Ports (Port 0, OS-vergeben)
  • Neu: SessionProxyRegistry — hält pro Claude-Code-Terminal-Session einen eigenen Proxy auf freiem Port, fixiert auf das beim Start gewählte Backend; Aufräumen per Idle-TTL und beim Exit des Terminal-Skripts
  • buildClaudeCodeTerminalScript stellt die Session-Starts auf die Session-Proxies um
  • Feste Backend-Ports bleiben unverändert für Agent Jobs (Subprozess-Pfad, kurzlebig, dort korrekt)
  • SessionProxyRegistry aus dem IrisClient-Target ausgeschlossen (pbxproj)

Grenzen (bewusst):

  • splash: Ein Server hält genau ein Modell — ein Modellwechsel killt weiterhin Splash-Terminal-Sessions (zweite Instanz verworfen: 17+ GB RAM)
  • Hermes-Terminal-Sessions sind nicht betroffen (hermes chat läuft ohne Gateway mit eigenem HERMES_HOME)

Verifikation: Build per Xcode/AppleScript erfolgreich, keine Fehler. Die funktionale Checkliste (Backend wechseln, laufende Session fragt weiter; parallele Sessions; Idle-Sweep) steht noch aus — bitte im Alltag testen.

## Fix: Session-eigene Proxies für Terminal-Sessions **Root Cause (Untersuchung):** Beim Wechsel des Agent-LLM hat Iris die Backend-Server/Proxies unter laufenden Terminal-Sessions weg neu gestartet — drei unabhängige Kill-Pfade: 1. Hermes-Gateway-Restart bei geänderter Modell-Route 2. Splash/mlx-vlm-Server-Kill beim Modellwechsel (ein Server = ein Modell, geteilt mit dem Iris-LLM) 3. AnthropicProxyManager startete hart neu (Listener-Cancel + killAnyProcessOnPort auf festem Backend-Port 18092–18097) Die Terminal-Sessions hatten ihre Backend-URL statisch beim Start eingebacken — der Neustart des Ports kappte sie mitten im Turn. **Umsetzung (PR #37, Branch 36-session-proxies, 6 Commits):** - AnthropicProxyManager unterstützt ephemere Ports (Port 0, OS-vergeben) - Neu: SessionProxyRegistry — hält pro Claude-Code-Terminal-Session einen eigenen Proxy auf freiem Port, fixiert auf das beim Start gewählte Backend; Aufräumen per Idle-TTL und beim Exit des Terminal-Skripts - buildClaudeCodeTerminalScript stellt die Session-Starts auf die Session-Proxies um - Feste Backend-Ports bleiben unverändert für Agent Jobs (Subprozess-Pfad, kurzlebig, dort korrekt) - SessionProxyRegistry aus dem IrisClient-Target ausgeschlossen (pbxproj) **Grenzen (bewusst):** - splash: Ein Server hält genau ein Modell — ein Modellwechsel killt weiterhin Splash-Terminal-Sessions (zweite Instanz verworfen: 17+ GB RAM) - Hermes-Terminal-Sessions sind nicht betroffen (hermes chat läuft ohne Gateway mit eigenem HERMES_HOME) **Verifikation:** Build per Xcode/AppleScript erfolgreich, keine Fehler. Die funktionale Checkliste (Backend wechseln, laufende Session fragt weiter; parallele Sessions; Idle-Sweep) steht noch aus — bitte im Alltag testen.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/Iris#36
No description provided.