HelgeSverre/ollama-gui

A Web Interface for chatting with your local LLMs via the ollama API

Ollama GUI – 基于浏览器的本地运行 LLM 聊天前端

它是什么 – 一个单页 Web 应用,直接与 Ollama 推理服务器通信。你可以与已拉取到 Ollama 的任何模型聊天(例如 Llama 3.2、qwen3、deepseek-r1、gpt-oss、视觉模型如 llava),无需单独的后端。所有数据都存储在浏览器的 IndexedDB 中,因此除非你将应用指向远程 Ollama 实例,否则数据不会离开你的机器。

主要功能

功能 你获得的内容
聊天界面 流式响应、停止生成、重新生成、编辑。每次编辑/重新生成都会版本化,并可分支到新对话。
思考模型 对于暴露“推理”流的模型(qwen3、deepseek-r1、gpt-oss),中间思考过程显示在可折叠块中;你可以切换它们或调整 gpt-oss 的努力级别。
附件 为视觉模型(llava、gemma3)拖放图像,或附加文本/代码文件到消息。
模型管理 输入时搜索 Ollama 模型目录,选择大小,带进度条拉取,删除,检查能力,查看上下文长度,从内存卸载。
设置 全局或按模型/系统提示,生成参数(temperature、num_ctx、top_p、seed 等)。
历史记录 按日期分组的聊天,固定/归档,自动生成标题,全文搜索(⌘K),重命名。
Markdown 渲染 语法高亮代码块,KaTeX 数学支持。
外观 浅色/深色主题,区域感知的日期和数字。
导入/导出 将所有聊天导出为 JSON 或单个聊天导出为 Markdown;导入相同格式。
键盘快捷键 快速操作如搜索(⌘/Ctrl K)、新聊天(⌘/Ctrl ⇧ O)、删除聊天(⌘/Ctrl ⇧ ⌫)、发送/换行、停止生成、编辑最后一条消息等。

如何运行

  1. 安装 Ollama 并让其默认端口 11434 提供服务。
  2. 安装 Bun(或任何较新的 Node 20)用于开发。
  3. git clone https://github.com/HelgeSverre/ollama-gui.git
    cd ollama-gui
    bun install
    bun run dev   # 打开 http://localhost:5173
    
    开发服务器将 /api 代理到本地 Ollama 实例,因此无需 CORS 调整。
  4. 对于生产环境,运行 bun run build 生成静态 dist/ 文件夹,然后通过反向代理将 /api 转发到 Ollama,或使用提供的 Docker 镜像。

部署选项

  • 托管演示 – https://ollama-gui.vercel.app(添加来源到 OLLAMA_ORIGINS 后连接到你的本地 Ollama)。
  • Docker – 两步镜像发布在 GitHub Container Registry。你可以单独运行 GUI(docker run … ghcr.io/helgesverre/ollama-gui)并通过 OLLAMA_URL 环境变量指向本地或远程 Ollama,或使用提供的 docker-compose.yml 在端口 8080 上同时启动 Ollama 和 GUI。
  • 静态构建 – 使用任何静态 Web 服务器(nginx、Apache、Vercel、Netlify 等)提供 dist/ 文件夹,并为 /api 配置反向代理。

开发与测试

  • 使用 ESLint 进行代码检查(bun run lint)。
  • 通过 Vitest 进行单元/集成测试(bun run test)。
  • 使用 Playwright 进行端到端测试;默认使用模拟的 Ollama API,但你可以通过拉取几个模型并设置 OLLAMA_REAL=1 来运行真实模型测试。
  • 模型目录从公共 Ollama 库生成(bun run catalog:update)。

技术栈 – Vue 3 + Vite 用于 SPA,Tailwind CSS 用于样式,VueUse 工具,Dexie 用于 IndexedDB 抽象,markdown-it + highlight.js + KaTeX 用于富消息渲染,Tabler Icons 用于 UI 图标。

许可证 – MIT(宽松,允许个人或商业使用)。


简而言之,Ollama GUI 是一个轻量级、隐私优先的 Web 客户端,将任何本地托管的 Ollama 模型转变为功能完整的聊天体验,包括历史记录、模型管理,以及对视觉和“思考”模型的支持。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目