AI Llama.cpp Studio – Web-UI für llama-server
Find a file
2026-10-31 11:27:50 +01:00
auth auth: /data dem node-User geben 2026-10-31 10:35:40 +01:00
deploy Registrierung & Login: Auth-Backend (Express+SQLite), Chats pro Benutzer, /llama/ per auth_request geschützt, Basic Auth entfernt 2026-10-31 10:34:29 +01:00
landing Registrierung & Login: Auth-Backend (Express+SQLite), Chats pro Benutzer, /llama/ per auth_request geschützt, Basic Auth entfernt 2026-10-31 10:34:29 +01:00
scripts AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
server AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
src Login-Seite reagiert auf #registrieren/#anmelden 2026-10-31 11:27:50 +01:00
.dockerignore Registrierung & Login: Auth-Backend (Express+SQLite), Chats pro Benutzer, /llama/ per auth_request geschützt, Basic Auth entfernt 2026-10-31 10:34:29 +01:00
.gitignore AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
docker-compose.yml AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
index.html AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
package-lock.json AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
package.json AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
postcss.config.js AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
README.md Registrierung & Login: Auth-Backend (Express+SQLite), Chats pro Benutzer, /llama/ per auth_request geschützt, Basic Auth entfernt 2026-10-31 10:34:29 +01:00
tailwind.config.js AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
tsconfig.json AI Llama.cpp Studio 2026-10-31 04:40:50 +01:00
vite.config.ts Production deploy: same-origin /llama proxy default, nginx+Traefik compose 2026-10-31 10:13:06 +01:00

🦙 AI Llama.cpp Studio

Moderne, dunkle Web-Oberfläche (Vite + React + TypeScript + Tailwind) für einen lokalen llama.cpp llama-server über dessen OpenAI-kompatible API.

Funktionen

  • Streaming-Chat mit Markdown, Tabellen und Syntax-Highlighting
  • Chat-Verlauf im Browser (localStorage), mehrere Chats
  • System-Prompt pro Chat
  • Parameter: Temperatur, Top-P, Top-K, Min-P, Wiederholungsstrafe, Max. Tokens, Seed
  • Server-Status & Modellinfo (/health, /props, /v1/models), Tokens/s-Anzeige
  • Presets (eingebaut + eigene speichern)
  • Export als Markdown/JSON (einzeln oder alle)
  • Konfigurierbare Server-URL (Standard http://localhost:8080)

Schnellstart

npm install
# 1. Modell laden (Standard: Qwen2.5 0.5B Instruct Q4_K_M, ~400 MB)
npm run download -- Qwen/Qwen2.5-0.5B-Instruct-GGUF qwen2.5-0.5b-instruct-q4_k_m.gguf
# 2. llama-server starten (llama-server muss im PATH sein oder LLAMA_SERVER=/pfad/llama-server)
npm run start-server -- --model models/qwen2.5-0.5b-instruct-q4_k_m.gguf --ctx 4096 --ngl 99
# 3. UI starten
npm run dev        # http://localhost:5173

Produktion: npm run build && npm run preview.

llama-server besorgen

  • Fertige Binaries: https://github.com/ggml-org/llama.cpp/releases (z. B. llama-*-bin-ubuntu-x64.zip)
  • macOS: brew install llama.cpp
  • Selbst bauen: git clone https://github.com/ggml-org/llama.cpp && cd llama.cpp && cmake -B build -DGGML_CUDA=ON && cmake --build build -j (ohne -DGGML_CUDA für CPU)

--ngl = Anzahl GPU-Layer (0 = nur CPU, 99 = alles auf GPU). HF_TOKEN setzen für geschützte Modelle.

Optionales Verwaltungs-Backend

npm run backend startet auf Port 3001 eine kleine API: GET /api/models, POST /api/download {repo,file}, POST /api/start {model,ctx,ngl,port}, POST /api/stop, GET /api/status.

Docker

mkdir -p models && npm run download   # oder GGUF manuell nach ./models
MODEL=qwen2.5-0.5b-instruct-q4_k_m.gguf docker compose up

UI: http://localhost:5173 · Server: http://localhost:8080. Für NVIDIA das Image server-cuda und den GPU-Block in docker-compose.yml nutzen.

Hinweis CORS

llama-server erlaubt standardmäßig Browser-Anfragen. Läuft der Server auf einem anderen Rechner, URL in der rechten Leiste anpassen.

Benutzerkonten (Registrierung & Login)

Im Produktions-Setup (deploy/docker-compose.prod.yml) läuft ein kleines Auth-Backend (auth/, Express + SQLite im Volume authdata):

  • Registrierung mit Benutzername, E-Mail und Passwort (bcrypt), Login, Logout, /api/auth/me
  • Sitzung als httpOnly-/Secure-/SameSite-Cookie, Rate-Limiting auf den Auth-Endpunkten
  • Der erste registrierte Benutzer wird Administrator
  • ALLOW_REGISTRATION=false schließt die offene Registrierung (das erste Konto kann trotzdem angelegt werden)
  • Chats werden pro Benutzer serverseitig gespeichert; alte Chats aus dem Browser (localStorage) werden beim ersten Login übernommen
  • /llama/ ist per nginx auth_request geschützt – ohne Anmeldung gibt es 401