Source: https://seerepo.com/r/huggingface/chat-ui/built
Markdown source: https://seerepo.com/r/huggingface/chat-ui/built.md
Description: chat-ui is a TypeScript repo built with SvelteKit, Svelte, @slack/bolt, and polka. It stores its data in MongoDB.

# What is chat-ui built with?

chat-ui is a TypeScript repo built with SvelteKit, Svelte, @slack/bolt, and polka. It stores its data in MongoDB, signs people in with openid-client and @aws-sdk/credential-providers, uses AI through OpenAI, makes its content with isomorphic-dompurify, marked, @resvg/resvg-js, katex, satori, and 9 more, validates its data with Zod, is tested with Vitest, vitest-browser-svelte, playwright, and js-yaml, deploys with pino and prom-client, and uses bson-objectid, MCP, and Hugging Face. It has 179,282 written lines, with 302 test files.

Read on November 12, 2026, at commit 4e0a95b.

Repository: https://github.com/huggingface/chat-ui

## Frontend

### The base

- **[SvelteKit](https://seerepo.com/uses/sveltekit)**: 92 files · [in package.json](https://github.com/huggingface/chat-ui/blob/4e0a95b6a6c80d04d788f1bbad72a1e4713413b9/package.json)
- **[Svelte](https://seerepo.com/uses/svelte)**: 78 files

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**

### Interface

- **bits-ui**: 6 files
- **web-haptics**: 1 file

## Backend

### Data

- **[MongoDB](https://seerepo.com/uses/mongodb)**: 57 files · [src/lib/server/database.ts, line 1](https://github.com/huggingface/chat-ui/blob/4e0a95b6a6c80d04d788f1bbad72a1e4713413b9/src/lib/server/database.ts#L1)
- **bson-objectid**: 1 file

### Sign-in

- **[openid-client](https://seerepo.com/uses/openid-client)**: 3 files
- **[@aws-sdk/credential-providers](https://seerepo.com/uses/aws-sdk-credential-providers)**: 1 file

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 12 files · [src/lib/server/mcp/tools.ts, line 2](https://github.com/huggingface/chat-ui/blob/4e0a95b6a6c80d04d788f1bbad72a1e4713413b9/src/lib/server/mcp/tools.ts#L2)
- **[Hugging Face](https://seerepo.com/uses/hugging-face)**: 7 files · [src/lib/components/chat/ChatWindow.svelte, line 22](https://github.com/huggingface/chat-ui/blob/4e0a95b6a6c80d04d788f1bbad72a1e4713413b9/src/lib/components/chat/ChatWindow.svelte#L22)
- **[OpenAI](https://seerepo.com/uses/openai)**: 3 files · [src/lib/server/textGeneration/utils/upstreamRetry.ts, line 8](https://github.com/huggingface/chat-ui/blob/4e0a95b6a6c80d04d788f1bbad72a1e4713413b9/src/lib/server/textGeneration/utils/upstreamRetry.ts#L8)

## Support

### The base

- **[@slack/bolt](https://seerepo.com/uses/slack-bolt)**: 2 files
- **polka**: 1 file

### Content

- **[isomorphic-dompurify](https://seerepo.com/uses/isomorphic-dompurify)**: 4 files
- **[marked](https://seerepo.com/uses/marked)**: 4 files
- **@resvg/resvg-js**: 2 files
- **[katex](https://seerepo.com/uses/katex)**: 2 files
- **[satori](https://seerepo.com/uses/satori)**: 2 files
- **[file-type](https://seerepo.com/uses/file-type)**: 1 file
- **[handlebars](https://seerepo.com/uses/handlebars)**: 1 file
- **[highlight.js](https://seerepo.com/uses/highlightjs)**: 1 file
- **[htmlparser2](https://seerepo.com/uses/htmlparser2)**: 1 file
- **hyparquet**: 1 file
- **parquetjs**: 1 file
- **[remend](https://seerepo.com/uses/remend)**: 1 file
- **satori-html**: 1 file
- **[sharp](https://seerepo.com/uses/sharp)**: 1 file

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 44 files

### Testing

- **Vitest**: 274 files
- **vitest-browser-svelte**: 21 files
- **playwright**: 4 files
- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 2 files

### Deploy

- **[pino](https://seerepo.com/uses/pino)**: 1 file
- **[prom-client](https://seerepo.com/uses/prom-client)**: 1 file

### Other

- **uuid**: 7 files
- **json5**: 6 files
- **@slack/web-api**: 5 files
- **superjson**: 5 files
- **date-fns**: 3 files
- **.ENV**: 2 files
- **ip-address**: 2 files
- **mime-types**: 2 files
- **@polka/compression**: 1 file
- **aws4**: 1 file
- **fzstd**: 1 file
- **hyparquet-compressors**: 1 file
- **nanoid**: 1 file
- **undici**: 1 file
- **yazl**: 1 file

## Other repos with a similar stack

- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): SvelteKit, Svelte, MongoDB, bson-objectid, MCP, Hugging Face, OpenAI, Tailwind CSS, bits-ui, web-haptics, openid-client, isomorphic-dompurify, marked, @resvg/resvg-js, katex, satori, file-type, handlebars, highlight.js, htmlparser2, parquetjs, satori-html, sharp, Zod, pino, prom-client · [Compare](https://seerepo.com/compare/huggingface/chat-ui/vs/ruvnet/ruflo)
- [RocketChat/Rocket.Chat](https://seerepo.com/r/RocketChat/Rocket.Chat/built): MongoDB, @slack/bolt, polka, marked, katex, file-type, highlight.js, sharp, Zod, pino, prom-client · [Compare](https://seerepo.com/compare/huggingface/chat-ui/vs/RocketChat/Rocket.Chat)
- [open-webui/open-webui](https://seerepo.com/r/open-webui/open-webui/built): SvelteKit, Svelte, MCP, Hugging Face, OpenAI, Tailwind CSS, bits-ui, marked, katex, highlight.js · [Compare](https://seerepo.com/compare/huggingface/chat-ui/vs/open-webui/open-webui)
- [CherryHQ/cherry-studio](https://seerepo.com/r/CherryHQ/cherry-studio/built): MCP, Hugging Face, OpenAI, Tailwind CSS, katex, file-type, htmlparser2, sharp, Zod · [Compare](https://seerepo.com/compare/CherryHQ/cherry-studio/vs/huggingface/chat-ui)
- [gradio-app/gradio](https://seerepo.com/r/gradio-app/gradio/built): SvelteKit, Svelte, MCP, Hugging Face, OpenAI, Tailwind CSS, marked, katex, handlebars · [Compare](https://seerepo.com/compare/gradio-app/gradio/vs/huggingface/chat-ui)
- [anomalyco/opencode](https://seerepo.com/r/anomalyco/opencode/built): MCP, Tailwind CSS, @aws-sdk/credential-providers, marked, katex, satori, htmlparser2, Zod · [Compare](https://seerepo.com/compare/anomalyco/opencode/vs/huggingface/chat-ui)

## Frequently asked questions

### What language is chat-ui written in?

chat-ui is written in TypeScript, with 179,282 written lines.

### What framework does chat-ui use?

chat-ui is built with SvelteKit, Svelte, @slack/bolt, and polka.

The proof: [in package.json](https://github.com/huggingface/chat-ui/blob/4e0a95b6a6c80d04d788f1bbad72a1e4713413b9/package.json)

### What database does chat-ui use?

chat-ui stores its data in MongoDB.

The proof: [src/lib/server/database.ts, line 1](https://github.com/huggingface/chat-ui/blob/4e0a95b6a6c80d04d788f1bbad72a1e4713413b9/src/lib/server/database.ts#L1)

### What does chat-ui sign people in with?

chat-ui signs people in with openid-client and @aws-sdk/credential-providers.

### Does chat-ui use AI?

Yes. chat-ui uses AI through OpenAI.

The proof: [src/lib/server/textGeneration/utils/upstreamRetry.ts, line 8](https://github.com/huggingface/chat-ui/blob/4e0a95b6a6c80d04d788f1bbad72a1e4713413b9/src/lib/server/textGeneration/utils/upstreamRetry.ts#L8)

### What services does chat-ui use?

chat-ui uses bson-objectid, MCP, and Hugging Face.

### Does chat-ui have tests?

Yes. chat-ui has 302 test files and is tested with Vitest, vitest-browser-svelte, playwright, and js-yaml.

### Which repos have a stack like chat-ui's?

The ones that share most of its stack: ruvnet/ruflo, RocketChat/Rocket.Chat, and open-webui/open-webui.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
