llama.cpp/tools/server/webui
Aleksander Grygier 6a3d6e79d2 refactor: Services/Stores syntax + logic improvements
Refactors components to access stores directly instead of using exported getter functions.

This change centralizes store access and logic, simplifying component code and improving maintainability by reducing the number of exported functions and promoting direct store interaction.

Removes exported getter functions from `chat.svelte.ts`, `conversations.svelte.ts`, `models.svelte.ts` and `settings.svelte.ts`.
2025-11-27 13:44:49 +01:00
..
.storybook Update packages + upgrade Storybook to v10 (#17201) 2025-11-12 19:01:48 +01:00
e2e SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
scripts refactor: Multi-model business logic WIP 2025-11-25 15:04:46 +01:00
src refactor: Services/Stores syntax + logic improvements 2025-11-27 13:44:49 +01:00
static SvelteKit-based WebUI (#14839) 2025-09-17 19:29:13 +02:00
.gitignore webui: Add a "Continue" Action for Assistant Message (#16971) 2025-11-19 14:39:50 +01: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 webui: Add a "Continue" Action for Assistant Message (#16971) 2025-11-19 14:39:50 +01:00
package.json Update packages + upgrade Storybook to v10 (#17201) 2025-11-12 19:01:48 +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 Merge remote-tracking branch 'webui/allozaur/server_model_management_v1_2' into xsn/server_model_maagement_v1_2 2025-11-22 18:39:31 +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)