heartmula: auf iris-server-hosts umstellen (Picker mit needs, host_id, Resolver-Route, config-status) #138

Closed
opened 2026-10-19 11:23:26 +00:00 by alf · 6 comments
Owner

Warum

Zweites der fünf GPU-Plugins, die auf iris-server-hosts umgestellt werden (Folge von iris/iris-plugins#115; erstes war Marker, #135; Muster und Marktplatz-Anzeige: iris/Iris#85). HeartMuLa läuft auf einem GPU-Rechner und trägt heute SSH-Ziel (ssh_target) und Schlüssel in seinem Konfigurationsfenster; das Fenster holt /gpu-hosts/targets (404, der Picker bleibt leer), und das Plugin hat keine panel_api, kann also keinen Zustand für den Marktplatz melden.

Spezifikation

  • Picker und Kennung: Das Fenster wählt den Rechner aus GET /hosts/targets (Anforderung gpu im Manifest: host_capabilities: ["gpu"]; HeartMuLa installiert per Skript, nicht per Docker) und speichert nur host_id. Der Abschnitt heißt „Installieren auf:“ (wie bei Marker): Picker, „Installieren/Aktualisieren“ mit Fortschritt, darunter unter „Optionen“ nur der Installationspfad. Entfallen: „SSH-Schlüssel“, „Anderer Rechner“, „Verbindung testen“. Läuft HeartMuLa dort schon, steht grün „installiert“, nicht ein roter Fehler.
  • Laufzeit: heartmula-cli (start, poll, deliver, cleanup) liest kein ssh_target mehr. Es fragt den Server nach der Kennung: neue Resolver-Route GET /hosts/resolve?host_id=… auf beiden Servern (Linux: Bearer aus iris_notify_config.json, Mac: nur Loopback wie /notify), Antwort {"ssh_target": "benutzer@adresse"} (404 bei unbekannter Kennung). Sie dient auch den anderen GPU-Plugins (whisper, qwen-tts-linux, comfyui-bridge). Ein Plugin-Skript liest nie die Host-Liste selbst.
  • Zustand im Marktplatz: config-status über eine kleine panel_api (python/heartmula_panel_api.py): Grün, wenn host_id gewählt und HeartMuLa dort installiert ist (install_path gespeichert); Gelb „Rechner wählen“ bzw. „HeartMuLa auf dem Rechner installieren“. Erreichbarkeit prüft er nicht.
  • Übernahme alter Konfiguration: Ein früher gespeichertes ssh_target wird nur im Fenster als Vorauswahl genutzt (Treffer in der Host-Liste); gespeichert wird danach host_id, ssh_target verschwindet beim ersten Speichern.
  • Version 2.2.0, Veröffentlichung sofort, Einreichen nach Alfs Test.

Stand

  • Resolver-Route GET /hosts/resolve auf Linux- und Mac-Server — eingereicht
  • heartmula-cli löst die Kennung über den Server auf — eingereicht
  • Panel umgestellt („Installieren auf:“), config-status, Manifest — eingereicht
  • Veröffentlicht, von Alf getestet (Picker, Installation, Lied erzeugen), eingereicht: iris-plugins#139

Verlauf und PRs in den Kommentaren.

## Warum Zweites der fünf GPU-Plugins, die auf `iris-server-hosts` umgestellt werden (Folge von iris/iris-plugins#115; erstes war Marker, #135; Muster und Marktplatz-Anzeige: iris/Iris#85). HeartMuLa läuft auf einem GPU-Rechner und trägt heute SSH-Ziel (`ssh_target`) und Schlüssel in seinem Konfigurationsfenster; das Fenster holt `/gpu-hosts/targets` (404, der Picker bleibt leer), und das Plugin hat keine `panel_api`, kann also keinen Zustand für den Marktplatz melden. ## Spezifikation - **Picker und Kennung:** Das Fenster wählt den Rechner aus `GET /hosts/targets` (Anforderung `gpu` im Manifest: `host_capabilities: ["gpu"]`; HeartMuLa installiert per Skript, nicht per Docker) und speichert nur `host_id`. Der Abschnitt heißt „Installieren auf:“ (wie bei Marker): Picker, „Installieren/Aktualisieren“ mit Fortschritt, darunter unter „Optionen“ nur der Installationspfad. Entfallen: „SSH-Schlüssel“, „Anderer Rechner“, „Verbindung testen“. Läuft HeartMuLa dort schon, steht grün „installiert“, nicht ein roter Fehler. - **Laufzeit:** `heartmula-cli` (`start`, `poll`, `deliver`, `cleanup`) liest kein `ssh_target` mehr. Es fragt den Server nach der Kennung: **neue Resolver-Route `GET /hosts/resolve?host_id=…`** auf beiden Servern (Linux: Bearer aus `iris_notify_config.json`, Mac: nur Loopback wie `/notify`), Antwort `{"ssh_target": "benutzer@adresse"}` (404 bei unbekannter Kennung). Sie dient auch den anderen GPU-Plugins (whisper, qwen-tts-linux, comfyui-bridge). Ein Plugin-Skript liest nie die Host-Liste selbst. - **Zustand im Marktplatz:** `config-status` über eine kleine `panel_api` (`python/heartmula_panel_api.py`): Grün, wenn `host_id` gewählt und HeartMuLa dort installiert ist (`install_path` gespeichert); Gelb „Rechner wählen“ bzw. „HeartMuLa auf dem Rechner installieren“. Erreichbarkeit prüft er nicht. - **Übernahme alter Konfiguration:** Ein früher gespeichertes `ssh_target` wird nur im Fenster als Vorauswahl genutzt (Treffer in der Host-Liste); gespeichert wird danach `host_id`, `ssh_target` verschwindet beim ersten Speichern. - **Version** 2.2.0, Veröffentlichung sofort, Einreichen nach Alfs Test. ## Stand - [x] Resolver-Route `GET /hosts/resolve` auf Linux- und Mac-Server — eingereicht - [x] `heartmula-cli` löst die Kennung über den Server auf — eingereicht - [x] Panel umgestellt („Installieren auf:“), `config-status`, Manifest — eingereicht - [x] Veröffentlicht, von Alf getestet (Picker, Installation, Lied erzeugen), eingereicht: iris-plugins#139 Verlauf und PRs in den Kommentaren.
Author
Owner

Entwicklung: heartmula 2.2.0 veröffentlicht, Resolver-Route gebaut (noch nicht eingereicht)

Plugin (heartmula 2.2.0, im Marktplatz):

  • Manifest: host_capabilities: ["gpu"] (kein local_mode: ohne GPU-Rechner läuft HeartMuLa nicht), panel_api mit config-status.
  • Panel: Abschnitt „Installieren auf:“ mit Picker (GET /hosts/targets?needs=gpu), „Bitte wählen …“ ohne gespeicherte Wahl, darunter „Installieren“/„Aktualisieren“ mit Fortschritt und „Optionen“ (Installationspfad). Wählt man einen Rechner, prüft das Panel ihn: grün „HeartMuLa ist auf diesem Rechner installiert“ (Knopf „Aktualisieren“) oder „noch nicht installiert“; Rot nur bei einem Fehler. Entfallen: „SSH-Schlüssel“, „Anderer Rechner“, „Verbindung testen“. Gespeichert werden nur host_id, install_path und installed_on (Kennung des Rechners, auf dem die Installation festgestellt wurde); nach der Installation übernimmt das Panel zuerst den von heartmula-cli geschriebenen absoluten Pfad und speichert dann von selbst. Ein altes ssh_target dient nur als Vorauswahl.
  • config-status (python/heartmula_panel_api.py, 6 Tests): Grün, wenn host_id gewählt und installed_on dieselbe Kennung ist; sonst Gelb („Rechner wählen“ bzw. „Installieren“); kein SSH.
  • Docs, Store-Texte, store-page.json, SKILL.md und PLAN.md auf „Installieren auf:“/„Hosts“ umgestellt.

Laufzeit (heartmula-cli): start, poll, deliver, cleanup lesen kein ssh_target mehr. resolve_ssh_target fragt den Iris-Server nach der Kennung; der Weg zum Server (determine_iris_endpoint, aus dem Reporter-Code herausgelöst) ist derselbe wie für die Fortschrittsmeldungen. Gegen einen Mock-HTTPS-Server mit Token geprüft (bekannte Kennung → Ziel, unbekannte und fehlende → leer).

Server (neue Resolver-Route GET /hosts/resolve?host_id=…, ungeshippt): Linux (Bearer, auch cfg_token; 404 bei unbekannter Kennung, nie eine Adresse als Kennung; 3 Live-Tests in tests/test_hosts_resolve.py, laufen nach dem Deploy) und Mac (handleHostResolve; nur Loopback ohne Bearer wie /notify). Sie dient auch den anderen GPU-Plugins.

Nicht geprüft: das Panel in der App, die Installation auf iris-server, das Erzeugen eines Liedes (braucht die neu gebaute Mac-App mit der Resolver-Route). Hinweis: Nach dem Update muss die Konfiguration einmal im Fenster gespeichert werden (Rechner wählen), vorher meldet die Laufzeit „noch nicht konfiguriert“ und der Marktplatz zeigt Gelb.

Zum Testen: Iris neu bauen (Resolver-Route), HeartMuLa im Marktplatz installieren, Rechner wählen, installieren bzw. „Aktualisieren“, speichern, Knopf in der Kachel prüfen, dann im Chat ein Lied bestellen. Eingereicht wird erst nach Alfs Test.

## Entwicklung: heartmula 2.2.0 veröffentlicht, Resolver-Route gebaut (noch nicht eingereicht) **Plugin (heartmula 2.2.0, im Marktplatz):** - Manifest: `host_capabilities: ["gpu"]` (kein `local_mode`: ohne GPU-Rechner läuft HeartMuLa nicht), `panel_api` mit `config-status`. - Panel: Abschnitt **„Installieren auf:“** mit Picker (`GET /hosts/targets?needs=gpu`), „Bitte wählen …“ ohne gespeicherte Wahl, darunter „Installieren“/„Aktualisieren“ mit Fortschritt und „Optionen“ (Installationspfad). Wählt man einen Rechner, prüft das Panel ihn: grün „HeartMuLa ist auf diesem Rechner installiert“ (Knopf „Aktualisieren“) oder „noch nicht installiert“; Rot nur bei einem Fehler. Entfallen: „SSH-Schlüssel“, „Anderer Rechner“, „Verbindung testen“. Gespeichert werden nur `host_id`, `install_path` und `installed_on` (Kennung des Rechners, auf dem die Installation festgestellt wurde); nach der Installation übernimmt das Panel zuerst den von `heartmula-cli` geschriebenen absoluten Pfad und speichert dann von selbst. Ein altes `ssh_target` dient nur als Vorauswahl. - `config-status` (`python/heartmula_panel_api.py`, 6 Tests): Grün, wenn `host_id` gewählt und `installed_on` dieselbe Kennung ist; sonst Gelb („Rechner wählen“ bzw. „Installieren“); kein SSH. - Docs, Store-Texte, `store-page.json`, SKILL.md und PLAN.md auf „Installieren auf:“/„Hosts“ umgestellt. **Laufzeit (`heartmula-cli`):** `start`, `poll`, `deliver`, `cleanup` lesen kein `ssh_target` mehr. `resolve_ssh_target` fragt den Iris-Server nach der Kennung; der Weg zum Server (`determine_iris_endpoint`, aus dem Reporter-Code herausgelöst) ist derselbe wie für die Fortschrittsmeldungen. Gegen einen Mock-HTTPS-Server mit Token geprüft (bekannte Kennung → Ziel, unbekannte und fehlende → leer). **Server (neue Resolver-Route `GET /hosts/resolve?host_id=…`, ungeshippt):** Linux (Bearer, auch `cfg_token`; 404 bei unbekannter Kennung, nie eine Adresse als Kennung; 3 Live-Tests in `tests/test_hosts_resolve.py`, laufen nach dem Deploy) und Mac (`handleHostResolve`; nur Loopback ohne Bearer wie `/notify`). Sie dient auch den anderen GPU-Plugins. **Nicht geprüft:** das Panel in der App, die Installation auf `iris-server`, das Erzeugen eines Liedes (braucht die neu gebaute Mac-App mit der Resolver-Route). Hinweis: Nach dem Update muss die Konfiguration einmal im Fenster gespeichert werden (Rechner wählen), vorher meldet die Laufzeit „noch nicht konfiguriert“ und der Marktplatz zeigt Gelb. **Zum Testen:** Iris neu bauen (Resolver-Route), HeartMuLa im Marktplatz installieren, Rechner wählen, installieren bzw. „Aktualisieren“, speichern, Knopf in der Kachel prüfen, dann im Chat ein Lied bestellen. Eingereicht wird erst nach Alfs Test.
Author
Owner

PR #87 gemergt: feat(hosts): Resolver-Route GET /hosts/resolve für Plugin-Skripte (iris/iris-plugins#138)
iris/Iris#87

Commits:

PR #87 gemergt: feat(hosts): Resolver-Route GET /hosts/resolve für Plugin-Skripte (iris/iris-plugins#138) https://forgejo.lewerken.duckdns.org/iris/Iris/pulls/87 Commits: - feat(hosts): Resolver-Route GET /hosts/resolve für Plugin-Skripte (iris/iris-plugins#138)
Author
Owner

PR #44 gemergt: feat(hosts): Resolver-Route GET /hosts/resolve für Plugin-Skripte (iris/iris-plugins#138)
iris/iris-linux-server#44

Commits:

PR #44 gemergt: feat(hosts): Resolver-Route GET /hosts/resolve für Plugin-Skripte (iris/iris-plugins#138) https://forgejo.lewerken.duckdns.org/iris/iris-linux-server/pulls/44 Commits: - feat(hosts): Resolver-Route GET /hosts/resolve für Plugin-Skripte (iris/iris-plugins#138)
Author
Owner

PR #139 gemergt: feat(heartmula): auf iris-server-hosts umgestellt, Installieren auf:, config-status, Kennung über den Server auflösen (#138)
#139

Commits:

  • feat(heartmula): auf iris-server-hosts umgestellt, Installieren auf:, config-status, Kennung über den Server auflösen (#138)
PR #139 gemergt: feat(heartmula): auf iris-server-hosts umgestellt, Installieren auf:, config-status, Kennung über den Server auflösen (#138) https://forgejo.lewerken.duckdns.org/iris/iris-plugins/pulls/139 Commits: - feat(heartmula): auf iris-server-hosts umgestellt, Installieren auf:, config-status, Kennung über den Server auflösen (#138)
Author
Owner

Eingereicht (2026-10-19, nach Alfs Test)

Repo PR Inhalt
Plugins iris-plugins #139 (13 Dateien) heartmula 2.2.0: „Installieren auf:“, config-status, heartmula-cli löst die Kennung über den Server auf, Docs und Store-Texte
Iris (Mac-App) Iris, main = e378407 GET /hosts/resolve (nur Loopback, ohne Bearer)
Linux-Server iris-linux-server, main = ae5590f GET /hosts/resolve (Bearer) samt 3 Live-Tests

Von Alf getestet: Build der Mac-App mit der Resolver-Route (ein Build-Fehler, isLocalhostHostResolve vor seiner Deklaration verwendet, behoben), HeartMuLa aus dem Marktplatz installiert, Rechner gewählt, installiert, Lied erzeugt — alles wie erwartet.

Offen: Linux-Server nicht neu deployt (die Resolver-Route und ihre 3 Live-Tests laufen erst danach; HeartMuLa ist dort nicht installiert). Die übrigen GPU-Plugins (whisper, qwen-tts-linux, comfyui-bridge) und die Plugins ohne config-status folgen in eigenen Issues (iris/Iris#85).

## Eingereicht (2026-10-19, nach Alfs Test) | Repo | PR | Inhalt | |---|---|---| | Plugins | iris-plugins #139 (13 Dateien) | heartmula 2.2.0: „Installieren auf:“, `config-status`, `heartmula-cli` löst die Kennung über den Server auf, Docs und Store-Texte | | Iris (Mac-App) | Iris, `main` = `e378407` | `GET /hosts/resolve` (nur Loopback, ohne Bearer) | | Linux-Server | iris-linux-server, `main` = `ae5590f` | `GET /hosts/resolve` (Bearer) samt 3 Live-Tests | **Von Alf getestet:** Build der Mac-App mit der Resolver-Route (ein Build-Fehler, `isLocalhostHostResolve` vor seiner Deklaration verwendet, behoben), HeartMuLa aus dem Marktplatz installiert, Rechner gewählt, installiert, Lied erzeugt — alles wie erwartet. **Offen:** Linux-Server nicht neu deployt (die Resolver-Route und ihre 3 Live-Tests laufen erst danach; HeartMuLa ist dort nicht installiert). Die übrigen GPU-Plugins (whisper, qwen-tts-linux, comfyui-bridge) und die Plugins ohne `config-status` folgen in eigenen Issues (iris/Iris#85).
Author
Owner

PR #82 gemergt: docs(wire): Hosts-Routen GET /hosts/targets und GET /hosts/resolve (iris/iris-plugins#138)
alf/2ndbrain#82

Commits:

PR #82 gemergt: docs(wire): Hosts-Routen GET /hosts/targets und GET /hosts/resolve (iris/iris-plugins#138) https://forgejo.lewerken.duckdns.org/alf/2ndbrain/pulls/82 Commits: - docs(wire): Hosts-Routen GET /hosts/targets und GET /hosts/resolve (iris/iris-plugins#138)
alf closed this issue 2026-10-21 23:42:45 +00:00
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-plugins#138
No description provided.