llama.cpp/tools/server/webui
Aleksander Grygier e7da30b584
fix: Viewing multiple PDF attachments (#16974)
2025-11-03 18:53:26 +01:00
..
.storybook SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
e2e SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
scripts webui: Remove running `llama-server` within WebUI `dev.sh` script (#16363) 2025-10-01 08:40:26 +03:00
src fix: Viewing multiple PDF attachments (#16974) 2025-11-03 18:53:26 +01:00
static SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
.gitignore SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
.npmrc SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
.prettierignore SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
.prettierrc SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
README.md SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
components.json SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
eslint.config.js SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
package-lock.json feat(webui): improve LaTeX rendering with currency detection (#16508) 2025-11-03 00:41:08 +01:00
package.json feat(webui): improve LaTeX rendering with currency detection (#16508) 2025-11-03 00:41:08 +01:00
playwright.config.ts Enable per-conversation loading states to allow having parallel conversations (#16327) 2025-10-20 12:41:13 +02:00
svelte.config.js feat(webui): improve LaTeX rendering with currency detection (#16508) 2025-11-03 00:41:08 +01:00
tsconfig.json SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
vite.config.ts feat(webui): improve LaTeX rendering with currency detection (#16508) 2025-11-03 00:41:08 +01:00
vitest-setup-client.ts SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00

README.md

llama.cpp Web UI

A modern, feature-rich web interface for llama.cpp built with SvelteKit. This UI provides an intuitive chat interface with advanced file handling, conversation management, and comprehensive model interaction capabilities.

Features

  • Modern Chat Interface - Clean, responsive design with dark/light mode
  • File Attachments - Support for images, text files, PDFs, and audio with rich previews and drag-and-drop support
  • Conversation Management - Create, edit, branch, and search conversations
  • Advanced Markdown - Code highlighting, math formulas (KaTeX), and content blocks
  • Reasoning Content - Support for models with thinking blocks
  • Keyboard Shortcuts - Keyboard navigation (Shift+Ctrl/Cmd+O for new chat, Shift+Ctrl/Cmdt+E for edit conversation, Shift+Ctrl/Cmdt+D for delete conversation, Ctrl/Cmd+K for search, Ctrl/Cmd+V for paste, Ctrl/Cmd+B for opening/collapsing sidebar)
  • Request Tracking - Monitor processing with slots endpoint integration
  • UI Testing - Storybook component library with automated tests

Development

Install dependencies:

npm install

Start the development server + Storybook:

npm run dev

This will start both the SvelteKit dev server and Storybook on port 6006.

Building

Create a production build:

npm run build

The build outputs static files to ../public directory for deployment with llama.cpp server.

Testing

Run the test suite:

# E2E tests
npm run test:e2e

# Unit tests
npm run test:unit

# UI tests
npm run test:ui

# All tests
npm run test

Architecture

  • Framework: SvelteKit with Svelte 5 runes
  • Components: ShadCN UI + bits-ui design system
  • Database: IndexedDB with Dexie for local storage
  • Build: Static adapter for deployment with llama.cpp server
  • Testing: Playwright (E2E) + Vitest (unit) + Storybook (components)