Model or dataset
Hyk260/PureChat avatar
Hyk260/PureChat

PureChat: A Vue 3 and Electron Chat Client That Wraps Tencent IM and Multiple LLMs

PureChat 是一款全面的聊天应用程序,它将传统的即时消息与高级 AI 功能集成在一起。其模块化架构、可扩展的 AI 集成系统和灵活的配置选项使其成为强大的应用程序,也是 AI 增强通信应用程序的坚实基础。支持OpenAI,Ollama,DeepSeek等大语言模型,Markdown 渲染,聊天记录生成截图,主题切换,助力开发者快速掌握现代技术。

542 stars81 forksTypeScriptMIT

At a glance

What is it?
PureChat pairs Tencent's IM SDK with OpenAI, Ollama and DeepSeek model endpoints in a Vue 3 frontend that also ships as a desktop app. The README now points new deployments to PureChatNext, which changes who should start here.
Who is it for?
Adopt this repository if you need a Vue 3 reference for wiring Tencent IM messaging to a model endpoint and you are willing to read the source instead of a manual. Do not adopt it for a new production deployment: the README directs new deployments, feature requests and issue reports to Hyk260/PureChatNext.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 23 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What PureChat solves, and the notice at the top of the README

Most chat frontends pick one half of the problem. They either do messaging with a real IM backend, or they do a model playground with no persistence or contacts. PureChat attempts both in one Vue 3 application: conversation transport comes from Tencent's IM SDK, and the AI side talks to OpenAI-compatible endpoints including OpenAI, Ollama and DeepSeek. The audience is developers building an AI-assisted communication product who want a working frontend to read and modify rather than a blank Vite template.

The first thing a reader sees in the README is a warning box. It states that this repository is the older PureChat (Vue / Electron) and that the maintained project is Hyk260/PureChatNext, with new deployments, feature suggestions and issue reports directed there. That notice is the single most important fact about the project. The repository is not archived, and the last push was on 2026-08-24, so work has not stopped, but the author's own instructions route new users elsewhere. Anyone evaluating PureChat today is evaluating a legacy branch of a product line, and should decide deliberately whether that is what they want.

The feature list is broad for a frontend of this size: Markdown rendering with code highlighting and link detection, chat screenshots with one-click copy, automatic light and dark mode following the system theme, GitHub login, streaming output, web search, a deep-thinking mode, and custom preset prompts. Each of those is a frontend concern layered on top of two backends, which explains why the repository carries a pnpm workspace with packages such as @pure/model-runtime, @pure/fetch-sse and @pure/prompts.

How the Vue 3 frontend, the IM SDK and the model providers fit together

The dependency list in package.json shows the split clearly. @tencentcloud/lite-chat at version 4.4.0 is pinned exactly, not with a caret range, which is the kind of choice you make when an SDK's minor releases have broken you before. The AI side is not a single client library. It is a set of local workspace packages: @pure/model-runtime, @pure/fetch-sse, @pure/prompts, @pure/database, @pure/editor, @pure/ui, @pure/utils, @pure/icons and @pure/const. The application depends on them through workspace:* references, so the repository is a monorepo rather than a single app, and pnpm-workspace.yaml at the root defines the members.

That layout tells you where the interesting code lives. Streaming responses are handled in @pure/fetch-sse, model provider abstraction in @pure/model-runtime, and prompt presets in @pure/prompts. If you want to add a provider that is not OpenAI-compatible, those are the packages to read first. The UI layer is Element Plus with Tailwind and UnoCSS present in the build configuration, and the editor is @wangeditor/editor alongside Monaco for code editing.

Configuration flows through environment variables rather than a settings file. The README documents four: VITE_OPENAI_API_KEY, VITE_OPENAI_PROXY_URL, VITE_IM_SDK_APPID and VITE_SERVICE_BASE_URL. The proxy variable is the interesting one. It overrides the default OpenAI base URL, which is how the same build points at Ollama, DeepSeek or an aggregator without code changes. The README lists AiHubMix, 胜算云 and 302.AI as model service providers with a checkmark status. Those are referral links, and the README does not describe what each provider changes about request shape, so treat the table as a starting point rather than documentation.

The VITE_SERVICE_BASE_URL variable is required, but the README does not say what the server behind it must implement. That is a real gap. A reader can infer that IM authentication and any non-model API calls go through it, but the contract is not written down in the README.

Installing PureChat and getting a first build running

The README states that the local environment needs Node.js 18.20 or newer. Clone the repository first, then install with pnpm, not npm or yarn: the workspace protocol references in package.json will not resolve under npm install.

bash
git clone https://github.com/Hyk260/PureChat.git
cd PureChat
pnpm install

Before starting the dev server you need the environment variables in place. The README marks VITE_OPENAI_API_KEY, VITE_IM_SDK_APPID and VITE_SERVICE_BASE_URL as required, and VITE_OPENAI_PROXY_URL as optional. The repository ships .env, .env.development, .env.production, .env.github and .env.vercel files at the root, so the intended workflow is to edit the environment file matching your target rather than to export variables in your shell.

bash
pnpm dev

That starts Vite. The README does not state the port the dev server binds to, so read the terminal output rather than assuming a number. If the page loads but the conversation list stays empty, the likely cause is a missing or invalid VITE_IM_SDK_APPID, since Tencent IM initialization happens before any model call.

For a production build, the README gives pnpm build. There are also variant scripts in package.json: build:github sets VITE_BASE_URL to /PureChat/ for GitHub Pages, build:cdn sets VITE_CDN=Y, and build:preview builds and then runs vite preview. A Dockerfile is included as a two-stage build, Node 20 Alpine compiling with pnpm and the dist folder copied into nginx:stable-alpine, exposing port 80. Note that the Dockerfile runs pnpm build without any environment file handling, so you must supply the VITE_ variables at build time or the resulting bundle will not be configured.

