# Modellverwaltung in Athena Deck ## Serverprofile, Downloads und Größen (2026-09-28) Profile sind jetzt echte, serverseitig persistierte Konfigurationen in `state/profiles.json`. Die Bibliothek bietet „Profil anlegen“ für heruntergeladene Gewichtsdateien. Alle vier Bereiche unterstützen Anlegen, Bearbeiten und Duplizieren. Namen sind global eindeutig; Änderungen werden anhand einer Revisionsnummer gegen versehentliches Überschreiben geprüft. Frühere lokale Browserentwürfe werden weder gelöscht noch automatisch als echte Profile importiert. Bildprofile speichern Auflösung, Schritte, Seed und Guidance. Chatprofile speichern Kontextbudget, Slots, Threads, Batch und Microbatch; Audio derzeit Sprechgeschwindigkeit, Video Auflösung, Frames, FPS, Schritte und Seed. Ein Profil startet noch keinen Worker. Fehlende Laufzeiten und bei Qwen-Image-2.1 Textencoder/VAE werden angezeigt. Auf Wunsch des Betreibers werden in diesem Schritt keine Bildlaufzeiten oder Zusatzmodelle installiert. Der Reiter Downloads zeigt die persistierte Downloadhistorie (`models/downloads.json`). „Aus Liste entfernen“ blendet ausschließlich einen beendeten Eintrag aus, auch über Neustarts hinweg. Es löscht keine Modelldatei und keinen Bibliothekseintrag. Bestehende Bibliotheksdateien werden einmalig als abgeschlossene Downloads übernommen. Unterbrochene Downloads bleiben erkennbar; noch kein Fortsetzen/Resume. Abgeschlossene Downloads belegen nicht mehr dauerhaft die Entdecken-Ansicht. Entdecken lädt Dateigrößen mit zwei parallelen Metadatenanfragen nach. Angaben stammen aus Hugging Face und werden fünf Minuten gecacht (maximal 64 Repositories). Die Übersicht bevorzugt GGUF-Hauptgewichte, schließt erkennbare Encoder/VAE/LoRA- Dateien aus und summiert vollständig vorhandene Shards einer Variante. Die angegebene Spanne enthält keine zusätzlichen Pipeline-Komponenten. Die Speicherprüfung ist bewusst eine **Untergrenze für Gewichte**, keine vollständige Lauffähigkeitsprognose: Dateigröße gegen jede GPU einzeln, insgesamt und aktuell frei, mit 5 Prozent / mindestens 512 MiB Reserve. GPUs werden nicht pauschal addiert. Die Dateiauswahl zeigt GPU-Werte, Messzeit und ein vorhandenes Deck-RAM-Limit. KV-Cache, Kontext, Aktivierungen, Encoder/VAE und backendabhängige Formate bleiben als unbekannter Zusatzbedarf gekennzeichnet. Ein positives Gewichts-Ergebnis bedeutet nicht „Modell kann gestartet werden“. API (Administrator-Sitzung erforderlich, bestehender CSRF-Schutz): - `GET /api/v1/catalog/assessment?repo=owner/name`: Größenbereich und Gewichtsprüfung. - `GET /api/v1/catalog/files?repo=owner/name`: zusätzlich Prüfung pro Datei. - `GET /api/v1/catalog`: Bibliotheks-IDs und `downloads` neben aktivem `job`. - `POST /api/v1/catalog/dismiss` mit `{ "id": "download-id" }`: beendeten Eintrag ausblenden. - `GET /api/v1/profiles`: Profile, Blocker und Parameterschemata. - `POST /api/v1/profiles/save`: `id` (bei Neuanlage null), `revision` (anfangs 0), `name`, `kind`, `model_id` und `parameters`. Die Modelldatei muss tatsächlich vollständig in der Bibliothek liegen. Keine beliebigen Pfade/Startbefehle. Die eigenständig implementierte Galerie orientiert sich an [LocalAIs Explore-/Detailansicht](https://github.com/mudler/LocalAI/blob/master/core/http/react-ui/src/pages/Models.jsx). Kein LocalAI-Frontendcode wurde übernommen. llama.cpp-Buildverwaltung und Einpassung der alten Referenzprofile sind unter Einstellungen verfügbar; Details in DEVELOPMENT.md. Validiert: 54 Python-Tests; JavaScript-Syntaxprüfung; isolierter Browsertest mit echten Katalogdaten und einer temporären Testdatei für Profilanlage, Komponentenhinweise und Download-Ausblenden. Keine produktiven Modellstarts. ## Laufzeiten und Zusatzkomponenten Einstellungen → Laufzeiten bündelt `#runtime` (llama.cpp, bestehende aktive Buildverwaltung) und `#image-runtime` (Bildgenerierung). Die Bildseite beschreibt ComfyUI + ComfyUI-GGUF als vorgesehene Umgebung und zeigt ausdrücklich, dass noch kein Deck-Bildworker installiert ist. Dieser Schritt installiert keine Laufzeit. Bildgenerierung → Profile → Komponenten bietet für `abenzerps/Qwen-Image-2.1-Uncensored-GGUF` ein explizites Rezept gemäß Modellkarte: Textencoder INT8 ConvRot oder BF16, dazu Qwen-Image-2.1-VAE BF16. Größen und feste Quellrevision werden beim Öffnen aus dem öffentlichen Repository gelesen. Downloads laufen über die vorhandene geprüfte Katalog-API und erscheinen unter Downloads. Danach „Bibliothek aktualisieren“, je eine Datei auswählen und „Zuordnung auf Athena speichern“. Mehrere Profile können dieselben Dateien nutzen. Die Zuordnung ist kein Nachweis eines funktionierenden Workers. Andere Modelle bekommen ohne hinterlegtes Rezept keine behauptete automatische Kompatibilität. Textencoder/VAE werden nicht als Hauptmodell des Qwen-Profils zugelassen. Zuordnungen bleiben bei Parameteränderungen erhalten; bei Wechsel des Hauptmodells werden sie zurückgesetzt. Fehlende Dateien bleiben als Blocker sichtbar. API (nur Administrator-Sitzung): - `GET /api/v1/profiles/components?model_id=` liefert Rezept, verfügbare Dateien und Quellkandidaten. - `POST /api/v1/profiles/components` mit `id`, `revision`, `components` (`text_encoder` und/oder `vae`: Bibliotheks-ID, leer zum Entfernen) speichert atomar mit Konfliktprüfung. Rollen und tatsächliche Dateien werden geprüft. Validiert: 55 Tests und Browserprüfung der neuen Navigation und realen Komponentenmetadaten. Keine Zusatzgewichte heruntergeladen, keine Modelle gestartet. ### Bibliotheksrollen Bibliothek, Profilauswahl und Profil-API verwenden dieselbe serverseitige Dateiklassifikation (`role`, `role_label`, `profile_eligible`). Erkannte Textencoder, VAE, Projektoren und Adapter bleiben als Zusatzdateien sichtbar, bieten aber kein „Profil anlegen“ und können nicht als Hauptmodell gespeichert werden. Bestehende Komponenten-Zuordnungen und Dateien bleiben unverändert.