Browserbasiertes Dashboard zur Steuerung lokaler llama.cpp-Modelle mit Echtzeit-Monitoring von Hardwareauslastung, Token-Leistung und Anfrage-Slots.
  • JavaScript 55.5%
  • CSS 29.4%
  • HTML 15.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-12 12:15:33 +02:00
lib Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
LICENSES Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
public Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
.gitignore Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
LICENSE Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
LLM-Daschboard.png Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
package-lock.json Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
package.json Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
README.md first commit 2026-09-12 12:11:26 +02:00
server.js Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00
THIRD_PARTY_NOTICES.md Restliche Projektdateien hinzugefügt 2026-09-12 12:15:33 +02:00

LLM-Dashboard

LLM-Dashboard

Ein browserbasiertes Dashboard für den Betrieb eines lokalen llama.cpp-Servers. Es bündelt die Auswahl und Steuerung eigener Modell-Startskripte mit einer Übersicht über Hardwareauslastung, Generierungsleistung und Anfrage-Slots. So lässt sich während einer Generierung verfolgen, wie stark CPU, RAM und NVIDIA-GPUs ausgelastet sind und welche Anfragen der Server gerade verarbeitet.

Das Projekt richtet sich an Nutzer, die lokale Sprachmodelle mit llama.cpp betreiben und deren Betrieb an einer Stelle beobachten möchten. Über die Schaltfläche Open Web-UI lässt sich die Weboberfläche des Modellservers öffnen.

Funktionen

  • Modelle steuern: Eigene Shellskripte aus einer Auswahlliste starten und den Modellserver stoppen. Die Skriptnamen dienen als Modellbezeichnungen.
  • Hardware beobachten: CPU-Auslastung, RAM-Belegung und verfügbare CPU-Temperatur sowie Auslastung, VRAM-Belegung und Temperatur pro NVIDIA-GPU.
  • Verläufe ansehen: Diagramme für Auslastung, Speicher und Temperatur mit bis zu 30 Messpunkten; Hardwaredaten werden ungefähr einmal pro Sekunde abgefragt.
  • Generierungsleistung verfolgen: Tokens pro Sekunde für Generierung und Prompt-Verarbeitung, aktive und wartende Anfragen sowie verfügbare Kennzahlen zum Speculative Decoding. Die letzte Leistungsmessung bleibt während Leerlauf und Verbindungsunterbrechungen sichtbar.
  • Slots prüfen: Aktivität und Kontextlimit je Anfrage-Slot sowie verfügbare Prompt-, Cache- und Ausgabetokenzahlen bei aktiven Anfragen.

Aufbau

Das Frontend verwendet HTML, CSS und Vanilla JavaScript; die Diagramme werden mit Chart.js dargestellt. Ein Node.js-Server mit Express stellt das Dashboard bereit, fragt die Llama-API ab und führt die lokalen Startskripte und Hardwareabfragen aus. Schriftarten und Diagrammbibliotheken liegen im Projekt.

Datei / Ordner Aufgabe
server.js Webserver, API-Routen, Prozesssteuerung und Hardwareabfragen
lib/llama-monitor.js Aufbereitung von Metriken und Slotdaten
public/ Oberfläche, Diagramme, Styles und Schriftarten
scripts/ Eigene ausführbare Modell-Startskripte

Voraussetzungen

  • Node.js und npm zum Installieren der Abhängigkeiten und Starten des Dashboards.
  • Eine lokale Linux-Umgebung mit Bash, pgrep und pkill für die Modellsteuerung.
  • Ein eingerichteter llama.cpp-Server und passende Modelldateien. Beides wird nicht mitgeliefert; die eigenen Startskripte legen Modell und Serveroptionen fest.
  • Erreichbare Endpunkte /slots und /metrics am Modellserver für Slot- und Leistungsanzeigen. Fehlende Daten werden als nicht verfügbar dargestellt.
  • Optional nvidia-smi für NVIDIA-GPU-Metriken und sensors für die CPU-Temperatur. Die aktuelle Temperaturabfrage ist auf coretemp-isa-0000 und dessen Wert Package id 0 zugeschnitten.

