TinyWebUI 发布:自托管 AI 聊天界面,内置 MCP、搜索与记忆
Show HN: TinyWebUI – A small, self-hosted AI chat UI with MCP, search and memory
TinyWebUI 发布,这是一个自托管的 AI 聊天界面,可接入 OpenRouter、OpenAI、Groq、Ollama、vLLM、LM Studio 等兼容 OpenAI API 的端点,聊天、文档和工具输出都保存在本机一个 SQLite 文件中,无需托管后端或注册账号。
TinyWebUI 是 TinySuite 的聊天界面,TinySuite 是一套面向 AI 智能体的小型、本地优先的工具集。接入一个端点(OpenRouter、OpenAI、Groq、Ollama、vLLM、LM Studio,或任何其他兼容 OpenAI API 的服务),选择一个模型和系统提示词,就可以开始工作了。聊天记录、文档和工具输出都保存在你机器上的一个 SQLite 文件里。没有托管后端,无需创建账户,没有构建步骤,也没有前端框架。
它预装了两个 TinySuite MCP 服务器,因此全新安装后就能搜索网页并记住内容:
- TinySearch 在本地搜索、读取并重排网页。它不需要搜索 API 密钥。
- TinyContext 是一个本地长期记忆,只回忆符合 token 预算的内容。
亮点
- 持久对话。编辑、重试、回退、文件夹和全文搜索。正在进行的回合属于服务器,因此你可以重新加载并回到其中。
- 在回合运行中引导它。按 Enter 让模型在下一个安全点接收消息,或按 Alt+Enter 暂存一条后续消息。
- 支持 stdio、Streamable HTTP 或 SSE 的 MCP。可能改变内容的调用会等待你的批准。
- 附件。文本和源文件、PDF、DOCX 以及图片。
- 混合本地搜索(BM25 加上一个小型设备端嵌入模型),覆盖文档和过往聊天。
- 长对话也能保持低成本。对缓存友好的前缀、大型工具结果的一次性压缩,以及每轮 token 统计。
- 自动化。按 Cron 调度的提示词,在你选择的聊天中运行。
- 默认私密。交互式首次运行会要求设置所有者密码;团队可以使用带角色和管理面板的 SSO 网关。
- 通过文件管理。受版本控制的配置可热重载,拒绝拼写错误,并带有可与运行实例核对的指纹。
- 主题。内置 Fall Fairy 和 Cyber Grid。参见 主题编写 来编写你自己的主题。
快速开始
需要 Node.js 22.13 或更高版本。捆绑的 TinySearch 和 TinyContext 服务器还需要 uv,它会在这些服务器首次启动时获取它们。
npx tinywebui
首次运行会要求你创建一个至少 15 个字符的所有者密码。打开 http://127.0.0.1:7777,登录,然后连接一个模型。在 tinywebui.config.json 中填入端点和密钥(可从 example.tinywebui.config.json 开始),或使用设置面板:
{
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-...",
"model": "deepseek/deepseek-v4.1-flash"
}tinywebui.config.json 保存你的密码哈希和 API 密钥,并且已被 gitignore。请保持这样。之后可用 npx tinywebui set-password 更改密码。
在你运行 npx tinywebui models pull fast(约 90 MB)以启用混合搜索之前,npx tinywebui 使用关键词搜索。
从克隆仓库运行 npm install && npm start。使用 Docker 时,在启动服务前先在持久卷中创建所有者密码:
docker compose build docker compose run --rm -it tinywebui set-password docker compose up -d
Compose 示例将端口 7777 发布到主机的回环接口上。Docker 镜像也接受 TINYWEBUI_PASSWORD 以进行无头首次启动;请使用至少 15 个字符的密码,并保留容器的数据卷。如果没有凭据,无头启动会在打开端口前退出。
Compose 示例现在将配置存储在其命名数据卷中。如果你之前使用的是绑定挂载的 tinywebui.config.json,请在启动前将其设置复制到该卷中,然后在那里运行 set-password。
文档
完整参考见 tinysuite.dev/docs/tinywebui:
| 主题 | 涵盖内容 |
|---|---|
| 快速开始 | npx、克隆、Docker |
| 配置 | 环境变量、每一项设置、模型目录 |
| MCP 工具 | 添加服务器、工具审批、内置工具 |
| 聊天与附件 | 文档、图像、引导一轮对话 |
| 搜索 | 混合检索、嵌入模型、调优 |
| 自动化 | 定时提示词 |
| 长对话 | 缓存与压缩 |
| 使用统计 | Token 用量与归属 |
| 访问 | 仅你自己、一个密码,或 SSO 背后的团队 |
| 以代码方式部署 | JavaScript 配置、锁定设置、角色与功能 |
| CLI | 每条命令 |
| 安全与限制 | 暴露面、MCP 信任、不包含的内容 |
在此仓库中:docs/deploy.md 是脚本化的容器部署,docs/config.schema.json 是配置 schema(也是 tinywebui schema)。
开发
npm test # the whole suite, about 10 seconds npm run dev # restart on changes in src/ and bin/
AGENTS.md 映射了代码库并说明新代码应放在哪里。npm run eval 从 evals/tasks/ 运行模型行为评估并进行真实 API 调用,因此会产生费用。
许可证
GNU Affero 通用公共许可证 v3.0 或更高版本。如果你通过网络向用户运行修改后的版本,你必须向他们提供该版本对应的源代码。
来源:Hacker News · github.com