30-second local ChatGPT alternative. No Docker. No database setup. Just
npx polychat. Multi-model (GPT/Claude/Gemini/Qwen/DeepSeek/...), image generation, image input. Gateway-friendly.
简体中文 · English below
| polychat | Open WebUI | LibreChat | LobeChat | |
|---|---|---|---|---|
| Install | npx polychat |
Docker | Docker + MongoDB | Vercel + PostgreSQL |
| Setup time | ~30 seconds | 15-30 min | 30 min+ | 15-20 min |
| External deps | None | Docker | Mongo + Meili + Vector DB | PostgreSQL |
| Bundle | ~2 MB | Hundreds of MB | Hundreds of MB | — |
| Multi-model | ✅ | ✅ | ✅ | ✅ |
| Image gen | ✅ | ✅ | ✅ | ✅ |
| Image input | ✅ | ✅ | ✅ | ✅ |
| Local-first | ✅ | ✅ | ✅ | partial |
# Run without installing
npx polychat
# Or install globally
npm install -g polychat-app
polychatThe browser opens to http://localhost:3333 automatically. First-run wizard helps you add an API key.
- Multi-model: OpenAI, Anthropic Claude, Google Gemini, xAI Grok, OpenRouter, plus any OpenAI-compatible gateway
- Gateway-first: built-in templates for new-api, one-api, 火山方舟, 智谱, DeepSeek, Moonshot Kimi, Qwen DashScope, Together, Groq, Fireworks
- Image generation with
/image <prompt>(works withgpt-image-1,dall-e-3,gemini-3-pro-image-preview, etc.) - Image input — drag, paste, or upload images for vision models
- Multi-conversation sidebar with persistent history (SQLite)
- Markdown + syntax-highlighted code (Shiki, 16+ languages)
- Model manager — browse, favorite, set defaults from your provider's
/v1/models - Settings wizard — one-click gateway templates, test connectivity before saving
- HTTP proxy support — honors
HTTPS_PROXYenv var for corporate / VPN setups - Bilingual UI (中文 / English), Chinese default
- Local-first — your code, keys, and chats never leave your machine
Stored at ~/.polychat/config.json (mode 0600).
{
"defaultModel": "polyai:claude-sonnet-4-6",
"defaultImageModel": "polyai:gemini-3-pro-image-preview",
"providers": {
"polyai": {
"apiKey": "sk-...",
"baseUrl": "https://your-gateway/v1"
}
}
}Environment variables (precedence over config file):
POLYAI_API_KEY=sk-... # also accepts OPENAI_API_KEY
POLYAI_BASE_URL=https://... # also accepts OPENAI_BASE_URL
ANTHROPIC_API_KEY=sk-ant-...
HTTPS_PROXY=http://127.0.0.1:7890 # for VPN/corporate proxy"polyai" is our short name for "any OpenAI-compatible provider" — the actual model behind it can be Claude, Gemini, Qwen, etc., depending on your gateway.
polychat # start web UI (default)
polychat --port 4000 # custom port
polychat --no-open # don't auto-open browser
polychat config # show current config
polychat login <provider> # interactively set API key- Node.js ≥ 20 (uses
node:sqlite, recommended Node 22+) - macOS / Linux / Windows
- A modern browser (Chrome / Safari / Edge / Firefox)
/image <prompt>— generate image (also/img,/draw,/画)
- Backend: Hono server (~50KB), Vercel AI SDK v6
- Frontend: React + Vite + Tailwind + shadcn-style components, ~470KB JS gzipped
- DB: SQLite via Node 22+ built-in
node:sqlite(zero native deps) - Single npm package with everything bundled
- All keys stored locally (
~/.polychat/config.json, mode 0600) - No telemetry, no cloud sync, no account system
- Server binds only to
127.0.0.1(not exposed to network) - Pre-commit secret scanner included (
.git/hooks/pre-commit)
git clone https://github.com/heng1234/polychat.git
cd polychat
npm install
npm run dev:web # frontend on :5173 with HMR
npm run dev:server # backend on :3333 in watch modeMIT
30 秒装好的本地版 ChatGPT。 不要 Docker、不要外部数据库,
npx polychat一行搞定。 多模型(GPT/Claude/Gemini/Qwen/DeepSeek 等)、图片生成、图片输入,网关友好。
| polychat | Open WebUI | LibreChat | LobeChat | |
|---|---|---|---|---|
| 安装 | npx polychat |
Docker | Docker + MongoDB | Vercel + PostgreSQL |
| 用时 | ~30 秒 | 15-30 分钟 | 30+ 分钟 | 15-20 分钟 |
| 外部依赖 | 零 | Docker | Mongo + Meili + 向量库 | PostgreSQL |
| 体积 | ~2 MB | 几百 MB | 几百 MB | — |
| 多模型 | ✅ | ✅ | ✅ | ✅ |
| 图片生成 | ✅ | ✅ | ✅ | ✅ |
| 图片输入 | ✅ | ✅ | ✅ | ✅ |
| 本地优先 | ✅ | ✅ | ✅ | 半 |
# 不装,跑一次
npx polychat
# 或全局装
npm install -g polychat-app
polychat启动后浏览器自动开 http://localhost:3333。首次会弹设置向导引导你配 API key。
- 多模型支持:OpenAI、Claude、Gemini、Grok、OpenRouter,以及任何 OpenAI 兼容网关
- 国内网关一等公民:内置 new-api / one-api / 火山方舟 / 智谱 / DeepSeek / Kimi / 通义千问 / OpenRouter / Groq / Fireworks 等模板,一键填好 baseUrl
- 图片生成
/image 一只猫触发(支持gpt-image-1/dall-e-3/gemini-3-pro-image-preview等) - 图片输入 — 拖、粘贴、上传图片给视觉模型(GPT-4o / Claude / Gemini)
- 多对话侧栏 + SQLite 历史持久化
- Markdown + 代码高亮(Shiki,16+ 语言)
- 模型管理 — 拉网关
/v1/models列表,收藏、设默认、按类型过滤 - 设置向导 — 网关模板一键填、测试连通性
- HTTP 代理透传 — 自动认
HTTPS_PROXY环境变量 - 中英双语 UI,默认中文
- 本地优先 — 代码、key、对话永不出本机
位于 ~/.polychat/config.json(权限 0600)。
{
"defaultModel": "polyai:claude-sonnet-4-6",
"defaultImageModel": "polyai:gemini-3-pro-image-preview",
"providers": {
"polyai": {
"apiKey": "sk-...",
"baseUrl": "https://your-gateway/v1"
}
}
}环境变量(优先于配置文件):
POLYAI_API_KEY=sk-... # 也认 OPENAI_API_KEY
POLYAI_BASE_URL=https://... # 也认 OPENAI_BASE_URL
HTTPS_PROXY=http://127.0.0.1:7890 # 走 VPN 时设这个
polyai是我们对"OpenAI 兼容协议适配器"的简称 — 后面接的模型可以是 Claude、Gemini、Qwen 等,看你网关注册了什么。这个名字避免了"用 polychat 是不是只能跑 OpenAI"的误解。
polychat # 启动 Web UI(默认)
polychat --port 4000 # 自定义端口
polychat --no-open # 不自动开浏览器
polychat config # 看当前配置
polychat login <provider> # 交互式配 key- Node.js ≥ 20(用了
node:sqlite,建议 Node 22+) - macOS / Linux / Windows
- 现代浏览器(Chrome / Safari / Edge / Firefox)
/image <提示词>— 生成图片(也支持/img、/draw、/画)
MIT