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 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 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.
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 indist/ |
| 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.
For builders comparing stacks:
- You get a working reference forSSE streaming ,message branches , andattachment upload without writing React from scratch.
- You can fork the UI while keeping parity withDeepSeek pricing for search, URL read, and safety flags.
- You can self-host the static bundle beside internal gateways using
createConfig({ apiOrigin, devServer })inrspack.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:
Conversations
- Multiple chats with auto titles , rename, delete.
- Edit prompts ,regenerate , andswitch message branches .
Model capabilities
- Streaming replies.
- Deep thinking ,smart search ,link reading , andcitations .
- Stop generation orcontinue eligible replies.
Input modalities
- Upload, paste, or drag attachments .
- Voice input andread aloud , with amobile 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.
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. 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 stylessrc/components/— chat, settings, Markdown UIsrc/i18n/— EN/ZH stringssrc/services/api/— requests, SSE, protocol typessrc/services/chat/— branches, storage, ZIP historysrc/services/markdown/— parsing and diagramssrc/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.
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 | Self-host models; chat-demo still needs a compatible API |
| Frontier comparison tables | 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 beside APIs.
Troubleshooting local and static deploys #
The README flags three common failures:
- file:// without storage — Browsers block or reset IndexedDB on some profiles. Prefer
pnpm devor a static host with HTTPS. - CORS from static hosting — Your
dist/origin must be allowed by the API gateway. For internal labs, setapiOriginincreateConfigto a same-site reverse proxy. - Missing API capabilities — Search, link read, and speech need server endpoints beyond bare chat completions. If a button does nothing, compare your deployment to theNovember 13 capability list .
For teams already on DeepSeek Harness, 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 only if you stand up a compatible API front.
Forking for internal pilots #
Because the repo is MIT:
- Replace branding in
src/i18nand themes. - Point
apiOriginatAzure, 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 talking to third-party APIs.
Security and compliance checklist #
Before you paste production data into chat-demo:
- Rotate keys if the browser profile is shared.
- Read outbound traffic : attachments and voice audio go to DeepSeek’s configured API.
- Check employer policy — especially US government contractors afterDHS removal guidance cited in our API post.
- Do not treat
model_safetyflags 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 along-lived reference or ademo 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:
- Create a dev API key with spend caps in the DeepSeek console.
- Turn off deep think until you need citations for a feature test.
- Log per-conversation token estimates if you wire a corporate proxy — the README does not ship analytics.
Compare spend against Small models comparison 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 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 before you ship.