by FaqFirebase
Pi Desktop: a free, open source desktop GUI for the Pi coding agent and oh-my-pi. Chat, edit files, run a terminal, and review diffs in one window. Linux, macOS, and Windows.
# Add to your Claude Code skills
git clone https://github.com/FaqFirebase/pi-desktopLast scanned: 9/10/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@xmldom/xmldom: xmldom: XML fragment injection via invalid EntityReference.nodeName during requireWellFormed serialization",
"severity": "high"
},
{
"type": "npm-audit",
"message": "baseline-browser-mapping: baseline-browser-mapping process termination on invalid input causes denial of service",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "brace-expansion: brace-expansion: DoS via exponential-time expansion of consecutive non-expanding {} groups",
"severity": "high"
},
{
"type": "npm-audit",
"message": "browserslist: Browserslist: Unbounded memory growth (no cache eviction) via distinct query results, leading to eventual OOM",
"severity": "high"
},
{
"type": "npm-audit",
"message": "fast-uri: fast-uri vulnerable to host confusion via literal backslash authority delimiter",
"severity": "high"
},
{
"type": "npm-audit",
"message": "js-yaml: js-yaml: YAML merge-key chains can force quadratic CPU consumption",
"severity": "high"
},
{
"type": "npm-audit",
"message": "nanoid: nanoid: non-secure generators can loop indefinitely with negative size",
"severity": "high"
},
{
"type": "npm-audit",
"message": "postcss: PostCSS: incomplete fix of GHSA-6g55-p6wh-862q — attacker-controlled sourceMappingURL reads arbitrary .map files when `from` is unset",
"severity": "high"
},
{
"type": "npm-audit",
"message": "tar: node-tar: Uncontrolled recursion in mapHas/filesFilter allows uncatchable stack-overflow DoS via crafted long-path tar with member selection",
"severity": "high"
},
{
"type": "npm-audit",
"message": "undici: undici vulnerable to downstream response desynchronization via retry interceptor",
"severity": "high"
}
],
"status": "WARNING",
"scannedAt": "2026-09-10T08:40:41.156Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how pi-desktop compares with popular alternatives.
pi-desktop is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by FaqFirebase. Pi Desktop: a free, open source desktop GUI for the Pi coding agent and oh-my-pi. Chat, edit files, run a terminal, and review diffs in one window. Linux, macOS, and Windows. It has 343 GitHub stars.
pi-desktop returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.
Clone the repository with "git clone https://github.com/FaqFirebase/pi-desktop" and add it to your Claude Code skills directory (see the Installation section above).
pi-desktop is primarily written in TypeScript. It is open-source under FaqFirebase on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh pi-desktop against similar tools.
No comments yet. Be the first to share your thoughts!
Requires a passing catalog security scan.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
A desktop GUI for the Pi and oh-my-pi coding agents. Chat, manage projects, browse files, run commands, and install packages in one window.

Pi Desktop is in alpha, so expect rough edges.
@ file mentions, prompt recall with Up/Down, a model picker you can drive from the keyboard, and file or image attachments (pick, paste, or drop them)Ctrl/Cmd+F) and a quick switcher (Ctrl/Cmd+K) for commands, skills, prompt templates, workspaces, sessions, and files~/.pi/agent/models.json for Pi, ~/.omp/agent/models.yml for OMP)The Review panel shows the permission mode, pending approvals, changed files, and session status while you chat with Pi. It is hidden by default. Open it from the right-edge tool rail or with Ctrl/Cmd+Shift+U.
Changed files use these status badges:
| Badge | Meaning |
|---|---|
NEW |
Untracked new file |
MOD |
Existing tracked file was modified |
DEL |
Tracked file was deleted |
ADD |
New file staged in git |
STG |
Modified file staged in git |
REN |
File was renamed |
Pi Desktop speaks Pi's RPC protocol, so it can run either the standard pi CLI or the compatible omp binary from oh-my-pi. Settings > Agent Configuration > Agent Installation finds installed engines and lets you pick one, or point it at a custom executable or install directory.
Each engine keeps its own sessions: Pi writes to ~/.pi/agent/sessions, OMP to ~/.omp/agent/sessions. The app reads both, so switching engines never hides your history. When sessions from both appear in one list, each row is tagged Pi or OMP, and opening one starts the engine that wrote it. Under OMP, package actions use OMP's plugin commands.
If ~/.pi/.env exists, its variables (provider API keys, for example) are passed to every Pi or OMP process and to the terminal. A variable already set in the environment wins.
A linked task lets the agent change several Git repositories together, for example a library and the app that uses it. Start one from Linked task on the Home screen, the tab bar, or /linked-task.
/new-repo-set./add-repo) adds a repository while the task runs; the agent sees it on its next turn.main, master, or the remote's default branch.A file edit outside the task's repositories always asks first, even in Trusted mode. Shell commands are not checked for paths: they follow your permission mode and rules like any other command.
Four base modes control what Pi may do. Pick one in the composer, the Review panel, or Settings > Behavior:
| Mode | Behavior |
|---|---|
| Plan / Read-only | Only read/search/list tools are enabled; edits and shell commands are blocked |
| Ask before edits | Pi asks before file edits and shell commands |
| Ask before commands | Pi asks before shell commands |
| Trusted | All tools enabled |
The default is Ask before edits.
Custom permission rules refine the modes with allow/deny rules per Pi tool, edited in Settings > Behavior > Permission Rules:
allow or deny), a tool name (bash, edit, write, read, and so on, or * for any tool), and an optional glob pattern matched against the tool's input: the shell command for bash, the file path for file tools. * is the only wildcard.deny * *.env* rule holds even in Trusted. Allow rules skip the confirmation prompt in the ask modes..pi-desktop/permission-rules.json. A workspace file depends on workspace trust. After you trust the workspace, its file replaces the global list while you work there. Until then (the default for a repo you just opened), only its deny rules apply, on top of your global rules, and its allow rules are ignored. A cloned repo can tighten your permissions but never loosen them. Opening a workspace whose file has allow rules asks you to trust it, and the This workspace tab has Trust and Revoke controls. Import and Export move rule lists as JSON files. You can also edit the workspace file by hand or commit it with the repo; the app picks up changes live.Example rules:
{ "action": "allow", "tool": "bash", "match": "npm test*" }
{ "action": "deny", "tool": "bash", "match": "rm -rf *" }
{ "action": "deny", "tool": "*", "match": "*.env*" }
Pi Desktop ships 7 built-in themes (Dark, Light, Nord, Gruvbox, Breeze Dark, Breeze Light, Breeze Claudius) plus System, the default. You can also create your own in Settings > Appearance. With System selected, Light Theme and Dark Theme choose which installed theme each OS mode uses.
Click Create theme to fork the active theme, or Edit theme to keep editing one you created. Pick 7 seed colors (app background, surface, text, accent, success, warning, error) and a dark or light kind. The app derives every other color from those seeds, and the whole window previews your changes as you edit. Two sections give finer control:
Your themes appear next to the built-ins in the Theme dropdown. To rename a theme, edit its name in the editor. To duplicate one, select it and click Create theme. To delete one, select it and click Delete under Theme Actions.
To share a theme, use Import and Export to move it as a .json file, or paste an https:// URL into the field under Theme Actions and click Install. Plain HTTP URLs are refused, and downloads have a size limit.
A theme file uses the pi-theme/v1 format: JSON with a $schema, a name, a kind ("dark" or