# DeepSeek chat-demo: Run the App UI in the Browser With No Backend

> Source: <https://explainx.ai/blog/deepseek-chat-demo-static-browser-client-github-2026?utm_source=rss&utm_medium=feed&utm_campaign=blog>
> Published: 2026-11-15 00:00:00+00:00

**DeepSeek published `chat-demo` on GitHub — a static, MIT-licensed chat client that calls `api.deepseek.com` from the browser with no application server.** The [repository](https://github.com/deepseek-ai/chat-demo?ref=explainx) went from zero to **more than 2,500 stars** in roughly three days after its **November 12, 2026** creation date. You can also open a [hosted build](https://deepseek-ai.github.io/chat-demo/?ref=explainx) or a **Release zip** without running `pnpm install`.

This guide explains **what the UI includes**, **how storage works**, and **how it lines up** with the [November 13 application API drop](https://explainx.ai/blog/deepseek-full-suite-application-apis-web-search-file-url-asr-tts-pricing-2026).

## TL;DR

| Piece | Detail (from README, November 15, 2026) | 
|---|---|
| License | **MIT** | 
| Stack | **TypeScript** ,**Rspack** ,**pnpm** | 
| Default API | `https://api.deepseek.com` | 
| Default model | **`deepseek-flash`** via Messages / Files APIs | 
| Backend required? | **No** — static site in`dist/` | 
| Local data | **localStorage** for keys;**IndexedDB** for chats | 
| Notable features | Branches, deep think, search, link read, voice, Mermaid | 

## What problem does chat-demo solve?

Consumer chat apps hide **protocol details** — tool calls, branch pointers, speech endpoints. DeepSeek's README positions `chat-demo` as **the reference skin** for everything the API already exposes after the [full application API release](https://api-docs.deepseek.com/updates?ref=explainx).

For builders comparing stacks:

- You get a **working reference** for**SSE streaming** ,**message branches** , and**attachment upload** without writing React from scratch.
- You can **fork the UI** while keeping parity with[DeepSeek pricing](https://explainx.ai/blog/deepseek-full-suite-application-apis-web-search-file-url-asr-tts-pricing-2026) for search, URL read, and safety flags.
- You can **self-host** the static bundle beside internal gateways using`createConfig({ apiOrigin, devServer })` in`rspack.config.ts` .

A terminal-style alternate path beside gears, illustrating the DeepSeek chat-demo static browser client for API chat

## Features listed in the README

DeepSeek documents the following in the [GitHub README](https://github.com/deepseek-ai/chat-demo?ref=explainx):

**Conversations**

- Multiple chats with **auto titles** , rename, delete.
- **Edit prompts** ,**regenerate** , and**switch message branches** .

**Model capabilities**

- **Streaming** replies.
- **Deep thinking** ,**smart search** ,**link reading** , and**citations** .
- **Stop** generation or**continue** eligible replies.

**Input modalities**

- Upload, paste, or drag **attachments** .
- **Voice input** and**read aloud** , with a**mobile recording spectrum** in the input row.

**Rendering**

- **Markdown** , syntax highlight,**KaTeX** ,**Mermaid** .

**UX**

- **English and Simplified Chinese** , light/dark themes, mobile layouts,**history import/export** as ZIP.

Those features assume the configured API implements DeepSeek extensions (`search`, `link reading`, `titles`, `latest_reminder`). That matches the same week’s [API documentation refresh](https://api-docs.deepseek.com/?ref=explainx).

## How to install and build

Requirements:

- **Node.js 22.12+**
- **pnpm**

Commands from the README:

```
git clone https://github.com/deepseek-ai/chat-demo.git
cd chat-demo
pnpm install
pnpm dev
```

Development serves **[http://localhost:8090](http://localhost:8090/?ref=explainx)**. Production:

```
pnpm build
```

Output lands in **`dist/`**. You can deploy to any static host or open `dist/index.html` locally. The README warns that **file://** use needs browser support for storage on local files **and** an API that allows the page’s origin.

Maintenance scripts also include **`pnpm type`**, **` pnpm lint`** (oxlint), and **` pnpm format`** (oxfmt).

## Storage, privacy, and import/export

The README is explicit about data boundaries:

| Data | Where it lives | 
|---|---|
| API key and settings | **localStorage** | 
| Conversations and attachment originals | **IndexedDB** | 
| Unsent drafts | Cleared when you delete all chats | 

**Import/export** uses ZIP archives. Import **replaces all local conversations and attachments** after validation. Exports include conversations and **local image originals**, but **exclude API keys, settings, and non-image attachment originals**.

**Delete all chats** in Settings stops in-flight replies, wipes IndexedDB conversations and drafts, and **keeps** API keys and settings. Files already on DeepSeek’s servers are **not** deleted.

That model is great for **personal trials** and poor for **shared machines** without disk encryption — the key is only as safe as the browser profile.

## Code layout

The README tree:

- `src/app/` — layout, themes, global styles
- `src/components/` — chat, settings, Markdown UI
- `src/i18n/` — EN/ZH strings
- `src/services/api/` — requests, SSE, protocol types
- `src/services/chat/` — branches, storage, ZIP history
- `src/services/markdown/` — parsing and diagrams
- `src/services/speech/` — record and playback

Speech uses separate **ASR / TTS** endpoints documented on DeepSeek’s pricing page, which we summarized in the [application API post](https://explainx.ai/blog/deepseek-full-suite-application-apis-web-search-file-url-asr-tts-pricing-2026).

## Is DeepSeek chat-demo open source?

Yes. The repo ships under **MIT**, copies `LICENSE` into `dist/`, and lists **third-party dependency licenses** separately. That makes it distinct from closed consumer apps and from heavier self-hosted chat shells that need their own backend — except this one tracks **DeepSeek-first protocol extensions** in a **static-only** bundle.

DeepSeek also documents a **Chinese README** (`README.zh-CN.md`) and a **GitHub Actions** workflow folder for CI.

## How it compares to other DeepSeek tooling

| Option | When to use it | 
|---|---|
| **chat-demo** | Official UI reference, static hosting, MIT fork base | 
| **DeepSeek API only** | Headless agents, your own front end | 
| **[DeepSeek V4.1 Flash weights](https://explainx.ai/blog/deepseek-v4-1-flash-1017-open-weights-mit-terminal-bench-4-42-benchmarks-pricing-2026)** | Self-host models; chat-demo still needs a compatible API | 
| **[Frontier comparison tables](https://explainx.ai/blog/frontier-ai-models-compared-fable-5-2-gpt-6-astra-gemini-4-carbon-grok-4-7-kimi-k3-1-deepseek-2026)** | Pick models, not UI shells | 

Stars (**~2,524** on the trending card when candidates were collected) show **developer curiosity**, not enterprise adoption. Treat the repo as **documentation you can run**, similar to how labs ship [Claude Code skills](https://explainx.ai/blog/claude-bughunter-red-team-skills-bug-bounty-github-install-2026) beside APIs.

## Troubleshooting local and static deploys

The README flags three common failures:

1. **file:// without storage** — Browsers block or reset IndexedDB on some profiles. Prefer`pnpm dev` or a static host with HTTPS.
2. **CORS from static hosting** — Your`dist/` origin must be allowed by the API gateway. For internal labs, set`apiOrigin` in`createConfig` to a same-site reverse proxy.
3. **Missing API capabilities** — Search, link read, and speech need server endpoints beyond bare chat completions. If a button does nothing, compare your deployment to the[November 13 capability list](https://explainx.ai/blog/deepseek-full-suite-application-apis-web-search-file-url-asr-tts-pricing-2026) .

For teams already on **[DeepSeek Harness](https://explainx.ai/blog/deepseek-harness-1-54-million-dau-creator-mode-marketplace-2026)**, chat-demo is the **lightweight fork-friendly alternative**: no marketplace shell, just chat UX you can white-label.

## chat-demo versus Harness and raw API

| Surface | Backend | Best for | 
|---|---|---|
| **chat-demo** | Browser → DeepSeek API | Reference UI, MIT fork, static CDN | 
| **Harness** | DeepSeek product stack | Creator mode, marketplace, daily-driver app | 
| **Raw API** | Your server | Headless agents, compliance middleware | 

None of these replace **open-weight self-host** if your policy requires weights on prem — pair this client with [V4.1 Flash on your GPUs](https://explainx.ai/blog/deepseek-v4-1-flash-1017-open-weights-mit-terminal-bench-4-42-benchmarks-pricing-2026) only if you stand up a compatible API front.

## Forking for internal pilots

Because the repo is MIT:

- Replace branding in `src/i18n` and themes.
- Point `apiOrigin` at**Azure, Together, or Fireworks** only if their proxy speaks the same extension headers DeepSeek documents — do not assume drop-in compatibility without integration tests.
- Strip voice features if your SOC forbids microphone upload paths.

Document those forks in internal runbooks the same way you would for [Cursor or Claude desktop clients](https://explainx.ai/blog/connect-myfitnesspal-apple-health-strava-to-claude-chatgpt-mcp-2026) talking to third-party APIs.

## Security and compliance checklist

Before you paste production data into chat-demo:

1. **Rotate keys** if the browser profile is shared.
2. **Read outbound traffic** : attachments and voice audio go to DeepSeek’s configured API.
3. **Check employer policy** — especially US government contractors after[DHS removal guidance](https://explainx.ai/blog/dhs-orders-deepseek-removed-federal-civilian-agencies-procurement-ban-2026) cited in our API post.
4. **Do not treat `model_safety` flags as legal compliance** ; DeepSeek’s docs say they are basic risk control, not a substitute for product-level review.

## Related reading

## What to watch on the repo roadmap

With only **two commits** on `main` when we cloned, chat-demo is **young**. Stars moved fast because developers wanted a **known-good UI** the same week DeepSeek opened search and speech APIs. Expect rapid PRs around **i18n**, **accessibility**, and **corporate SSO** — none of which appear in v1.

Watch these signals before you bet a product on a fork:

- **Release zips** on GitHub — DeepSeek already ships downloadable archives for air-gapped trials.
- **Workflow YAML** — CI will tell you whether DeepSeek treats this as a**long-lived reference** or a**demo stub** .
- **Issue velocity** — attachment limits and speech errors are usually where first-wave users file bugs.

If DeepSeek slows updates, you still own the MIT snapshot — but you inherit **security patches** for `pnpm` dependencies yourself.

## Measuring API spend while dogfooding chat-demo

Because the client streams by default, it is easy to **burn search and think tokens** during casual testing. Add habits early:

1. Create a **dev API key** with spend caps in the DeepSeek console.
2. Turn off **deep think** until you need citations for a feature test.
3. Log **per-conversation token estimates** if you wire a corporate proxy — the README does not ship analytics.

Compare spend against **[Small models comparison](https://explainx.ai/blog/small-models-comparison-haiku-5-5-gpt-6-luna-deepseek-v4-1-flash-gemini-3-7-flash-glm-5-3-flash-2026)** if you route the same UI at cheaper endpoints for internal staff.

## When this is the wrong tool

Skip chat-demo if you need **multi-tenant auth**, **audit logs on the server**, or **HIPAA-grade BAAs** — this is a **browser-trust** architecture. Reach for **Harness**, **Open WebUI with a backend**, or your own **Next.js shell** instead.

For **agent benchmarks**, keep using **[vals cyber range posts](https://explainx.ai/blog/vals-ai-cyberoffense-gpt-6-sol-daybreak-deepseek-v4-1-flash-open-weight-cyber-range-2026)** or internal harnesses; chat-demo does not evaluate models, it **displays** them.

**Is DeepSeek chat-demo open source?** Yes — fully MIT on GitHub. **Do you need a backend?** No for the stock build; yes if your security team requires server-side key custody, centralized audit logs, or SSO.

*Star count and feature list follow the GitHub README as read on November 15, 2026. API behavior can change on DeepSeek’s side without a repo bump — check [api-docs.deepseek.com](https://api-docs.deepseek.com/?ref=explainx) before you ship.*
