[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80299":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":13,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":17,"lastSyncTime":27,"discoverSource":28},80299,"openpi","heyhuynhgiabuu\u002Fopenpi","heyhuynhgiabuu","OpenPi is a desktop workbench for the Pi coding agent.","",null,"TypeScript",86,5,74,0,12,2,46.03,"MIT License",false,"main",true,[],"2026-06-12 04:01:27","# OpenPi\n\nA desktop workbench for the [Pi coding agent](https:\u002F\u002Fgithub.com\u002Fearendil-works\u002Fpi).\n\n[![CI](https:\u002F\u002Fgithub.com\u002Fheyhuynhgiabuu\u002Fopenpi\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fheyhuynhgiabuu\u002Fopenpi\u002Factions\u002Fworkflows\u002Fci.yml)\n[![Release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fheyhuynhgiabuu\u002Fopenpi?include_prereleases&label=release)](https:\u002F\u002Fgithub.com\u002Fheyhuynhgiabuu\u002Fopenpi\u002Freleases)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE)\n\nOpenPi wraps Pi's sessions, agent events, customizations, file search, source control, diffs, and terminals in a local Electron app. It is not a fork of Pi's agent runtime; OpenPi hosts `@earendil-works\u002Fpi-coding-agent` in Electron main and presents it with a desktop UI.\n\n![OpenPi desktop workbench screenshot](media\u002Fdemo.png)\n\n## What is Pi?\n\nPi is an open-source coding agent project by Earendil Works. Learn more from the upstream project:\n\n- [earendil-works\u002Fpi on GitHub](https:\u002F\u002Fgithub.com\u002Fearendil-works\u002Fpi)\n- [Pi documentation](https:\u002F\u002Fpi.dev\u002Fdocs\u002Flatest)\n- [`@earendil-works\u002Fpi-coding-agent`](https:\u002F\u002Fgithub.com\u002Fearendil-works\u002Fpi\u002Ftree\u002Fmain\u002Fpackages\u002Fcoding-agent)\n\nOpenPi builds on Pi's SDK instead of reimplementing the agent runtime, session tree, tool execution, extensions, or model\u002Fprovider behavior.\n\n## Current beta surface\n\n- **Pi sessions in a desktop shell** — session sidebar, workspace grouping, model selector, conversation stream, tool cards, and token\u002Fcost metadata.\n- **Command palette** — `Shift+Cmd+P` searches commands, files, and sessions.\n- **Customizations** — manage Pi Extensions, Skills, Prompts, Themes, Packages, Models, General settings, Notifications, Keybindings, Updates, and About.\n- **Source control** — persistent Git panel, file tree, search, split diff viewer, and file viewer, with mutations owned by Electron main.\n- **Terminal\u002Foutput panel** — local PTY lifecycle through Electron main, not the renderer.\n- **Built-in subagents** — three Pi SDK-native tools (`Agent`, `get_subagent_result`, `steer_subagent`) with 5 built-in agent types: Worker (surgical implementer), Explorer (codebase cartographer), Scout (external research), Planner (architecture), Reviewer (code review). Custom agents via `.pi\u002Fagents\u002F*.md` files with full frontmatter support.\n- **Subagent widget** — live status tray with elapsed timer, expandable detail panel, real-time activity stream, and completion notification banner.\n- **@mention autocomplete** — `@` in composer shows subagents and files with visual chips, capital-case display, and keyboard navigation.\n- **Agent prompt tuning** — tool description tells Pi to delegate on `@agent_name` patterns; prompts with explicit subagent identity headers.\n- **OpenPi branding and release automation** — app icon, dynamic app version, CI, and tag-triggered beta builds.\n\n## Architecture boundaries\n\nOpenPi follows three hard boundaries:\n\n1. **Renderer renders only.** It collects intent and displays state. It does not access the filesystem, shell, Git, SQLite, secrets, or Pi internals directly.\n2. **Electron main owns desktop authority.** IPC handlers validate payloads with Zod and perform privileged actions: Pi SDK hosting, PTY, Git, SQLite, file search, app metadata, and native dialogs.\n3. **Pi SDK owns agent semantics.** Session trees, compaction, queues, tools, extensions, providers, and model behavior remain Pi's responsibility.\n\nSee [`AGENTS.md`](AGENTS.md) for the full project rules and [`ROADMAP.md`](ROADMAP.md) for the beta roadmap.\n\n## Install with Homebrew\n\nRecommended for macOS beta users:\n\n```sh\nbrew tap heyhuynhgiabuu\u002Fopenpi\nbrew install --cask openpi\n```\n\nUpgrade later with:\n\n```sh\nbrew update\nbrew upgrade --cask openpi\n```\n\n## Install from source\n\nRequirements:\n\n- Node.js 22+\n- npm\n- macOS, Linux, or Windows for development builds\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fheyhuynhgiabuu\u002Fopenpi.git\ncd openpi\nnpm ci\nnpm run dev\n```\n\n## Development\n\n```bash\nnpm run lint       # Biome checks\nnpm run typecheck  # TypeScript\nnpm test           # Vitest\nnpm run build      # Electron\u002FVite production build\n```\n\nPackage a local unsigned beta build:\n\n```bash\nCSC_IDENTITY_AUTO_DISCOVERY=false OPENPI_RELEASE_CHANNEL=beta \\\n  npx electron-builder --config electron-builder.json --dir --publish never\n```\n\n## Releases\n\nTagged `v*` pushes run the beta release workflow and publish a GitHub release with installers attached.\n\n```bash\nnpm run release:patch -- --notes \"Short release note\"\nnpm run release:prerelease -- --preid beta --notes-file \u002Ftmp\u002Fopenpi-release-notes.md\nnpm run release:version -- 0.2.0 --notes-file \u002Ftmp\u002Fopenpi-release-notes.md\ngit push origin main --follow-tags\n```\n\n`CHANGELOG.md` is the release-note source of truth. The beta release workflow extracts the matching `## [x.y.z]` section and publishes that body to GitHub Releases.\n\n## Beta caveats\n\n**macOS — app is not notarized yet.** Homebrew can handle download\u002Finstall\u002Fupgrade, but macOS Gatekeeper may still block unsigned builds on first launch. If blocked, run this once in Terminal to remove the quarantine flag:\n\n```sh\nxattr -rd com.apple.quarantine \u002FApplications\u002FOpenPi.app\n```\n\nThen double-click the app as normal. This will no longer be required once notarization is configured.\n\n- macOS notarization and Windows code signing are not configured yet.\n- Permission gates, workspace trust hardening, protected-path policy, and keychain-backed secrets are still active roadmap items.\n- Some custom-widget accessibility diagnostics are warning-level while the desktop UI matures; concrete label\u002Fbutton checks remain enforced.\n\n## Contributing\n\nRead [`CONTRIBUTING.md`](CONTRIBUTING.md) before opening issues or pull requests. Changes that cross renderer\u002Fmain\u002FPi SDK boundaries need extra care and tests.\n\n## License\n\nMIT — see [`LICENSE`](LICENSE).\n","OpenPi 是一个为 Pi 编码代理设计的桌面工作台。它使用 Electron 构建，集成了会话管理、代理事件处理、自定义设置、文件搜索、源代码控制、差异查看和终端等功能。项目通过本地应用的形式提供了对 Pi 编码代理的访问与控制界面，但并不重新实现其运行时环境或核心逻辑。适合需要在桌面上进行高效开发并希望利用自动化编码助手功能的开发者使用。基于 TypeScript 开发，并遵循 MIT 许可证发布。","2026-06-11 04:00:12","CREATED_QUERY"]