Zudem kann ich jetzt mithilfe von Pi Coding Agent und Python Änderungen auf dem Client durchführen und dann automatisch auf den Server ausrollen. Das Arbeitsverzeichnis mit der Automatisierung wird in einem Repository gesichert und ist für Interessierte frei zugänglich.
| Plattform | Dienste | Kurzbeschreibung |
|---|---|---|
| Docker | Open WebUI, Docling | Containerisierte AusfĂĽhrung von Applikationen und Diensten, portabel, isoliert und reproduzierbar. |
| LM Studio | LLM‑Inferenz | Desktop-/Server-Toolkit mit integrierter CLI für lokale Modellverwaltung und Inferenz. |
| Ollama | LLM‑Inferenz | LLM-Server, Modelle lokal und Ollama-Cloud (teilweise kostenlos). |
Docker
Folgende Dienste laufen produktiv:
- Open WebUI
- Docling
Damit Docker beim Systemstart automatisch hochfährt, ist es unter den Anmeldeobjekten vermerkt.


Via SSH ist der Status vom Client aus auch via Terminal ersichtlich:
pp@MacStudio2025 ~ >docker ps
CONTAINER
ghcr.io/open-webui/open-webui:main
8080->8080/tcp open-webui
quay.io/docling-project/docling-serve:latest
5001->5001/tcp docling-server
quay.io/docling-project/docling-serve:latest
8000->8000/tcp docling-mcpOpen WebUI
Die Menustruktur in Open WebUI ist etwas komplex. Mit dem Alias owlskann ich rasch eine Liste der konfigurierten LLMs erstellen.
Ich verwende LLMs vom eigenen Server, gehostet mit LM Studio und auch mit einem opencode go Abo.
Alias in der .zshrc Datei:
# Open WebUI ls
alias owls='curl -s http://192.168.16.45:8080/api/v1/models -H
"Authorization: Bearer $OPENWEBUI_TOKEN" | jq -r ".data[] |
select(.openai != null) | .id"'Nun kann mit dem Befehl owls schnell und einfach eine Liste der aktiven Modelle erstellt werden:
pp@MacBookPro2023 ~ >owls
LM Studio:
openai/gpt-oss-120b
google/gemma-4-26b-a4b
qwen/qwen3.6-27b
qwen/qwen3.6-35b-a3b
text-embedding-bge-m3
text-embedding-slide-bge-reranker-v2-m3
opencode go:
deepseek-v4-flash
glm-5.2
gpt-5.6-luna
kimi-k3
minimax-m3
qwen3.8-maxopencode go Abo
Bei opencode habe ich ein Go-Abo für 10 $ pro Monat. Damit kann ich via API auf die LLMs zugreifen, was die Anbindung von Open WebUI und weiteren Anwendungen wie Pi Coding Agent ermöglicht.
So kann ich die Performance der lokalen LLMs mit den grossen Modellen aus der Cloud vergleichen. FĂĽr private Daten ist das nicht geeignet, zum Codieren ist es weniger kritisch, wenn mit den Secrets sorgsam umgegangen wird. opencode hat eine ZDR-Policy (Zero Data Retention) welche fĂĽr GPT und deepseek allerdings nur bedingt gilt. Wenigstens werden die Daten nicht fĂĽr das Training verwendet.
Open WebUI Konfiguration
Admin-Bereich | Einstellungen | AI Verbindungen
Aktiv sind hier:
- LM Studio
http://studio.home:1234/v1 - openrouter go
https://opencode.ai/zen/go/v1.

Admin-Bereich | Einstellungen | AI Modelle
LM Studiohttp://studio.home:1234/v1

opencode go Abohttps://opencode.ai/zen/go/v1

Interessant sind Mitte August 2026 vor allem die gĂĽnstigen und schnellendeepseek-v4-flash und gpt-5.6-luna Modelle. Diese setze ich vor allem fĂĽr das Codieren ein, wenn die Aufgabe fĂĽr lokale Modelle zu anspruchsvoll wird.
Die untenstehenden Grafiken stammen von artificialanalysis.ai. Die Kosten pro Token sagen dabei weniger aus, als die folgende Auswertung, welche die Gesamtkosten pro Aufgabe darstellt.
Die kostengĂĽnstigen Modelle befinden sich links.


Die schnellen Modelle befinden sich links, je höher, desto intelligenter.

Admin-Bereich | Einstellungen | Dokumente
Hier verwende ich zwei lokale Embedding-Modelle auf LM Studio.
pp@MacBookPro2023 ~ >owls
LM Studio:
text-embedding-bge-m3
text-embedding-slide-bge-reranker-v2-m3FĂĽr ein funktionierendes RAG System ist die Aufbereitung der Dokumente von entscheidender Bedeutung.
Am zuverlässigsten hat sich in meinen Versuchen die Verarbeitung mit Docling erwiesen. Docling verwende ich mit guten Resultaten auch in einer Importpipeline bei Paperless-ngx. Das liefert auch bei komplexen Layouts sauberes Markdown. Open WebUI bietet auch eine direkte Anbindung an Docling. Ich trenne die Prozesse lieber und importiere dann nur die sauber aufbereiteten Markdown-Dateien in Open WebUI, meine Erfahrungen sind so deutlich konsistenter. Der Import kann auch automatisiert wie API geschehen.
Damit durch Open WebUI saubere Chunks generiert werden ist die Einstellung 'Markdown-Header-Text-Splitter' wichtig. Dafür ist, wie eben dargelegt, eine gute Qualität der Markdown-Dateien wichtig.


LM Studio
Die folgenden Modelle sind ständig aktiv.