Start

npm ci
npm start

Das Dashboard ist auf Port 3000 erreichbar. Es verwendet standardmäßig die Llama-API unter http://127.0.0.1:8081. Eine andere Adresse lässt sich über LLAMA_API_URL konfigurieren.

Öffne anschließend http://<LLM-HOST>:3000 im Browser. Sobald ausführbare .sh-Dateien im Skriptverzeichnis liegen, erscheinen sie in der Modellauswahl. Wähle ein Skript und klicke auf START, um den Modellserver zu starten. Standardausgabe und Fehlerausgabe werden neben dem Skript als <skript>.out.log und <skript>.err.log gespeichert.

Die Prozesssteuerung ist auf einen Modellserver ausgelegt: Beim Start eines Modells und beim Stoppen beendet das Dashboard Prozesse, deren Kommandozeile llama-server enthält. Es verwaltet mehrere Serverinstanzen nicht getrennt.

Der Dashboard-Server lauscht auf allen Netzwerkschnittstellen und besitzt derzeit keine Anmeldung. Er ist für den Betrieb in einer vertrauenswürdigen Umgebung gedacht.

Konfiguration

Einstellung Standard Bedeutung
LLAMA_API_URL http://127.0.0.1:8081 Basisadresse für Slot- und Metrikabfragen
LLAMA_SCRIPTS_DIR scripts im Projektordner Verzeichnis für Modell-Startskripte und deren Logs
Dashboard-Port 3000 Derzeit in server.js festgelegt

Beispiel für eine abweichende API-Adresse:

LLAMA_API_URL="http://127.0.0.1:8082" npm start

Die Schaltfläche Open Web-UI verwendet derzeit unabhängig davon den Hostnamen der geöffneten Dashboard-Seite mit Port 8081.

Portable Skriptpfade

Startskripte (*.sh) gehören standardmäßig in den Ordner scripts neben server.js. Der Pfad wird vom Projektordner aus aufgelöst, unabhängig vom Benutzernamen und vom aktuellen Arbeitsverzeichnis. Persönliche Skripte und Logs werden nicht mitveröffentlicht; eigene ausführbare Startskripte müssen ergänzt werden. Siehe Skriptanleitung.

Ein anderes Skriptverzeichnis kann beim Start angegeben werden:

LLAMA_SCRIPTS_DIR="$HOME/llama-scripts" npm start

Relative Werte für LLAMA_SCRIPTS_DIR beziehen sich auf den Projektordner. $HOME wird im Beispiel von der Shell expandiert. Werte aus einer anderen Konfigurationsquelle müssen bereits aufgelöst sein; JavaScript expandiert $HOME, $USER und ~ in Pfadstrings nicht automatisch.

Verwende auch in eigenen Shellskripten projektbezogene Pfade oder "$HOME" anstelle fest eingetragener Benutzernamen. $HOME berücksichtigt den tatsächlichen Home-Pfad, während /home/$USER eine bestimmte Verzeichnisstruktur voraussetzt.

Optional: systemd-Dienst

Beispiel für /etc/systemd/system/llm-dashboard.service. BENUTZERNAME und den Projektpfad anpassen. Den npm-Pfad mit command -v npm prüfen.

[Unit]
Description=Node.js LLM-Daschboard
After=network.target

[Service]
Type=simple
User=BENUTZERNAME
WorkingDirectory=/ABSOLUTER/PFAD/ZUM/PROJEKT
ExecStart=/usr/bin/npm start
Restart=always
RestartSec=5
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target

WorkingDirectory muss auf den Ordner mit der package.json zeigen. Die Abhängigkeiten zuvor dort mit npm ci installieren.

Dienst aktivieren und starten:

sudo systemctl daemon-reload
sudo systemctl enable --now llm-dashboard.service

Lizenz und Sicherheit

Der eigene Projektcode steht unter der MIT-Lizenz. Für mitgelieferte Bibliotheken und Schriftarten gelten die Fremdkomponenten-Hinweise.