开源 · MIT · 非官方的 Pi 桌面壳

让 Pi agent harness 在桌面安家。

Pi Desktop 把上游的 Pi Web UI —— 原样不改 —— 装进 Windows、macOS、Linux 与 HarmonyOS 的原生外壳里。Pi 宿主和它的 Next.js 服务器跑在应用自身进程内,窗口从同一个源加载这套 UI:没有云端中转、没有 CORS、没有登录页,PATH 里也不需要 pi 二进制。你现有的会话、凭据与扩展照样可用。

  • Windows
  • macOS
  • Linux
  • HarmonyOS

桌面版 v0.11.1 · Windows 打包态端到端已验收;macOS & Linux 待验证
HarmonyOS(1) v0.11.1 · versionCode 1101 · 已构建、已签名、真机验证
基于 pi v1.1.0 + pi-web v0.11.1 · 零上游改动 · 安装包未签名
(1)真机:HUAWEI MateBook Pro(HAD-W32),HarmonyOS API 26;2in1 与平板。

Pi Desktop 运行上游 Pi Web UI 的浅色主题画面,界面为简体中文 Pi Desktop 运行上游 Pi Web UI 的深色主题画面,界面为简体中文

Pi Desktop 运行上游 Pi Web UI 的实拍截图(在 Windows 上采集;界面本身是简体中文)。

$ 为什么要原生外壳

为什么要原生外壳

完整的 Pi 体验 —— 但没有那个浏览器标签页。

100% 上游 Pi 与 Pi Web —— 零上游改动。

Pi SDK 与 Pi Web UI 原样运行,壳只负责装配。本版本必需补丁 0 条,所以上游的改进可以直接跟上,不必维护一个 fork 去 rebase。

本地优先,进程内。

Pi 宿主与它的 Next.js 服务器跑在应用自己的主进程里 —— 没有 sidecar、没有孤儿 Node 进程 —— UI 从同一个源加载。没有任何东西经云端中转,也没有需要你粘贴密码的登录页。

一个桌面公民。

系统托盘、由尾随会话日志驱动的原生通知、单实例唤回、记住的窗口尺寸与位置,外链交给系统浏览器打开。

与 pi CLI 共用一套环境。

默认落在 ~/.pi/agent,所以会话、凭据、扩展与 MCP 配置就是你终端里已经在用的那一套。需要隔离时,可以在设置里切到应用私有目录。

$ 选择你的桌面

选择你的桌面

Pi Desktop

Electron · Windows · macOS · Linux
  • Electron 43.7.9(Node 24.21.0 / Chromium 150):pi-web 的 Next.js 服务器跑在主进程内,不是 sidecar。
  • 随机 loopback 端口配宿主生成的随机强密码 —— 凭据由壳注入,登录页永不出现。
  • 随包分发 pi-dist.tar.gz,首启解压到 userData,之后按 SHA-256 marker 跳过。
  • 安装包:Squirrel(Windows)、DMG(macOS)、deb / rpm / zip(Linux)—— 未签名,SmartScreen 与 Gatekeeper 会拦。
  • 状态:v0.11.1 · Windows 打包态端到端已验收;macOS 与 Linux 待验证。
在 GitHub 上查看

Pi Desktop · HarmonyOS

Electron-on-鸿蒙 · 2in1 与平板
  • 在 harmonypc-electron 运行时上跑 Electron 37.2.3 / Node 22.17.0,打包为 HAP。
  • 已构建、已签名、真机验证 —— HUAWEI MateBook Pro(HAD-W32),HarmonyOS API 26。
  • 完整的上游 Pi Web UI;会话持久化在应用沙箱内。
  • 绑定 0.0.0.0,窗口经局域网 IP 连接 —— 因为鸿蒙对 loopback 做了网络隔离。
  • 已知限制:无终端 / PTY、无 git、无 ripgrep 与 fd 二进制、插件只能装本地源。
  • 状态:v0.11.1 · versionCode 1101。
在 GitHub 上查看

两个版本合起来覆盖四个桌面平台 —— Windows、Linux、macOS(Electron 版)加 HarmonyOS。这是两个独立的、非官方的开源壳,建立在 Pi 与 Pi Web 之上、零上游改动;与 Pi 或 Pi Web 作者无隶属关系,也未获其背书。目前均未做代码签名,Windows 上会出现 SmartScreen 提示,macOS 上会被 Gatekeeper 拦下。

$ 工作原理

一个宿主。一个源。零摩擦。

  1. 进程内宿主

    壳在 Electron 主进程里启动 pi-web 的 Next.js 服务器。

  2. 同源 UI

    窗口从这台服务器加载 http://127.0.0.1:<port>/。

  3. 上游数据面

    标准的 Pi Web UI 驱动全部通信:fetch('/api/*') 上行,SSE 下行。

无 CORS · 无自定义协议 · 无登录页 · 零上游改动。