pp@MacStudio2025 ~ >lms ps
MODEL SIZE CONTEXT
google/gemma-4-26b-a4b 17.99 GB 262144
openai/gpt-oss-120b 63.39 GB 131072
qwen/qwen3.6-35b-a3b 37.75 GB 262144
text-embedding-bge-m3 634.55 MB 8192
text-embedding-slide-bge-reranker-v2-m3 635.67 MB 8192 Ollama
Bei Ollama laden ich die Modelle nur bei Bedarf in den Arbeitsspeicher. Bei Cloudmodellen ist die lokale Ollama-Instanz nur ein Proxy.
Cloudmodelle von Ollama können teilweise mit beschränktem Kontingent gratis benutzt werden. Beispielsweise minimax-m3:cloud. Das ist Ideal um rasche ein Modell zu testen.
pp@MacStudio2025 ~ >ollama ls
NAME ID SIZE MODIFIED
minimax-m3:cloud 8cd948b96f47 - 12 days ago
gpt-oss:120b f7f8e2f8f4e0 65 GB 11 months ago
pp@MacStudio2025 ~ >ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTILDie historisch gewachsene Sammlung an LLMs habe ich folgendermassen bereinigt:
pp@MacStudio2025 ~ >for model in $(ollama list | tail -n +2 |
awk '{print $1}' | grep -E -v
'^(minimax-m3:cloud|gpt-oss:120b)$');do
ollama rm "$model"
done
pp@MacStudio2025 ~ >ollama list
NAME ID SIZE MODIFIED
minimax-m3:cloud 8cd948b96f47 - 7 days ago
gpt-oss:120b f7f8e2f8f4e0 65 GB 11 months ago
pp@MacStudio2025 models/blobs >du -sh ~/.ollama/models
61G /Users/pp/.ollama/modelsAnalyse mit KI: wurden die Modelle tatsächlich von der SSD entfernt?
Das passt exakt!
Dein `gpt-oss:120b` belegt alleine laut deiner ersten Liste 65 GB
(bzw. komprimiert etwas weniger auf der Disk). Zusammen mit dem
Cloud-Modell `minimax-m3:cloud` (das lokal fast keinen Platz braucht)
passen die verbleibenden 61 GB perfekt.
Alle anderen Modelle wurden vollständig gelöscht und der
Speicherplatz ist wieder frei.macOS Konfiguration
Der Mac Studio ist so konfiguriert, dass bei Systemstart die oben beschriebenen Dienste automatisch hochgefahren werden inklusive der LLMs.
Bisher hatte ich das fĂĽr Ollama eingerichtet, allerdings als Ordner Library im Root-Verzeichnis. Nun verwende ich einen Daemon in der Library des Benutzers.
Docker
Bei Docker ist es einfach, ein Eintrag in die Anmeldeobjekte reicht aus.
Ollama & LM Studio
Der vollständige Code findet sich hier:
/Library/LaunchDaemons
Die Property-Lists starten Shell-Skripte in ~/bin.
pp@MacStudio2025 /Library/LaunchDaemons >ls | grep com.pp
com.pp.lmstudiostart.plist
com.pp.ollama.plist~/bin
Shell-Skripte:
pp@MacStudio2025 ~/bin >ls -le
-rwxr-xr-x 1 pp staff 2049 8 Aug. 20:44 lmstudiostart
-rwxr-xr-x 1 pp staff 473 9 Aug. 19:05 lmstudiostatus
-rwxr-xr-x 1 pp staff 269 9 Aug. 19:05 lmstudiostop
-rwxr-xr-x 1 pp staff 1282 9 Aug. 18:36 ollamastart
-rwxr-xr-x 1 pp staff 566 9 Aug. 18:44 ollamastatus
-rwxr-xr-x 1 pp staff 717 9 Aug. 18:44 ollamastop.zshrc
Hier sind einige Shortcuts fĂĽr die Befehle hinterlegt.
pp@MacStudio2025 ~ >cat .zshrc
# Terminal Prompt
PROMPT="%n@%m %2c >"
# Ollama
alias olstart="sudo launchctl kickstart -k system/com.pp.ollama"
alias olboot="sudo launchctl bootstrap system /Library/LaunchDaemons/com.pp.ollama.plist"
alias olstop="ollamastop"
alias olstatus="ollamastatus"
alias ollogout="tail -f /var/log/ollama/stdout.log"
alias ollogerr="tail -f /var/log/ollama/stderr.log"
# LM Studio
alias lmstart="sudo launchctl kickstart -k system/com.pp.lmstudiostart"
alias lmboot="sudo launchctl bootstrap system /Library/LaunchDaemons/com.pp.lmstudiostart.plist"
alias lmstop="/Users/pp/bin/lmsudiostop"
alias lmstatus="/Users/pp/bin/lmstudiostatus"
alias lmlogout="tail -f /var/log/lmstudio/stdout.log"
alias lmlogerr="tail -f /var/log/lmstudio/stderr.log"Automatisierung
Der Code befindet sich öffentlich im folgenden, selbst gehosteten Forgejo-Repo:
Im Projektordner hat Pi Coding Agent Zugriff, so kann ich den Code mithilfe des Agenten anpassen. Mit dem Skript deploy.shkönnen die Änderungen via SSH vom MacBook auf den Mac Studio Server übertragen werden. Die .zshrcDatei wird dabei nicht überschrieben. Das ist wichtig, weil diese weitere Anweisungen enthält, welche mit LM Studio und Ollama nichts zu tun haben. Es wird Zeile für Zeile geprüft und allenfalls ergänzt. Die bisherigen Property-Lists und die Shell-Skripts werden vor der Anpassung gesichert.
Pi Coding Agent ist instruiert die Änderungen im Code jeweils zu commiten und in das Forgejo-Repo zu pushen. Dieses ist auf meinem UNRAID Server gehostet und werden automatisch über diverse Stufen gesichert.