Where PureChat is the wrong choice

The clearest limitation is the one the project states about itself. New deployments belong in PureChatNext. Starting a fresh product on this repository means adopting code the author has already moved past, and any issue you file is likely to be redirected. That is not a criticism of the code, it is a statement about where maintenance attention goes.

The second constraint is Tencent IM. The README lists VITE_IM_SDK_APPID as required and links to Tencent Cloud's IM product page. There is no alternative transport documented. If your organization cannot or will not use Tencent Cloud IM, this frontend's messaging layer does not apply to you, and you would be replacing a core dependency rather than configuring it. The README also does not describe a self-hosted fallback.

Third, the environment variable design puts the OpenAI API key in the frontend build as VITE_OPENAI_API_KEY. Vite inlines VITE_-prefixed variables into the client bundle. Anyone who can load the page can read that key. The README does not discuss proxying model calls through VITE_SERVICE_BASE_URL instead, so as documented, this is a development and demo configuration. For anything public, you need a server-side proxy, and the README does not explain how to build one.

Finally, the documentation is thin in places that matter. There is no rollback procedure, no migration note between releases, and no description of the server contract behind VITE_SERVICE_BASE_URL. The release history shows v0.8.5 in August 2025 and v0.8.3 in May 2025, while package.json declares version 1.0.4, so the release tags and the package version do not track each other. Verify which artifact you are actually deploying.

PureChat alternatives and what actually differs

The obvious alternative is PureChatNext, the repository the README names as the current maintained project, with an online demo at next.purechat.cn. The difference is not a feature comparison in the README; it is ownership and direction. PureChatNext is where the author sends new deployments and issue reports, so it is the version that will receive fixes. If you are starting today, comparing the two means reading both codebases, but the README's instruction resolves the question before you get there.

A different kind of alternative is a general-purpose chat UI that talks to OpenAI-compatible endpoints and leaves messaging out entirely. That approach removes the Tencent IM dependency, the SDKAppID requirement and the server behind VITE_SERVICE_BASE_URL. What you give up is the integration PureChat is built around: contacts, conversation history and presence handled by an IM backend rather than by your own storage. The trade is real in both directions. PureChat gives you messaging plus models but binds you to Tencent Cloud; a model-only client gives you provider freedom but leaves you to build the social layer.

A third option worth naming is writing the frontend yourself on top of the same primitives. The workspace packages here, particularly @pure/fetch-sse and @pure/model-runtime, are the parts that would be tedious to reimplement: SSE parsing, streaming state, provider selection. If you only need those, reading this repository as a reference is cheaper than adopting it wholesale.

Maintenance, upgrades and the MIT licence

The repository is not archived and the last push was on 2026-08-24, roughly three weeks before this writing. That is recent activity, but it sits alongside a README that directs new work to a different repository, so activity here should be read as maintenance of a legacy line rather than development of the current product. The release history supports that reading: the most recent tagged release listed is v0.8.5 from 2025-08-13, more than a year before the last push, while package.json declares 1.0.4. Tags and the package version are not synchronized, which makes upgrade planning harder than it should be.

Upgrade cost concentrates in three places. The pinned @tencentcloud/lite-chat 4.4.0 dependency means an IM SDK upgrade is a deliberate change with no version range to absorb it. The workspace packages are internal, so upgrading means pulling the repository rather than bumping a published dependency. And the build variants (build:github, build:cdn, build:vercel) each set different environment behavior, so a change that works in pnpm dev may need attention per target.

PureChat is MIT licensed, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. The README does not include a third-party notice file, and the project depends on Tencent's IM SDK, Element Plus, WangEditor and Monaco among others, each under its own terms. That is a question for your own review, not something this article can settle. The referral links to model providers in the README are commercial arrangements, not licence terms, and they do not affect what you may do with the code.

Editorial conclusion

Adopt this repository if you need a Vue 3 reference for wiring Tencent IM messaging to a model endpoint and you are willing to read the source instead of a manual. Do not adopt it for a new production deployment: the README directs new deployments, feature requests and issue reports to Hyk260/PureChatNext. Before committing, verify that you can obtain a Tencent IM SDKAppID, that your model provider accepts the base URL you plan to set, and which of the two repositories you are actually forking.

Frequently asked questions

What is a good PureChat alternative?

The README names Hyk260/PureChatNext as the current maintained project, with an online demo at next.purechat.cn, and asks that new deployments and issue reports go there. A model-only chat UI is a different alternative if you do not need Tencent IM, since it drops the SDKAppID requirement entirely.

Does PureChat work with OpenAI, Ollama and DeepSeek?

Yes. The README lists multi-model support for OpenAI, Ollama and DeepSeek, with web search, streaming output, deep thinking and custom preset prompts. Provider selection is configured through VITE_OPENAI_PROXY_URL, which overrides the default OpenAI base URL.

What do I need to install PureChat locally?

Node.js 18.20 or newer, per the README. Then clone the repository and run pnpm install followed by pnpm dev. You also need values for VITE_OPENAI_API_KEY, VITE_IM_SDK_APPID and VITE_SERVICE_BASE_URL before the app is functional.

Can I use PureChat as a desktop app?

The README states that an Electron version is provided for macOS (.dmg) and Windows (.exe), and links to the releases page for downloads. The web version is also available through the online preview.

Is PureChat free to use in a commercial product?

The repository is MIT licensed, so commercial use, modification and redistribution are permitted as long as the copyright and permission notices are kept. The bundled third-party dependencies, including the Tencent IM SDK, carry their own terms that you should check separately.

Official sources

  1. Hyk260/PureChat on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes