{"slug": "deepseek-chat-demo-run-the-app-ui-in-the-browser-with-no-backend", "title": "DeepSeek chat-demo: Run the App UI in the Browser With No Backend", "summary": "DeepSeek published chat-demo, an MIT-licensed static chat client that calls api.deepseek.com directly from the browser with no application server, and the GitHub repository passed 2,500 stars in roughly three days after its November 12, 2026 creation date. The TypeScript, Rspack and pnpm project defaults to the deepseek-flash model via the Messages and Files APIs, stores API keys in localStorage and chats in IndexedDB, and ships features including SSE streaming, message branches, deep thinking, smart search, link reading, voice input, Mermaid rendering, and ZIP history import/export. DeepSeek positions chat-demo as a reference UI for the full application API suite it released on November 13, 2026, and builders can self-host the dist/ bundle or reconfigure the API origin through createConfig in rspack.config.ts.", "body_md": "**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`.\n\nThis 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).\n\n## TL;DR\n\n| Piece | Detail (from README, November 15, 2026) | \n|---|---|\n| License | **MIT** | \n| Stack | **TypeScript** ,**Rspack** ,**pnpm** | \n| Default API | `https://api.deepseek.com` | \n| Default model | **`deepseek-flash`** via Messages / Files APIs | \n| Backend required? | **No** — static site in`dist/` | \n| Local data | **localStorage** for keys;**IndexedDB** for chats | \n| Notable features | Branches, deep think, search, link read, voice, Mermaid | \n\n## What problem does chat-demo solve?\n\nConsumer 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).\n\nFor builders comparing stacks:\n\n- You get a **working reference** for**SSE streaming** ,**message branches** , and**attachment upload** without writing React from scratch.\n- 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.\n- You can **self-host** the static bundle beside internal gateways using`createConfig({ apiOrigin, devServer })` in`rspack.config.ts` .\n\nA terminal-style alternate path beside gears, illustrating the DeepSeek chat-demo static browser client for API chat\n\n## Features listed in the README\n\nDeepSeek documents the following in the [GitHub README](https://github.com/deepseek-ai/chat-demo?ref=explainx):\n\n**Conversations**\n\n- Multiple chats with **auto titles** , rename, delete.\n- **Edit prompts** ,**regenerate** , and**switch message branches** .\n\n**Model capabilities**\n\n- **Streaming** replies.\n- **Deep thinking** ,**smart search** ,**link reading** , and**citations** .\n- **Stop** generation or**continue** eligible replies.\n\n**Input modalities**\n\n- Upload, paste, or drag **attachments** .\n- **Voice input** and**read aloud** , with a**mobile recording spectrum** in the input row.\n\n**Rendering**\n\n- **Markdown** , syntax highlight,**KaTeX** ,**Mermaid** .\n\n**UX**\n\n- **English and Simplified Chinese** , light/dark themes, mobile layouts,**history import/export** as ZIP.\n\nThose 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).\n\n## How to install and build\n\nRequirements:\n\n- **Node.js 22.12+**\n- **pnpm**\n\nCommands from the README:\n\n```\ngit clone https://github.com/deepseek-ai/chat-demo.git\ncd chat-demo\npnpm install\npnpm dev\n```\n\nDevelopment serves **[http://localhost:8090](http://localhost:8090/?ref=explainx)**. Production:\n\n```\npnpm build\n```\n\nOutput 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.\n\nMaintenance scripts also include **`pnpm type`**, **` pnpm lint`** (oxlint), and **` pnpm format`** (oxfmt).\n\n## Storage, privacy, and import/export\n\nThe README is explicit about data boundaries:\n\n| Data | Where it lives | \n|---|---|\n| API key and settings | **localStorage** | \n| Conversations and attachment originals | **IndexedDB** | \n| Unsent drafts | Cleared when you delete all chats | \n\n**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**.\n\n**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.\n\nThat model is great for **personal trials** and poor for **shared machines** without disk encryption — the key is only as safe as the browser profile.\n\n## Code layout\n\nThe README tree:\n\n- `src/app/` — layout, themes, global styles\n- `src/components/` — chat, settings, Markdown UI\n- `src/i18n/` — EN/ZH strings\n- `src/services/api/` — requests, SSE, protocol types\n- `src/services/chat/` — branches, storage, ZIP history\n- `src/services/markdown/` — parsing and diagrams\n- `src/services/speech/` — record and playback\n\nSpeech 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).\n\n## Is DeepSeek chat-demo open source?\n\nYes. 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.\n\nDeepSeek also documents a **Chinese README** (`README.zh-CN.md`) and a **GitHub Actions** workflow folder for CI.\n\n## How it compares to other DeepSeek tooling\n\n| Option | When to use it | \n|---|---|\n| **chat-demo** | Official UI reference, static hosting, MIT fork base | \n| **DeepSeek API only** | Headless agents, your own front end | \n| **[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 | \n| **[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 | \n\nStars (**~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.\n\n## Troubleshooting local and static deploys\n\nThe README flags three common failures:\n\n1. **file:// without storage** — Browsers block or reset IndexedDB on some profiles. Prefer`pnpm dev` or a static host with HTTPS.\n2. **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.\n3. **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) .\n\nFor 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.\n\n## chat-demo versus Harness and raw API\n\n| Surface | Backend | Best for | \n|---|---|---|\n| **chat-demo** | Browser → DeepSeek API | Reference UI, MIT fork, static CDN | \n| **Harness** | DeepSeek product stack | Creator mode, marketplace, daily-driver app | \n| **Raw API** | Your server | Headless agents, compliance middleware | \n\nNone 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.\n\n## Forking for internal pilots\n\nBecause the repo is MIT:\n\n- Replace branding in `src/i18n` and themes.\n- 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.\n- Strip voice features if your SOC forbids microphone upload paths.\n\nDocument 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.\n\n## Security and compliance checklist\n\nBefore you paste production data into chat-demo:\n\n1. **Rotate keys** if the browser profile is shared.\n2. **Read outbound traffic** : attachments and voice audio go to DeepSeek’s configured API.\n3. **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.\n4. **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.\n\n## Related reading\n\n## What to watch on the repo roadmap\n\nWith 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.\n\nWatch these signals before you bet a product on a fork:\n\n- **Release zips** on GitHub — DeepSeek already ships downloadable archives for air-gapped trials.\n- **Workflow YAML** — CI will tell you whether DeepSeek treats this as a**long-lived reference** or a**demo stub** .\n- **Issue velocity** — attachment limits and speech errors are usually where first-wave users file bugs.\n\nIf DeepSeek slows updates, you still own the MIT snapshot — but you inherit **security patches** for `pnpm` dependencies yourself.\n\n## Measuring API spend while dogfooding chat-demo\n\nBecause the client streams by default, it is easy to **burn search and think tokens** during casual testing. Add habits early:\n\n1. Create a **dev API key** with spend caps in the DeepSeek console.\n2. Turn off **deep think** until you need citations for a feature test.\n3. Log **per-conversation token estimates** if you wire a corporate proxy — the README does not ship analytics.\n\nCompare 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.\n\n## When this is the wrong tool\n\nSkip 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.\n\nFor **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.\n\n**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.\n\n*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.*", "url": "https://wpnews.pro/news/deepseek-chat-demo-run-the-app-ui-in-the-browser-with-no-backend", "canonical_source": "https://explainx.ai/blog/deepseek-chat-demo-static-browser-client-github-2026?utm_source=rss&utm_medium=feed&utm_campaign=blog", "published_at": "2026-11-15 00:00:00+00:00", "updated_at": "2026-11-15 17:23:24.563987+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-products", "ai-tools", "developer-tools"], "entities": ["DeepSeek", "chat-demo", "api.deepseek.com", "deepseek-flash", "GitHub", "TypeScript", "Rspack", "pnpm"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/deepseek-chat-demo-run-the-app-ui-in-the-browser-with-no-backend", "markdown": "https://wpnews.pro/news/deepseek-chat-demo-run-the-app-ui-in-the-browser-with-no-backend.md", "text": "https://wpnews.pro/news/deepseek-chat-demo-run-the-app-ui-in-the-browser-with-no-backend.txt", "jsonld": "https://wpnews.pro/news/deepseek-chat-demo-run-the-app-ui-in-the-browser-with-no-backend.jsonld"}}