🚀 Eigene KI-Tools für Ihr Unternehmen?
Vereinbaren Sie ein unverbindliches Strategiegespräch
📊 Business Value
Lokale KI-Dienste wie Ollama oder Open WebUI erfordern mehrere manuelle Start-Vorgänge – umständlich und fehleranfällig. WebUI NeuHome ist ein Python-Desktop-Launcher, der alle KI-Dienste mit einem Klick startet, im System-Tray lebt und Live-Monitoring bietet.
⚙️ Funktionsweise – Subprocess-Orchestrierung
Python venv
Isolierte virtuelle Umgebung mit Python 3.12. Alle Abhängigkeiten sauber gekapselt, reproduzierbar via requirements.txt.
GUI mit Tkinter
Native Windows-GUI ohne externe Frameworks. Minimalistisch, schnell, ressourcenschonend – perfekt für ein Utility-Tool.
Prozess-Manager
Subprocess-basiertes Starten/Stoppen mit Health-Checks. Graceful Shutdown mit Timeout – keine Zombie-Prozesse.
Browser-Launch
Öffnet Open WebUI automatisch im Browser (localhost:3000), sobald alle Dienste bereit sind.
💻 Technische Architektur
Modular aufgebaut mit klarer Trennung zwischen GUI, Prozess-Management und Konfiguration. Jeder KI-Dienst ist ein eigenes Service-Modul – erweiterbar um beliebige weitere Dienste.
OllamaService, WebUIService – jedes Modul kapselt Start/Stop/Health-Check. Neue Dienste per Plugin-Pattern.📝 Code-Snippets aus der Praxis
Service-Manager mit Subprocess und Health-Check
import subprocess, time, requests
class OllamaService:
def __init__(self):
self.process = None
self.base_url = "http://localhost:11434"
def start(self):
self.process = subprocess.Popen(
["ollama", "serve"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
self._wait_until_ready()
def _wait_until_ready(self, timeout=30):
for _ in range(timeout):
try:
r = requests.get(f"{self.base_url}/api/tags")
if r.status_code == 200:
return True
except: pass
time.sleep(1)
raise TimeoutError("Ollama nicht gestartet")
def stop(self):
if self.process:
self.process.terminate()
self.process.wait(timeout=10)
System-Tray Integration mit pystray
import pystray
from PIL import Image
def create_tray(services):
icon = Image.open("assets/icon.png")
menu = pystray.Menu(
pystray.MenuItem("🚀 Starten", lambda: start_all(services)),
pystray.MenuItem("⏹️ Stoppen", lambda: stop_all(services)),
pystray.Menu.SEPARATOR,
pystray.MenuItem("❌ Beenden", on_exit)
)
tray = pystray.Icon("webuineuhome", icon, "WebUI NeuHome", menu)
tray.run()
GPU-Monitoring via nvidia-smi Subprocess
import subprocess
def get_gpu_stats():
result = subprocess.run(
["nvidia-smi",
"--query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu",
"--format=csv,noheader,nounits"],
capture_output=True, text=True
)
gpu, mem_u, mem_t, temp = result.stdout.strip().split(", ")
return {
"gpu_util_pct": int(gpu),
"vram_used_mb": int(mem_u),
"vram_total_mb": int(mem_t),
"temp_celsius": int(temp)
}
🚀 Desktop-Tool in Tagen, nicht Wochen
🎯 Strategische Erkenntnisse
Desktop-Tools sind unterschätzt
Nicht alles muss eine Web-App sein. Für lokale Infrastruktur ist ein Desktop-Tool mit System-Tray oft die überlegene UX.
Das richtige UI-Paradigma für den Use Case wählen.
UX als Adoptions-Treiber
Der beste KI-Stack nützt nichts, wenn ihn keiner starten kann. Ein Launcher senkt die Einstiegshürde auf null.
Nicht die Technik – die Bedienbarkeit ist das Problem.
Microservice-Patterns auf dem Desktop
Der Launcher orchestriert Startreihenfolge und Health-Checks mehrerer Dienste. Gleiche Patterns wie im Server-Betrieb.
Bewährte Architekturmuster funktionieren überall.
Eigene Desktop-Tools oder KI-Launcher benötigt?
Ob System-Tray-Tools, Prozess-Manager oder komplette Desktop-Anwendungen – ich entwickle Python-Tools, die Ihre Workflows beschleunigen.