pi-app
Desktop app for the pi coding agent: streaming timeline, Git review with hunk staging, session tree, native UI for pi extensions. Windows · macOS · Linux. pi 编程 Agent 桌面客户端
Install / Use
npx skills add justhil/pi-appInstalls into whichever agent you are using.
Other
Other agent config
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of pi-app
pi-app scores 89/100 on our quality scale, 321st of 932 AI & Machine Learning skills we index (top 35%).
Its Other is 12 KB long, well organised into 18 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.
It has 361 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated today, so pi-app is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
pi-app compared with similar skills
All 4 of these similar skills score higher than pi-app; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pi-app (this skill)by justhil | 89 | 361 | today | Other |
| claude-memby thedotmack | 100 | 95.1k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 87.5k | 16d ago | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 84.9k | 3d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.2k | today | CLAUDE.md |
Frequently asked questions
- How do I install pi-app?
- Run
npx skills add justhil/pi-app. The install tabs above show the steps for each supported agent. - Which AI agents does pi-app work with?
- It is written for Claude Code, as a Other file. Other agents that read the same format can often use it too.
- Is pi-app safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pi-app still maintained?
- The repository was last updated today, so pi-app is actively maintained.
Skill content
View source on GitHubpi Desktop
A desktop app for the pi coding agent.<br/>
The same agent and the same ~/.pi/agent you use in the terminal — with a timeline, Git review and a clickable session tree.
English · 简体中文 · Download · Getting started · Adapters
</div> <picture> <source media="(prefers-color-scheme: dark)" srcset="doc/assets/readme/en/hero-dark.png" /> <img src="doc/assets/readme/en/hero-light.png" alt="pi Desktop: a finished turn in the timeline, with the Git diff open in the Review panel" /> </picture>pi Desktop is not another agent. It runs the pi SDK in a background worker and reads the same files as the CLI — sessions, model logins, settings.json, installed extensions. Open a project and the sessions you started in the terminal are already in the sidebar; continue any of them, or start a new one.
At a glance
<img src="doc/assets/readme/en/overview.png" alt="Overview: timeline steps, side-by-side review, parallel sessions, @ file references, context breakdown, built-in adapters, themes and the shared ~/.pi/agent files" width="100%" />One turn, start to finish
<img src="doc/assets/readme/en/agent-turn.gif" alt="A prompt is sent; the agent runs tests, reads a file, edits it, reruns tests, and the changes appear in Review" width="100%" /><sub>Recorded from the app itself. The model replies come from a scripted local endpoint so the demo is reproducible; the <code>bash</code>, <code>read</code> and <code>edit</code> tools ran for real on the sample repo.</sub>
Timeline
Tool calls stream in as flat steps — thinking, commands, reads, edits — and fold into one summary line once the answer starts. Each edit shows +N −M; the turn ends with a Files changed card that opens the file in Files or Review.
Markdown, code blocks, KaTeX and long outputs render in place. Hover a message to copy it, rewind to it, or fork a new session from it.
Review
<img src="doc/assets/readme/en/review-stage.gif" alt="The right sidebar is dragged wider, the Git diff of links.mjs switches to side by side, and one hunk is staged" width="100%" />Pick a scope — this turn, this session, or the whole Git working tree — and expand a file for its diff; drag the sidebar wider for a side-by-side view. Hunks can be staged or unstaged one at a time, and a line comment goes straight back into the conversation.
Files
<img src="doc/assets/readme/en/files-preview.gif" alt="links.mjs opens in the Files panel, links.test.mjs opens in a second tab, a line is quoted into the composer, and the preview expands over the chat column" width="100%" />- Browse the project next to the chat;
Ctrl/⌘+click opens a file in another tab. - The gutter button quotes
path:lineinto the composer as a reference. - Expand preview gives the file the whole chat column; click again to go back. Drag a file onto the composer to attach it.
Composer
<img src="doc/assets/readme/en/composer-mention.gif" alt="Typing @li suggests src/links.mjs; Enter inserts it as a file chip" width="66%" />@searches project files (respects.gitignore, usesfd) and inserts them as references./lists pi's built-in commands and the ones your extensions register.- Paste or drop images and files; model and thinking level sit at the right of the input.
- While the agent is working,
Entersteers the current turn andAlt+Enterqueues a follow-up for when it finishes.
Parallel sessions
<img src="doc/assets/readme/en/parallel-sessions.gif" alt="A fix turn starts, a second session starts a read-only turn, both run at once while the view switches between them" width="100%" />Each session runs in its own worker. Start a turn, open another session and start a second one: both keep going, the sidebar marks the ones that are working and the status bar counts them. Settings → General sets how many workers stay alive and when idle ones are reclaimed; running sessions are never reclaimed.
More panels
<img src="doc/assets/readme/en/panels.png" alt="Tree panel with the session as a tree, Run panel with the context breakdown ring, and the Context panel listing context entries with token estimates" width="100%" />| Panel | What it does |
|---|---|
| Tree | The session as a tree, like pi /tree: filter to user messages, jump back to any node and continue from there as a new branch. |
| Run | Run state, model and thinking level, and how the context window splits between user, assistant and tool messages. |
| Context | The messages that make up the current context, with token estimates per entry. |
Themes
<img src="doc/assets/readme/en/theme-switch.gif" alt="The same window sweeps from the light theme to the dark theme and back" width="100%" />Light and dark each take a preset or your own colors, and follow the system when you want them to. Themes import from pi-theme-v1 / codex-theme-v1 strings; custom CSS, five icon sets and 90–110% density are in Settings → Appearance.
How it fits together
<picture> <source media="(prefers-color-scheme: dark)" srcset="doc/assets/readme/en/architecture-dark.png" /> <img src="doc/assets/readme/en/architecture-light.png" alt="Terminal pi and pi Desktop both read and write ~/.pi/agent; pi Desktop has a renderer, a main process, and one worker per session" width="100%" /> </picture>The renderer never talks to the SDK directly: the main process routes each request to the worker that owns the session, and that worker runs the pi SDK on your machine or inside a WSL distribution. Sessions, logins and settings stay in ~/.pi/agent, so the CLI and the app can take turns on the same session.
Also included
| | |
|---|---|
| Extensions, unchanged | Extensions you installed for terminal pi load here. Their dialogs, tool cards, panels and /commands are mapped to native UI by declarative adapters — 36 ship built in. List |
| Notifications | A system notification and an in-app inbox when a turn finishes or needs input; the status bar shows what is running. |
| WSL runtime (Windows) | Run the worker inside a chosen WSL distribution, with sessions, Git and previews resolved on the Linux side. |
| Chinese / English UI | Switch in Settings. |
| Updates | Checks GitHub Releases in the background and can download and launch the installer. |
Install
| Platform | Package |
|---|---|
| Windows x64 | pi.Desktop-Setup-<version>-x64.exe (installer) or pi.Desktop-Portable-<version>-x64.exe |
| macOS | .dmg / .zip for Apple Silicon (arm64) and Intel (x64) |
| Linux x64 | .AppImage or .deb |
Get them from Releases; each release lists SHA-256 checksums in SHA256SUMS.txt. The app bundles its own pi SDK; you only need to sign in to a model provider once, the same way you do for terminal pi (the credentials live in ~/.pi/agent). Settings → Runtime can switch to a globally installed pi version.
Requires Node.js ≥ 22.19.
git clone https://github.com/justhil/pi-app.git
cd pi-app
npm install
npm run dev # development
npm run build # production bundle in out/
npm run package # installers via electron-builder
</details>
First five minutes
- Open folder — the folder becomes the agent's working directory. For a throwaway chat, use + next to Conversations instead.
- Pick a session — sessions from terminal pi for that folder are listed; + next to the project starts a new one.
- Send —
Entersends,Shift+Enteradds a line. - Look right — Review, Run, Context, Tree and Files share the right sidebar; drag its edge to make it wider.
- Go back — hover a message to rewind or fork, or press
Esctwice in an empty composer to open the session tree.
Shortcuts
| Action | Keys |
|---|---|
| Send / new line | Enter / Shift+Enter |
| Steer the running turn / queue a follow-up | Enter / Alt+Enter while running |
| Pull the last queued message back | Alt+↑ |
| Stop | Esc |
| Session tree | Esc Esc in an empty composer |
| Previous / next sent message | ↑ / ↓ with an empty composer or the caret at the start / end |
| File reference / command | @ / / |
| Open a file in a new tab | Ctrl/⌘+click in Files |
Extensions
Install and enable extensions exactly as for terminal pi:
pi install npm:<package> # or: pi install git:github.com/<owner>/<repo>
then make sure the package is enabled in ~/.pi/agent/settings.json → packages and start a new session. Settings → Extensions shows what the current worker loaded; Settings → Adapters holds each adapter's desktop options. To override or add an adapter, put a .json adapter file in ~/.pi/desktop/adapters/ (or <project>/.pi/desktop/adapters/, which takes precedence) — see the authoring guide.
The mic button in the composer transcribes speech into the input. By default it uses the built-in service, which calls ChatGPT's transcription endpoint with your Codex / ChatGPT sign-in — no OpenAI API key and no local process. In Settings → Voice, paste an access_token or import it from ~/.codex/auth.json (written by codex login), then Verify login.
Under Advanced you can use a local codex-asr CLI or your own codex-asr serve URL instead. Typing always works without voice.
| Problem | Try |
|---|---|
| An extension is listed in Settings but missing in chat | Enable it in packages, then start a new session. |
| The first switch to a long session is slow | Only the latest messages load first; the rest loads on scroll or when you send. |
| Closed an extension dialog by accident | Use Continue on its timeline card. |
| Voice says the login is invalid | The token expired — run codex login again and re-import. |
| Blank window after changing source | Delete node_modules/.vite and rerun npm run dev. |
- Stack: Electron 43 · React 18 · TypeScript · Tailwind · Zustand · i18next ·
@earendil-works/pi-coding-agent - Processes: Electron main (IPC, worker pool, Git, previews) → one utility-process worker per session running the pi SDK → renderer.
- Checks:
npm run test:unit,npm run test:scripts,npm run typecheck,npm run lint - Docs:
doc/· adapter authoring · changelog - Releases: pushing a
v*tag runs.github/workflows/release.ymland builds Windows, macOS and Linux packages.
Support
Questions and feedback: LinuxDo or GitHub Issues. If the app is useful to you, a ⭐ helps other pi users find it, and you can sponsor maintenance with the QR code
Truncated for display — read the full file on GitHub.
Related Skills
claude-mem
95.1kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
87.5kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Understand-Anything
84.9kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
74.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
