# PI-Desktop

> A desktop workspace where coding agents keep their projects, sessions and plugins

- Category: AI Coding / Coding-Agent Harnesses & Runtimes
- Language: TypeScript
- Licence: LGPL-3.0
- Repository: https://github.com/vastsa/PI-Desktop
- Website: https://pi-docs.aiuo.net
- Canonical page: https://ai-tldr.dev/tools/pi-desktop/

## In short

PI-Desktop is a cross-platform desktop application that gives a coding agent somewhere to live other than a terminal tab or an editor sidebar. Projects, sessions and settings are stored locally and survive restarts, so a long task can be left running, closed and picked up the next day. It sits in the Coding-Agent Harnesses & Runtimes category of the AI Coding tools and is open-source, written in TypeScript and licensed LGPL-3.0.

## Overview

PI-Desktop is a cross-platform desktop application that gives a coding agent somewhere to live other than a terminal tab or an editor sidebar. Projects, sessions and settings are stored locally and survive restarts, so a long task can be left running, closed and picked up the next day. The app is built from an Electron front end, a Rust host core that owns the native runtime, and the pi Agent Harness that actually drives the model.

Model choice is deliberately not fixed: OpenAI, Anthropic, OpenAI-compatible gateways, Ollama and LM Studio are all first-class, and a session can switch provider mid-conversation. Work is organised through three modes — Agent, which executes directly; Plan, which drafts the change for review before touching anything; and Goal, which runs towards stated acceptance criteria — and a permission layer that stops privileged operations until they are approved.

The part that makes it a workspace rather than a chat window is orchestration and extensibility. A main session can delegate to subagents and run parallel worker sessions, with a session view that shows which of them are running, idle or finished. Plugins go beyond tools: an extension can add a panel, a widget, a slash command, an MCP server, a theme or a background service, installed from an extension marketplace inside the app. It is licensed LGPL-3.0 and ships as a .dmg, a Windows installer and AppImage, .deb and .rpm builds.

## What it does

- Persistent local projects and sessions that resume after the app is closed, with no account or cloud relay required
- Provider-agnostic: OpenAI, Anthropic, OpenAI-compatible gateways, Ollama and LM Studio, switchable inside a running session
- Agent, Plan and Goal modes, plus a permission layer that gates privileged operations behind explicit approval
- Subagent delegation and parallel worker sessions, with a session orchestrator view over all of them
- A plugin system that can add panels, widgets, commands, MCP servers, themes and background services, installed from an in-app marketplace
- Packaged for macOS (Apple Silicon and Intel), Windows x64 and Linux as AppImage, .deb and .rpm

## Getting started

Packaged builds are published on the releases page for macOS, Windows and Linux. To build from source you need Node.js 22.19 or newer, pnpm 10 or newer and a stable Rust toolchain; Linux needs glibc 2.35 or later (Ubuntu 22.04, Debian 12, Fedora 36 and newer).

1. Clone and install

   The repository is a pnpm workspace containing the Electron app, the Rust host core and the agent runtime.

```bash
git clone https://github.com/vastsa/PI-Desktop.git
cd PI-Desktop
pnpm install
```

2. Build the host core and the front end

   The Rust crate is built with Cargo, the JavaScript side with the workspace script.

```bash
cargo build -p host-core
pnpm build:js
```

3. Run it in development

   This launches the Electron shell against the local build.

```bash
pnpm dev
```

4. Add a provider and open a project

   In the app, configure a provider — an API key, an OpenAI-compatible gateway, or a local Ollama or LM Studio endpoint — then open a folder as a project and start a session in Agent, Plan or Goal mode.

5. Check your changes

   The repository's own validation scripts, useful if you are writing a plugin against it.

```bash
pnpm typecheck
pnpm lint
pnpm test
```

## When to use it

- Running long, multi-hour agent tasks that need to survive closing the laptop lid
- Fanning a large refactor out to parallel worker sessions and watching them from one orchestrator view
- Keeping agent work off a hosted service entirely by pointing it at Ollama or LM Studio
- Extending an agent's environment with your own panels, commands or MCP servers instead of forking a CLI
