Skip to content

chat-ui

LLM Frameworks

A SvelteKit chat interface that connects to any OpenAI‑compatible LLM API

TypeScript Latest v0.10.0 · 23d ago Security brief →

Features

  • Runs as a SvelteKit web app for interactive conversations with LLMs
  • Supports any OpenAI‑compatible API (e.g., Hugging Face router, llama.cpp, Ollama, OpenRouter)
  • Optional embedded MongoDB or Docker‑based deployment for quick local use

Recent releases

View all 2 releases →
v0.10.0 Breaking risk
Breaking changes
  • Default multimodal model switched from unspecified to zai-org/GLM-4.6V
  • Default task model switched from unspecified to Llama-3.1-8B-Instruct
Security fixes
  • DNS-level SSRF protection added to MCP endpoints (#2195)
Notable features
  • Per-model reasoning toggle and configurable effort for capable models with streaming viewport
  • Fullscreen lightbox image viewer with pinch‑zoom and pan gestures
  • Per-model inference provider selection with icons in UI
Full changelog

v0.10.0 — Release notes draft

Range: v0.9.6main (201 commits, 2026-01-21 → today)

Highlights

  • Reasoning UI: per-model reasoning toggle, configurable reasoning effort for capable models, streaming reasoning in a fixed-height fade viewport (#2252, #2259, #2262, #2263).
  • Image viewer: fullscreen lightbox for chat images, with pinch-zoom and pan gestures (#2261).
  • Per-model inference provider selection: pick the provider per model, with provider icons in the model list, settings nav, and next to the model name; powered by a bits-ui Select.
  • Mobile polish: larger header tap targets, no mobile-specific text shrinking, smarter haptic feedback (incl. a streaming haptic burst on first token), iOS Safari thinking-block fix.
  • Conversation flow: ChatGPT-style scroll positioning for new messages, instant scroll on conversation switch, immediate stop on abort, copy button on user messages, inline title editing via double-click, nav item kebab dropdown.
  • MCP & tools: configurable MCP_TOOL_TIMEOUT_MS, DNS-level SSRF protection on MCP endpoints, MCP examples for any tools-enabled model (not just router), Exa crawling tool, timezone-aware tool prompts, refined search-tool prompt.

Features

  • Reasoning effort configuration for capable models (#2252)
  • Streaming reasoning in fixed-height fade viewport (#2262), mobile cap (#2263)
  • Per-model reasoning toggle in model settings
  • Fullscreen lightbox + pinch-zoom/pan for chat images (#2261)
  • Per-model inference provider selection with icons (settings + model list + chat header)
  • Copy button on user messages; inline title edit on double-click in sidebar
  • Page title on model pages; link username to HF profile in sidebar (HuggingChat)
  • Smooth/anchored scroll on new messages; instant scroll between conversations
  • Kebab dropdown for nav item edit/delete (#2246)
  • Per-model system-prompt enable/disable toggle (#2231)
  • Timezone support in tool prompts (#2233)
  • Configurable MCP_TOOL_TIMEOUT_MS (#2063)
  • Exa crawling MCP tool enabled; MCP prompt guidance for HTML apps
  • Iframe embedding restricted to huggingface.co (#2053)
  • Haptic feedback for mobile web (incl. burst on first token)
  • New router models: DeepSeek‑V4‑Pro, Kimi‑K2.6, MiniMax‑M2.7, Molmo‑8B, Qwen3‑Coder‑Next, plus descriptions for GLM‑5.1, Gemma 4, Qwen 3.5 medium, etc.

Bugfixes

  • Respect USE_USER_TOKEN in OpenAI endpoint (#2187)
  • sameSite cookie default now follows secure flag — fixes HTTP deployments (#2249)
  • Defer to router for model tool/multimodal capability on HuggingChat (#2251)
  • DNS-level SSRF protection on MCP endpoints (#2195)
  • Abort streaming immediately on stop; preserve partial output; treat APIUserAbortError correctly
  • Re-apply interrupted flag after invalidateAll on abort; fix stale UUID errors
  • Fix </think> tag leaking in MCP tool flow for reasoning models
  • Skip empty prose wrapper before tool blocks; truncate long tool names on one line
  • Off-by-one in spacer activation + tighter scroll threshold
  • iOS Safari: collapsed thinking blocks no longer take full height
  • Safari: line-clamp applied to reasoning toggle button
  • Default value for PUBLIC_APP_ASSETS prevents undefined asset paths
  • Tools/multimodal toggles fall back to model capability

Performance & infrastructure

  • Optimize conversation stats aggregation (#2079)
  • Add MongoDB missing indexes; MongoDB read preference support (#2090)
  • MONGODB-AWS auth (#2200)
  • Refactor: native SvelteKit API routes (replace Elysia)
  • Extract conversation write path into service + projector (§2)
  • Bump deps: svelte, kit, ajv, devalue, hono, qs, uuid, fast-uri, MCP SDK 1.25.2, undici, etc.

Other changes

  • Dark-mode grays switched to high-contrast neutral palette; numerous style tweaks (nav, badge, tool chips, model settings header, mobile header)
  • Theme button group replaced with a select dropdown in settings
  • Markdown rendering refresh; shimmer on active labels; refined tool detail visuals
  • Switch default multimodal model to zai-org/GLM-4.6V; switch task model to Llama-3.1-8B-Instruct
  • Drop final streaming mode from settings; remove dead code & stale metrics

Generated locally — not committed, not tagged, not published. To publish:

gh release create v0.10.0 --title "v0.10.0" --notes-file release-notes-v0.10.0.md
# or, to use GitHub's auto-generated notes from .github/release.yml:
gh release create v0.10.0 --generate-notes
v0.9.6 Breaking risk
Breaking changes
  • Removed `isPro` field from database schema.
Full changelog

What's Changed

Features

  • refactor: new API & universal load functions by @nsarrazin in https://github.com/huggingface/chat-ui/pull/1743

Other changes

  • refactor: new API & universal load functions (pt. 2) by @nsarrazin in https://github.com/huggingface/chat-ui/pull/1847
  • refactor: api cleanup by @nsarrazin in https://github.com/huggingface/chat-ui/pull/1849
  • fix: Improve error handling in generateFromDefaultEndpoint by @calycekr in https://github.com/huggingface/chat-ui/pull/1853
  • build(deps-dev): bump brace-expansion from 1.1.11 to 1.1.12 by @dependabot[bot] in https://github.com/huggingface/chat-ui/pull/1851
  • fix: add tick() to prevent textarea height adjustment failures by @calycekr in https://github.com/huggingface/chat-ui/pull/1854
  • Fix broken documentation links to multimodal and tools in Cloudflare … by @VolodymyrBg in https://github.com/huggingface/chat-ui/pull/1859
  • feat: put export behind feature flag by @nsarrazin in https://github.com/huggingface/chat-ui/pull/1862
  • fix: reduce min pods following closure by @rtrompier in https://github.com/huggingface/chat-ui/pull/1865
  • docs: fix the llama-server README link ("examples" -> "tools") by @sgvictorino in https://github.com/huggingface/chat-ui/pull/1869
  • HuggingChat 2026 by @gary149 in https://github.com/huggingface/chat-ui/pull/1875
  • Update README.md by @gary149 in https://github.com/huggingface/chat-ui/pull/1878
  • Thumbnails by @gary149 in https://github.com/huggingface/chat-ui/pull/1879
  • Omni multimodality by @gary149 in https://github.com/huggingface/chat-ui/pull/1880
  • Add image attachment support to router examples by @gary149 in https://github.com/huggingface/chat-ui/pull/1883
  • Add background generation polling for conversation updates by @gary149 in https://github.com/huggingface/chat-ui/pull/1882
  • fix CI by @coyotte508 in https://github.com/huggingface/chat-ui/pull/1884
  • Add COUPLE_SESSION_WITH_COOKIE_NAME env var by @coyotte508 in https://github.com/huggingface/chat-ui/pull/1881
  • Store oauth token in DB + use it when doing API calls by @coyotte508 in https://github.com/huggingface/chat-ui/pull/1885
  • Automatic login by @coyotte508 in https://github.com/huggingface/chat-ui/pull/1900
  • Automatically refresh oauth token by @coyotte508 in https://github.com/huggingface/chat-ui/pull/1913
  • Abort by @gary149 in https://github.com/huggingface/chat-ui/pull/1924
  • Get pro by @gary149 in https://github.com/huggingface/chat-ui/pull/1930
  • Polling by @gary149 in https://github.com/huggingface/chat-ui/pull/1932
  • feat: update deploy conf by @rtrompier in https://github.com/huggingface/chat-ui/pull/1933
  • Add message trimming for router prompt construction by @gary149 in https://github.com/huggingface/chat-ui/pull/1935
  • App Settings: add target=blank to external links by @julien-c in https://github.com/huggingface/chat-ui/pull/1937
  • Remove alt text from model logo image by @krampstudio in https://github.com/huggingface/chat-ui/pull/1936
  • Oauth on welcome modal by @krampstudio in https://github.com/huggingface/chat-ui/pull/1939
  • fix: init plausible script by @rtrompier in https://github.com/huggingface/chat-ui/pull/1946
  • Add Poe as a provider by @garethpaul in https://github.com/huggingface/chat-ui/pull/1943
  • Prompt params by @gary149 in https://github.com/huggingface/chat-ui/pull/1949
  • Share convos by @krampstudio in https://github.com/huggingface/chat-ui/pull/1942
  • lint & ignore ts error on old migration scripts by @krampstudio in https://github.com/huggingface/chat-ui/pull/1948
  • Url attachments by @gary149 in https://github.com/huggingface/chat-ui/pull/1950
  • Add Prometheus metrics support with prom-client by @gary149 in https://github.com/huggingface/chat-ui/pull/1934
  • Link to provider by @julien-c in https://github.com/huggingface/chat-ui/pull/1938
  • Simplify login options by @krampstudio in https://github.com/huggingface/chat-ui/pull/1953
  • Disable the share button while generating by @krampstudio in https://github.com/huggingface/chat-ui/pull/1958
  • Refresh models by @gary149 in https://github.com/huggingface/chat-ui/pull/1961
  • allow guest on home and shared convo by @krampstudio in https://github.com/huggingface/chat-ui/pull/1960
  • Preserve and sanitize return path after login by @gary149 in https://github.com/huggingface/chat-ui/pull/1959
  • Redirect to shared conversation after login by @krampstudio in https://github.com/huggingface/chat-ui/pull/1962
  • Fix follow up message on shared conversation by @krampstudio in https://github.com/huggingface/chat-ui/pull/1963
  • Chore fix by @krampstudio in https://github.com/huggingface/chat-ui/pull/1964
  • Url attachments by @gary149 in https://github.com/huggingface/chat-ui/pull/1965
  • fix: allow com with huggingface by @rtrompier in https://github.com/huggingface/chat-ui/pull/1966
  • fix: structured logs by @rtrompier in https://github.com/huggingface/chat-ui/pull/1967
  • Shared conversation redirect by @krampstudio in https://github.com/huggingface/chat-ui/pull/1968
  • Plus UI dropdown by @gary149 in https://github.com/huggingface/chat-ui/pull/1971
  • feat: ephemeral env by @rtrompier in https://github.com/huggingface/chat-ui/pull/1972
  • fix: update OAuth redirect logic to include model thumbnail pages by @gary149 in https://github.com/huggingface/chat-ui/pull/1977
  • Improve opening a model from an URL by @krampstudio in https://github.com/huggingface/chat-ui/pull/1979
  • MCP by @gary149 in https://github.com/huggingface/chat-ui/pull/1981
  • MCP: Image refs by @gary149 in https://github.com/huggingface/chat-ui/pull/1987
  • mcp: tool results now properly rendered by @ServeurpersoCom in https://github.com/huggingface/chat-ui/pull/1988
  • Markdown rendering update by @gary149 in https://github.com/huggingface/chat-ui/pull/1989
  • Add CIMD support for automatic oauth app creation, and PKCE support by @coyotte508 in https://github.com/huggingface/chat-ui/pull/1978
  • Reset MCP timeout on Progress Notifications by @evalstate in https://github.com/huggingface/chat-ui/pull/1992
  • Add strict security headers to fetch-url endpoint by @gary149 in https://github.com/huggingface/chat-ui/pull/1993
  • Forward original MIME by @gary149 in https://github.com/huggingface/chat-ui/pull/1994
  • Login on focus by @krampstudio in https://github.com/huggingface/chat-ui/pull/1969
  • Org billing by @gary149 in https://github.com/huggingface/chat-ui/pull/1995
  • fix: remove redundant apt install that fails as non-root by @gary149 in https://github.com/huggingface/chat-ui/pull/1996
  • Fix double-click issue in navigation bar by @gary149 in https://github.com/huggingface/chat-ui/pull/1999
  • enabled base MCP servers by default by @gary149 in https://github.com/huggingface/chat-ui/pull/2001
  • Fix auto scroll behavior in message chat by @gary149 in https://github.com/huggingface/chat-ui/pull/2000
  • Mobile UI update by @gary149 in https://github.com/huggingface/chat-ui/pull/2004
  • New tools rendering by @gary149 in https://github.com/huggingface/chat-ui/pull/2005
  • Transcribe UI by @gary149 in https://github.com/huggingface/chat-ui/pull/2006
  • Disable zoom on mobile view by @gary149 in https://github.com/huggingface/chat-ui/pull/2008
  • filter out transcription returning ellipsis dots by @gary149 in https://github.com/huggingface/chat-ui/pull/2009
  • Replace welcome modal video with GIF for mobile compatibility by @gary149 in https://github.com/huggingface/chat-ui/pull/2011
  • fix(mcp): use logger by @rtrompier in https://github.com/huggingface/chat-ui/pull/2014
  • fix(log): use logger by @rtrompier in https://github.com/huggingface/chat-ui/pull/2016
  • Rename message field in logs by @rtrompier in https://github.com/huggingface/chat-ui/pull/2015
  • Require authentication before processing query params by @gary149 in https://github.com/huggingface/chat-ui/pull/2017
  • fix: improve logs by @rtrompier in https://github.com/huggingface/chat-ui/pull/2018
  • Contextual logs by @rtrompier in https://github.com/huggingface/chat-ui/pull/2019
  • feat(mcp): add direct Exa API integration to bypass slow mcp.exa.ai by @gary149 in https://github.com/huggingface/chat-ui/pull/2021
  • fix(mcp): reduce Exa API context size sent to LLM by @gary149 in https://github.com/huggingface/chat-ui/pull/2026
  • [Fix]: Hovering bug of close button in dark theme. by @nakul-py in https://github.com/huggingface/chat-ui/pull/2034
  • MCP Tool Progress Notifications and MCP SDK bump. by @evalstate in https://github.com/huggingface/chat-ui/pull/2030
  • fix(mcp): communicate tool errors to LLM to prevent hallucinated success by @gary149 in https://github.com/huggingface/chat-ui/pull/2036
  • feat(markdown): allow video and audio tags by @gary149 in https://github.com/huggingface/chat-ui/pull/2037
  • fix(markdown): use htmlparser2 instead of DOMPurify for Web Worker compatibility by @gary149 in https://github.com/huggingface/chat-ui/pull/2039
  • Adding tool-tip and updating color for sidebar toggle button. by @nakul-py in https://github.com/huggingface/chat-ui/pull/2044
  • feat: add PRO badge and credits modal for HuggingChat by @gary149 in https://github.com/huggingface/chat-ui/pull/2048
  • refactor: remove isPro from database schema by @gary149 in https://github.com/huggingface/chat-ui/pull/2050
  • Bump undici from 7.16.0 to 7.18.2 by @dependabot[bot] in https://github.com/huggingface/chat-ui/pull/2047
  • Bump @modelcontextprotocol/sdk from 1.25.1 to 1.25.2 by @dependabot[bot] in https://github.com/huggingface/chat-ui/pull/2035
  • feat: add descriptions for 8 new models from router by @gary149 in https://github.com/huggingface/chat-ui/pull/2056
  • Reduce unnecessary tool calls in model by @gary149 in https://github.com/huggingface/chat-ui/pull/2057
  • Allow X-HF-Bill-To header for all deployments by @gary149 in https://github.com/huggingface/chat-ui/pull/2054
  • Convert remaining server loads to universal loads for SPA/Capacitor support by @gary149 in https://github.com/huggingface/chat-ui/pull/2058
  • fix: resolve prettier formatting issues by @gary149 in https://github.com/huggingface/chat-ui/pull/2060

New Contributors

  • @VolodymyrBg made their first contribution in https://github.com/huggingface/chat-ui/pull/1859
  • @sgvictorino made their first contribution in https://github.com/huggingface/chat-ui/pull/1869
  • @krampstudio made their first contribution in https://github.com/huggingface/chat-ui/pull/1936
  • @garethpaul made their first contribution in https://github.com/huggingface/chat-ui/pull/1943
  • @ServeurpersoCom made their first contribution in https://github.com/huggingface/chat-ui/pull/1988
  • @nakul-py made their first contribution in https://github.com/huggingface/chat-ui/pull/2034

Full Changelog: https://github.com/huggingface/chat-ui/compare/v0.9.5...v0.9.6

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
10,736
Forks
1,643
Languages
TypeScript Svelte CSS

Install & Platforms

Install via
npm

Beta — feedback welcome: [email protected]