| auth | ||
| deploy | ||
| landing | ||
| scripts | ||
| server | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| docker-compose.yml | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.js | ||
| tsconfig.json | ||
| vite.config.ts | ||
🦙 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_CUDAfü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=falseschließ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 nginxauth_requestgeschützt – ohne Anmeldung gibt es401