# A deprecated repository with five committed env files

> PureChat is a Vue and Vite chat front end built on the Tencent IM SDK, with Monaco and wangeditor in the dependency list and a pnpm workspace behind it. Its own README hands you to a successor project, its release tags stop below the manifest version, and the deployment notes put an OpenAI key in a VITE_ variable, which a Vite build compiles into the page.

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

- Repository: https://github.com/Hyk260/PureChat
- Website: https://im.purechat.cn
- Stars: 545 · Forks: 81
- Language: TypeScript
- License: MIT
- Published: 2026-09-14 · Updated: 2026-09-14 · Language: en
- Canonical page: https://hysenlabs.com/projects/hyk260-purechat

## The first thing the README says is to leave

The top of this README is an IMPORTANT callout box, and its message is that this repository is the older PureChat, the Vue and Electron one. It names the currently maintained project, Hyk260/PureChatNext, gives a separate online demo address for it, and says new deployments, feature requests and problem reports should go to the new repository.

Everything below that callout is the documentation for the older version, and it is written in Chinese throughout: the feature list, the environment variable table, the provider table and the build instructions. So the useful reading here is historical. The project is credited to a single author, and the deployment documentation sits on a separate docs site rather than in the repository.

The repository tree has grown well past what the older README describes, with agent configuration directories for four different tools, a branching guide, a commit message guide and a Dockerfile, none of which the callout mentions.

## Release tags stop below the version in the manifest

Two releases are visible in the history: v0.8.3 on 2025-05-29 and v0.8.5 on 2025-08-13. The package manifest declares version 1.0.4.

That gap is the whole version story. The download badges at the top of the README, for Windows and for macOS, point at the releases page, whose newest tag is 0.8.5, while the source you would clone reports 1.0.4. Anyone who pins a tag gets a different state of the application than anyone who reads the manifest, and neither number explains the other.

The repository itself was pushed on 2026-09-17, well after the newer tag, so the source tree has moved since the last published release. Whether the missing 1.x tags exist elsewhere is not something this repository states.

## Five env files are committed, and VITE_ keys reach the browser

The top-level listing contains `.env`, `.env.development`, `.env.github`, `.env.production` and `.env.vercel`. Five environment files, tracked in the repository, one per build variant.

The configuration table marks three variables as required: `VITE_OPENAI_API_KEY`, `VITE_IM_SDK_APPID` for the Tencent IM SDK, and `VITE_SERVICE_BASE_URL` for the server address. A fourth, `VITE_OPENAI_PROXY_URL`, is optional and overrides the default OpenAI base URL, which is `https://api.openai.com/v1`, with a third-party aggregator given as the example.

The VITE_ prefix is the part to understand. Vite substitutes those variables into the client bundle at build time, so a key placed in a committed `.env.production` is compiled into the JavaScript that ships to every browser. The same table also carries a malformed last row, which ends in a stray extra cell after the example value, so the table itself is not a reliable copy-and-paste source.

## Node 18.20 in the docs, Node 20 in the container

The README asks for Node.js 18.20 or newer on the local machine. The Dockerfile starts from `node:20-alpine`. Both can be satisfied by using Node 20, but a reader who trusts the README and installs 18.20 will find the container path and the local path on different runtimes.

The entire local sequence is four commands: clone, install with pnpm, start with pnpm dev, and bundle with pnpm build.

```bash
git clone https://github.com/Hyk260/PureChat.git
```

```bash
pnpm install
```

The container has its own opinions about tooling. Corepack is enabled and pnpm is activated with `corepack prepare pnpm@latest --activate`, so the package manager version floats to whatever is latest at build time even though a pnpm lockfile is committed and the install step uses `--frozen-lockfile`. The npm registry is also switched to a China mirror inside the image.

The build context is copied wholesale after the install step, and no .dockerignore appears in the top-level listing, which means a local build output directory and any local environment file travel into the image stage as well. The runtime stage copies dist into nginx and exposes port 80.

## The desktop build claim has no target in the manifest

One feature line promises desktop builds: an Electron version with a macOS dmg and a Windows exe. Two badges at the top of the README offer Windows and macOS downloads, both pointing at the releases page.

