- MemoryPanel: "Import"-Button öffnet Formular
- Jede Zeile wird ein eigener Gedächtnis-Eintrag (Batch-POST)
- Kategorie + Quelle (claude/gemini/chatgpt/import) wählbar
- Zeilen-Vorschau zeigt erkannte Einträge vor dem Speichern
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Gilt fuer alle Tools (Hermes, Cline, OpenCode) via MCP-Server.
- user: wer der User ist, Praeferenzen, Arbeitsweise
- instruction: Verhaltensregeln fuer alle KI-Tools
Hermes-Agent speichert aktiv in diese Kategorien wenn er Neues lernt.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Hinweis ergänzt: CLI und Desktop-App nutzen dieselbe config.json,
alle Slash-Commands funktionieren in beiden Versionen gleich.
Unterschied nur beim Start: Terminal (cd + opencode) vs. GUI (Ordner wählen).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Verbinden-Tab neu strukturiert:
- Tool-Picker in 2 Sektionen unterteilt: Chat + Coding-Assistenten
- Jan AI: einfachstes Chat-Interface (Desktop-App, kein Docker)
Config: Basis-URL + Modell-ID Copy-Fields wie Cline
- Continue: VS Code/JetBrains Coding-Hilfe ohne Agent-Overhead
Config: fertiger config.json-Block mit allen konfigurierten Modellen
- Antigravity: Googles agentic IDE (VS Code-Fork, kostenlos)
Config: Basis-URL + Modell-ID Copy-Fields
- continueBlock() Funktion für dynamisches config.json-Snippet
Guide neu strukturiert (17 Tutorials, war 14):
- "Welches Tool" Entscheidungsmatrix komplett neu: Chat vs. Coding,
Jan AI als Einstieg statt OpenWebUI, Antigravity und Continue ergänzt
- Neu: "Jan AI — einfachstes Chat-Interface" (Schritt-für-Schritt)
- Neu: "Continue — Coding-Hilfe ohne Agent-Overhead" (Chat/Autocomplete/Inline-Edit)
- Neu: "Antigravity — Googles agentic IDE" (Multi-Agent, Manager-View)
- OpenWebUI repositioniert: "für Teams und Power-User" mit klarer Begründung
wann OpenWebUI mehr Sinn macht als Jan AI
Recherche-Grundlage: jan.ai/docs, continue.dev, antigravityide.net,
Google Dev Blog (Antigravity), promptquorum.com (Frontend-Vergleich 2026)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Quellen/Links:
- OpenCode → opencode.ai/docs
- Cline → cline.bot
- OpenWebUI → openwebui.com
- MCP → mcp.run, smithery.ai, modelcontextprotocol.io/servers
- Skills & Rules → skills.sh (neu), cursor.directory
- Persona → skills.sh, cursor.directory
- AGENTS.MD → skills.sh, opencode.ai/docs
Neue .tut-sources CSS-Klasse: dezente Trennlinie, Teal-Links.
Persona-Tutorial grundlegend erweitert:
- Zwei Dimensionen erklärt (WAS der Agent tut vs. WIE er mit dir umgeht)
- Template um Beziehungs-/Interaktionszeile erweitert
- Beispiele zeigen jetzt auch Feedback-Stil, Proaktivität, Fehlerkultur
- Neues Onboarding-Interview-Template: Agent befragt den Nutzer selbst
(6-8 Fragen, eine nach der anderen) und schreibt daraus eine
maßgeschneiderte AGENTS.md — der schnellste Weg zu einer echten Persona.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Zwei neue Tutorials in der Gruppe „Agenten meistern":
1. Die Persona — deinem Agenten eine Rolle geben
Erklärt was eine Persona ist, warum sie den Unterschied macht,
+ Copy-paste-ready Template + 2 konkrete Beispiele (Coding-Assistent,
Lernbegleiter) + Tabelle wo man sie einträgt (pro Projekt vs. global).
2. AGENTS.MD & SAVEPOINT.MD — Gedächtnis für den Agenten
Erklärt den Unterschied (was das Projekt ist vs. wo wir stehen),
+ vollständige Vorlagen für beide Dateien die direkt nutzbar sind,
+ 2-Schritt-Workflow (Session starten / beenden).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Behebung der drei kritischsten UX-Schwachstellen aus dem Produkt-Audit:
1. ConnectPanel: Steps 2-4 (Modellauswahl, Tool-Picker, Config-Snippet,
Vision) werden blockiert wenn noch kein Modell installiert ist.
Stattdessen klarer Hinweis "Erst im Cookbook ein Modell holen" mit
direktem CTA. Verhindert dass Anfänger ein Snippet mit Fake-"coder"
kopieren, bevor ein echtes Modell existiert.
2. OverviewPanel: preload() schluckte Fehler still (catch {}). Zeigt
jetzt einen verständlichen Toast wenn die Engine nicht erreichbar ist.
Schnellstart ist kontextsensitiv: ohne Modelle zeigt er Onboarding-
Schritte (Modell holen → Verbinden → Guide lesen) statt sinnloser
Aktionen wie "Speicher freigeben".
3. CookbookPanel Profi-Suche: doDownload() nutzte zwei sequenzielle
API-Calls (download + register) — wenn der zweite scheiterte, blieb
das System in einem inkonsistenten Halbzustand. Jetzt ein einziger
atomarer Aufruf an /api/cookbook/install-model (wie Recipe/Discover).
Backend-Erweiterung: InstallModelReq akzeptiert jetzt 'file' und
'ctx' um Nutzer-Auswahl direkt zu übergeben.
4. Cookbook Section 1 als "Hier starten" markiert ("1 · Anwendungsfall
wählen & installieren" mit erklärendem Sub-Text).
5. Post-Download-Toasts: Alle drei Install-Pfade sagen nun einheitlich
"Modell erscheint danach automatisch im Modelle-Tab" statt nur
"siehe Aktivität".
6. too_tight-Alternative: Bei Modellen/Setups die den Speicher übersteigen
wird jetzt eine konkrete Alternative (kleinere Datei / passendes Rezept)
verlinkt statt nur "Trotzdem installieren".
7. Duplikat extract_params_b aus cookbook.py entfernt — importiert jetzt
aus hw_math (Single Source of Truth).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Bugs behoben:
- Topbar + Server-Panel: 'Kein Modell im VRAM' obwohl geladen → alle
States (running/ready/loading/starting) werden jetzt erkannt
- Topbar zeigt bei geladenem Modell: Name + ctx-Größe + State mit Farbe
Dashboard-Redesign (OverviewPanel):
- KPI-Kacheln mit Farbe: .kpi.green/.red/.blue/.muted statt .tile
(farbige Randlinien + farbige Werte wie im Referenz-Design)
- Icons pro Kachel (server, cpu, thermo, database)
- Stack-Liste: zeigt ctx/quant/GB, 'Laden'-Button wenn Modell bereit
aber nicht geladen, ∞-Chip für immer-aktive Modelle
- 4. Schnellstart-Button: 'Tools verbinden'
Feature: Modell Vorwärmen (Pre-load):
- POST /api/preload?model=<name> — sendet Mini-Request an llama-swap
damit es das Modell vorab lädt (max_tokens=1, kein Output)
- 'Laden'-Button je Modell in der Stack-Liste
Topbar CSS:
- Aktives Modell: teal-hinterlegter Pill wenn Modell geladen
- Kontext-Größe direkt neben Modellname angezeigt
Cookbook:
- Discover: genaue Zeitanzeige wann Quellen zuletzt befragt wurden
('vor X min / h / Tg.') statt nur 'aktuell'
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
openCodeBlock() baut jetzt Modell-Objekte statt nur ID-Strings, damit
m.meta.ctx ausgelesen werden kann. contextWindowSize wird korrekt auf
den konfigurierten Kontext gesetzt (Standard: 131072 = 128k).
Vorher: { "name": "coder" } (kein Kontexthinweis → AI-SDK-Default)
Nachher: { "name": "coder", "contextWindowSize": 131072 }
Identisches Problem wie bei Zed max_tokens (war 32768 hardcoded).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
A1: 32768-Kontext-Cap entfernt (install-recipe, install-model, register) →
max_ctx_for() liefert nun bis zu 128k auf Strix Halo; behebt "context
size exceeded" bei externen Tools.
A2: Download-State jetzt im Status-Endpoint sichtbar: Modelle zeigen
"↓ Download X%" statt "bereit" während Job läuft (Backend + Frontend).
A3: PUT /api/cookbook/user-recipe/{id} + Edit-Button (✎) für eigene Setups.
Download-Modal setzt Kontext-Input automatisch auf optimal.
A4: /api/updates liefert apt_cache_age_h; Badge zeigt Tooltip + ⚠ wenn >24h.
A5: Swap-Flash: Topbar-Text pulst kurz teal wenn Modell den State wechselt.
A6: LLM-Engine-Update fragt jetzt per confirmModal nach (Konsistenz).
A7: Event-Delegation statt per-render addEventListener in models.js.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Elite-Lineup-Rezept (5 Rollen: coder/manager/reviewer/vision/scout), MoE-orientiert -> wird automatisch 'Beste Wahl' (meiste Modelle, passt).
- MoE-Erkennung clientseitig aus Repo-Name (8xNB / -A3B / mixtral/moe); Chip 'MoE - ~XB aktiv' in Discover-/Such-Karten + Rezept-Detail.
- Faehigkeits-Chip (Bilder/Coden/Logik/Agenten/Allrounder) je Modell.
- Discover hebt je Kategorie das beste lauffaehige Modell hervor (recommended pro Kategorie: bester Fit, dann Downloads).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Neue Karte oben im Server-Tab beantwortet "funktioniert es / wie steuern /
wie pruefen": Status (erreichbar/offline), aktuell geladenes Modell, Adresse
fuer die Tools, Anzahl bereiter Modelle + Klartext, wie man ansteuert. Knopf
"Verbindung pruefen" testet die Engine live (/api/integration/test).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Modelle erscheinen jetzt mit ihrem ECHTEN Namen (= API-Name, den man in Zed/
OpenCode angibt) statt unter "coder"/"vision". Die Rolle wird ein zusaetzlicher,
sprechender Name (llama-swap-`aliases`) -> in der API funktionieren BEIDE.
- llamaswap.py: model_id_from_path (Repo-Ordner ohne -GGUF) + set_role_alias
(Rolle als eindeutiger Alias, beim Setzen bei anderen Modellen entfernt) +
ROLE_IDS (vision/coder/scout/reviewer/manager).
- models.py: register schreibt Key=Modellname, Rolle als Alias; /status liefert
role + aliases + api_ids; neuer POST /set_role. Rueckwaertskompatibel: Legacy-
Eintraege (coder/vision ohne Alias) behalten ihren Key als Rolle.
- cookbook.py: install-recipe/-model nutzen dasselbe Schema (Name + Rollen-Alias).
- models.js: Zeile zeigt echten Namen + Rollen-Tag + API-Name (klick=kopieren);
neuer "Rolle"-Dialog mit 5 Schnellwahl-Rollen + freier Eingabe.
- cookbook.js: Profi-Download-Feld ist jetzt optionale Rolle (Name kommt vom
Modell), Pflichtfeld-Pruefung entsprechend gelockert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
"Aktuell beste Modelle fuer dein System": fragt vertrauenswuerdige HF-Orgs
(unsloth/bartowski/ggml-org/lmstudio-community) LIVE ab, kategorisiert die
Treffer (vision/coder/reasoning/agent/scout), filtert per hw_math auf das,
was auf die Hardware passt, und cached das Ergebnis (TTL 12 h, lazy + Knopf
"Aktualisieren"). Damit bleibt das Cookbook von selbst aktuell, ohne dass
Modelle hartkodiert werden.
- sources.py: TRUSTED_AUTHORS + CATEGORIES + SKIP_TOKENS (reine Daten).
- config.py: DISCOVER_CACHE_PATH (persistent neben den Modellen, uebersteht
Deploys) + DISCOVER_TTL.
- cookbook.py: /api/cookbook/discover (force-Param), refresh_discover,
Bestandsabgleich (_model_installed -> "schon installiert als X") und
ehrliche Voraussetzungen je Modell (Vision->mmproj/jinja, unquantisiert,
zu gross/knapp).
- cookbook.js: Sektion mit Kategorien, Fit-Ampel, Downloads, Hinweisen,
1-Klick-Installieren bzw. "installiert"-Markierung; "Aktualisieren"-Knopf.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Zed als empfohlene IDE: fertige settings.json (language_models.
openai_compatible.bosgame) mit available_models aus dem echten Stack,
Vision-Modelle bekommen capabilities.images; API-Key-Hinweis (UI/Env,
nicht in settings.json) — Struktur gegen Zed-Doku verifiziert.
- baseUrl() nutzt jetzt fix http://<host>:8080/v1 (statt location.protocol),
damit der Aufruf hinter einem Reverse-Proxy (NPM/HTTPS) nicht in eine
kaputte https-:8080-URL kippt.
- Erkennt Proxy-Zugriff (behindProxy) und warnt: Engine-API laeuft direkt
am Bosgame auf :8080 ohne HTTPS -> rohe LAN-IP eintragen, nicht den Namen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Nutzer koennen im Cookbook eigene Use-Case-Setups anlegen (Titel, Beschreibung,
beliebige Modelle: Repo + Rolle + Quant). Groesse wird aus dem Repo-Namen
abgeleitet; Fit-Ampel + optimaler Kontext kommen wie bei kuratierten Setups
zur Laufzeit aus hw_math.
- Persistenz: JSON-Datei (MC_USER_RECIPES, Default /srv/models/...) -> ueberlebt
Deploys (liegt bewusst NICHT im rsync-Ziel).
- /api/cookbook/recipes merged eingebaute + eigene Setups; install-recipe findet
beide. Neue Endpunkte POST/DELETE /api/cookbook/user-recipe.
- UI: "+ Eigenes Setup", Modal mit dynamischen Modell-Zeilen; eigene Karten mit
"Dein Setup"-Tag + Loeschen. "Beste Wahl" bleibt auf kuratierte beschraenkt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Guide: tiefe Einsteiger-Abschnitte "Was ist ein Agent (und wann)", "Was sind
Skills (Quellen + Installation)", "MCP — Werkzeuge geben"; Konzept-Karten
Agent/MCP/Skills geschaerft + "Rules/Commands"-Karte
- Verbinden: Hinweis verlinkt zum Guide (Agent/Skill/MCP von Grund auf)
- FIX: MCP-Konzeptkarte hatte ein ASCII-`"` in einem doppelt-gequoteten String
-> String brach vorzeitig ab, guides.js parste nicht -> die GANZE Mount-Kette
stand (Modelle/Verbinden/Guide leer). Im Text statt Anfuehrungszeichen "Anschluss".
Hinweis: `node --check x.js` parst lax als CommonJS und uebersah den Fehler;
erst ein erzwungener ESM-Parse (.mjs) bzw. der Browser deckte ihn auf.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- status(): Flag "incomplete" fuer Rollen ohne Modell (-m), z.B. provision.sh-
Platzhalter. Wurden bisher irrefuehrend als "bereit / ? . 8K . ?" gezeigt.
- Modelle-Tab: leere Rollen klar als "kein Modell hinterlegt / leer" + Aktion
"Modell zuweisen" (-> Cookbook); nicht im Schnelltest-Dropdown waehlbar
- register(): erkennt einen mmproj-Projektor im selben Ordner und ergaenzt
--mmproj + --jinja automatisch (Vision braucht das in llama.cpp)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- POST /api/delete_model: entlaedt das Modell, traegt es aus der config.yaml
aus und loescht optional die GGUF-Dateien, um Speicher freizugeben
- Sicherheit: Loeschen STRENG auf MODELS_DIR begrenzt (Pfad-Resolve-Check);
loescht den ganzen Repo-Unterordner inkl. .cache nur, wenn er ein direktes
Kind von MODELS_DIR ist und kein anderes Modell eine Datei darin nutzt,
sonst nur die einzelne GGUF-Datei. Meldet freigegebene GB zurueck.
- Modelle-Tab: roter "Loeschen"-Button je Zeile mit Klartext-Sicherheitsabfrage
(unwiderruflich) via confirmModal(danger)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
`hf` gibt im Nicht-TTY-Modus keinen Fortschritt aus (am Bosgame verifiziert:
0 CR-Frames). Stattdessen pollt jobengine.attach_download_progress die
wachsende <local-dir>/.cache/huggingface/download/*.incomplete-Datei gegen die
Gesamtgroesse aus der HF-Tree-API (cookbook.hf_file_size) -> exaktes %.
- attach_download_progress an /api/download, install-recipe, install-model
- Frontend (Aktivitaet + Server-Karte): nutzt job.progress bevorzugt,
Log-%-Parsing bleibt Fallback fuer Tools, die selbst Prozente ausgeben
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Job-Engine:
- Ausgabe wird binaer + byteweise gelesen und CRLF-bewusst verarbeitet:
einzelnes \r (tqdm/hf-Fortschritt) ueberschreibt die letzte Logzeile statt
sie zu fluten; \r\n bzw. \n = echte neue Zeile. So kommt der Download-
Fortschritt live an. (Text-Modus wuerde \r zu \n uebersetzen -> daher binaer.)
- cancel_job(): laufenden Prozess terminieren, Status "canceled", _PROCS-Registry
- POST /api/jobs/{id}/cancel
Frontend:
- Aktivitaet: Fortschrittsbalken + %-Anzeige aus der letzten Logzeile,
"Abbrechen"-Button je laufendem Job, Status "abgebrochen"
- Server/Aktueller Vorgang: Fortschrittsbalken + Abbrechen (mit Rueckfrage),
"abgebrochen"-Behandlung
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Backend:
- hf_bin() + HF_DOWNLOAD_ENV zentral in config.py; install-recipe und
install-model in cookbook.py nutzten weiter das fehlende `hf` + falsches
XET-Env -> Haupt-Installationsweg war ebenso kaputt, jetzt konsistent gefixt
Frontend:
- Server: laufende Updates (LLM-Engine/OS) live auf der Server-Seite mitlesbar,
inkl. klarer Fertig-/Fehlgeschlagen-Meldung (onJobs + Aktueller-Vorgang-Karte)
- Cookbook/Profi-Modus: meistgeladenes, passendes Modell wird als
"★ Beste Wahl für dein System" hervorgehoben (analog zu den Templates)
- Verbinden: OpenCode korrekt per opencode.json (@ai-sdk/openai-compatible)
statt irrefuehrender Felder; erklaert "Connect to API"-Fehler (LAN-IP statt
localhost)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- write_config schreibt atomar (tmp + os.replace) -> llama-swap (-watch-config)
sieht nie eine halb geschriebene config.yaml; PermissionError wird in eine
klare Klartext-Meldung uebersetzt (Hinweis auf chown)
- generischer Exception-Handler: unerwartete Fehler kommen als lesbare JSON-
Meldung im UI an statt als nackter 500 (Anfaenger-Diagnose)
- Download: nutzt die `hf`-CLI aus dem venv (Dienst-PATH kennt venv/bin nicht)
+ HF_HUB_DISABLE_XET=1 statt HF_XET_HIGH_PERFORMANCE (XET-Haenger bei ~6 MB)
- huggingface_hub als Dependency ergaenzt (liefert `hf`)
- favicon.ico: themed SVG (Link-Tag + Route) -> kein 404 mehr
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- /api/updates liefert zusaetzlich "engine" (llama.cpp-ROCm: neueste
GitHub-Release vs. /opt/llamacpp-mtime, 1h gecacht)
- Toolbar-Badges fuer OS/Engine/Modelle jetzt auch im "aktuell"-Zustand
sichtbar (gruener .ok-Style) statt nur bei ausstehenden Updates
- Guide: neuer Tutorial-Eintrag "Was passiert, wenn der Kontext volllaeuft?"
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 'Dein Stack' zeigt echtes Modell (Dateiname) hinter coder/scout/vision.
- Top-News-Karte auf der Uebersicht (neben Stack).
- Toolbar-Update-Badges: /api/updates (OS via apt-Cache + Modell-Upgrades),
klickbar -> Server bzw. News. compute_upgrades aus cookbook wiederverwendet.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- news.py: Git-Release-Feeds raus (b9745-Rauschen), Qualitaetsquellen rein
(HuggingFace, r/LocalLLaMA, Simon Willison, Latent Space, Ahead of AI, The Batch).
- cookbook.py: /upgrades (matcht installierte alte Modelle gegen UPGRADES-Map) +
/install-model (einzelnes Modell tauschen, GGUF dynamisch, optimaler ctx).
- news.js: 'Fuer dich: Upgrades'-Sektion oben (Modell X ersetzt dein Y, weil ... [Installieren]).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Swapping-Klartext + Spitzenbedarf (peak_ram) pro Modell: Modelle-Konfig + Cookbook-Setup-Modal
zeigen 'nur ein Modell gleichzeitig, groesstes zaehlt'. models.py: peak_ram_gb/_optimal in Meta.
- Kontextfenster: infoDot(ⓘ)-Helfer in ui.js + Tooltips an ctx-Feldern.
- Guides-Tab komplett neu = echter Anfaenger-Guide (LLM/GGUF/Quant/Kontext/Swapping/MCP/Skills/Agenten).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Neuer Self-Update-Button ("Mission Control aktualisieren"): POST /api/self-update
macht git pull (Quelle) -> rsync nach Prod -> systemctl restart (NOPASSWD).
Pfade aus config.py (SOURCE_DIR/PROD_DIR), nicht user-hartkodiert.
- "LLM-Engine aktualisieren" ehrlich (war MC, ist llama.cpp via MC_UPDATE_CMD).
- Guides: Kopier-Buttons fuer alle Configs + Codeblock (Copy-Paste-tauglich).
- Button-Audit: Funktionen/Labels in allen Panels geprueft, stimmig.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>