Nothing behind those claims is visible. Every script in the manifest is a Vite script, dev through build:github, build:cdn, build:preview and the rest, and the top-level listing has no Electron directory, no electron-builder configuration and no packaging target. The repository may build its desktop app from a separate branch, or from a tag that predates the current tree, but this copy does not say so.

Since the download badges resolve to the releases page, and the newest tag there is v0.8.5, the desktop story and the current source are two different things.

## Nine workspace packages, two editors and one IM SDK

The manifest leans on its own workspace. Nine dependencies use the workspace protocol: `@pure/const`, `@pure/database`, `@pure/editor`, `@pure/icons`, `@pure/model-runtime`, `@pure/fetch-sse`, `@pure/prompts`, `@pure/ui` and `@pure/utils`, with a pnpm-workspace.yaml and a pnpm-lock.yaml at the root. The application lives in src/, the internals in packages/.

Three external dependencies explain the features. `@tencentcloud/lite-chat` is pinned to an exact version, 4.4.0, and is why sessions are instant messaging rather than local history. A Vue Monaco editor component and a WYSIWYG editor sit side by side, so the app carries both a code editor and a rich text editor, with shiki providing syntax highlighting for rendered Markdown.

Deployment variants are encoded as build flags: `build:github` sets a base URL of `/PureChat/` for GitHub Pages, `build:cdn` sets a CDN flag, and the tree also carries a vercel.json and an nginx.conf. Four deployment shapes, one source tree, no per-target documentation.

## The lint command rewrites your files

Three of the lint scripts are worth reading before you wire them into a hook. `lint` and `lint:vue` both pass `--fix` to eslint, so the command you would naturally reach for edits your working tree. The read-only variant is `lint:check`. Type checking is separate and also read-only, `vue-tsc --noEmit` with a watch variant.

One script is named for something it does not do. `analyze` is `rimraf dist && vite build`, a clean rebuild with no bundle report, so a script name can send you looking for output that is not produced.

The aggregate entry point is `check`, which runs a script called scripts/check-all.js, and there is a matched pair for skills: `skills:sync` writes and `skills:check` verifies, mirroring the check mode used elsewhere in the tree. A branching guide and a commit message guide sit at the root next to those scripts.

## Conclusion

Treat this repository as a reference rather than a base, because its README says so and redirects new work to PureChatNext. Two things to check in your own copy before you build on it: the release tags stop at v0.8.5 while package.json declares 1.0.4, so any pin you choose refers to a different state than the manifest, and the required OpenAI key is a VITE_ variable, which Vite inlines into the browser bundle rather than keeping on a server. The documentation is written in Chinese.

## FAQ

### Is Hyk260/PureChat still the maintained project?

The README marks this repository as the older Vue and Electron version of PureChat and points to Hyk260/PureChatNext as the maintained project, with new deployments, feature requests and issues going to that repository instead.

### Which environment variables does PureChat require?

Three are marked required: VITE_OPENAI_API_KEY, VITE_IM_SDK_APPID for the Tencent IM SDKAppID, and VITE_SERVICE_BASE_URL for the server address. VITE_OPENAI_PROXY_URL is optional and overrides the default OpenAI base URL of https://api.openai.com/v1.

### What Node version does PureChat need?

The README asks for Node.js 18.20 or newer, while the Dockerfile builds on node:20-alpine and activates pnpm through corepack. The repository also carries .node-version and .nvmrc files for pinning a local version.

### How do I run PureChat locally?

Clone the repository, run pnpm install, then pnpm dev to start Vite. pnpm build produces the production bundle, and the Dockerfile serves that dist directory from nginx on port 80 with a multi-stage build.

### Which language models does PureChat support?

OpenAI, Ollama and DeepSeek, with web search, streaming output, deep thinking and custom preset prompts. A provider table also lists three hosted aggregators, and their links carry referral and campaign parameters.

## Sources

- [Hyk260/PureChat on GitHub](https://github.com/Hyk260/PureChat)
- [License: MIT](https://github.com/Hyk260/PureChat/blob/main/LICENSE)
- [Project website](https://im.purechat.cn)
- [README](https://github.com/Hyk260/PureChat/blob/main/README.md)
- [Releases](https://github.com/Hyk260/PureChat/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/hyk260-purechat
