The desktop GUI for the Pi coding agent. Pi's design and flexibility, carried to the desktop.
English | 简体中文
Pi is a coding agent that runs in the terminal, extensible in the spirit of VS Code: packages contribute tools, commands, skills, prompts and themes. Pace brings that flexibility to the desktop, so you can shape a desktop agent that is truly your own. The name comes from move at your own pace: developers should keep full ownership of their agent and set their own rhythm.
Note
Pace is in early 0.y.z development. Only the latest version on GitHub Releases is supported. Journal and projection formats may change between minor versions; the in-app updater handles upgrades. Pi's session data is unaffected (see Local data and recovery).
- Session timeline: follow the agent's chain of thought and tool calls in order, with token usage and cost for every turn. Watch a run live, or replay a recorded session to see what each step did and what it cost.
- Session Dock: Changes, Files, Terminal and an embedded Browser share one sidebar next to the conversation.
- Your Pi setup, as is: Pace shares the sessions, auth and extensions under
~/.pi/agent, and the Packages page manages Pi packages without leaving the app. - Pi remains the only engine: Pace is not a fork of Pi or a separate runtime. Pi's local logs stay the source of truth; uninstalling Pace never deletes a Pi session.
- You use Pi in the terminal and do not need a graphical view of cost, chain of thought or tool calls.
- You are on Windows or an Intel Mac. Installers exist for Apple Silicon Macs and 64-bit Linux only.
- You want an agent client that does not depend on Pi. Pace has no agent loop of its own; Pi handles inference and context management.
Each GitHub Release ships a signed and notarized DMG for Apple Silicon Macs, plus a Linux x64 AppImage and deb.
| Platform | Install | Updates |
|---|---|---|
| macOS 12+ (Apple Silicon) | Open the DMG and drag Pace into Applications. | In-app |
| Linux AppImage (x64) | chmod +x the file and run it. Without FUSE, add --appimage-extract-and-run. |
In-app |
| Linux deb (x64) | Install with apt. |
Install the new package manually |
The Pi runtime is bundled, so no separate pi install is needed. More Linux details: docs/release/linux.md. To run from source instead, follow Setup in CONTRIBUTING.md.
- On first launch, Pace checks the bundled Pi runtime, the data directory and your model provider login, and shows where data will be saved. If you are not signed in to a provider, run
piin a terminal and sign in there; Pace picks up the new login without a restart. - Select a project directory and create a session.
- Send a first message, for example: Explain this repo's architecture.
- Read the conversation in Live Chat, inspect the chain of thought and tool calls in Trajectory, and check the turn's token usage and cost in the status bar.
- Pi owns the context. Pi's session log under
~/.piis the single source of truth. Pace never assembles a prompt and never writes to that log; it stores only projections of Pi's event stream, in its own directory. - The event journal drives the UI. Every Pi event is normalized, sequenced and appended to a journal. The live timeline, history replay and cost accounting are all derived from it.
- The GUI never blocks the agent. The backend runs in a separate Electron
utilityProcessand each root session runs Pi in its own process, so heavy log parsing or a crashing session cannot freeze the window. - Built to be extended. Event routing, the Session Dock and the gateway's capability model are designed so Pi extensions can add their own panels and controls. The protocol for that is the first item on the roadmap below.
How these principles turn into code: docs/architecture.md.
Pace reuses Pi's Package → Extension / Skill / Prompt / Theme model unchanged. The Packages page in the sidebar installs, removes and updates packages, toggles individual resources, and adds local resources to Pi's convention directories. Package rows flag available updates, and resource details show extension errors from the most recently active session. Changes apply to the next new session.
Extensions cannot contribute GUI panels yet. The roadmap, in priority order:
- Extension Surface protocol: let a Pi extension register its own panel, fed by the same event stream as the built-in views.
- Multi-agent workflow visualization: render multi-step and multi-agent runs as an execution topology instead of interleaved logs.
- Pluggable runtime tuning: expose prompt injection, permissions and interruption policy as extension points, so behavior changes ship as packages rather than client patches.
| Data | Installed app | bun run dev |
Owner |
|---|---|---|---|
| Pi sessions, auth, extensions | ~/.pi/agent |
shared | Pi owns session truth; Pace manages user resource settings through the SDK and imports local resources. |
| Session journal, projections, preflight state | ~/.pace |
~/.pace-dev |
Pace. Override with PACE_DATA_DIR (PIGUI_DATA_DIR is a deprecated alias). |
| Renderer preferences (project registry, drafts, model choice), Chromium profile | Electron userData | userData -dev |
Pace. |
Deleting Pace's data directory loses only UI history and cost statistics. Pi session data is never touched, and Pi can rebuild its state from its own log at any time.
- Bugs and feature requests: GitHub Issues.
- Security vulnerabilities: do not open a public issue. Report privately through GitHub as described in SECURITY.md. Only the latest release is supported.
- Release notes: GitHub Releases.
Start with CONTRIBUTING.md: setup, verification commands, branch rules and a good first PR. docs/architecture.md maps the event pipeline and where each concern lives in the code; AGENTS.md holds the full rule set, written for humans and coding agents alike. By participating you agree to the Code of Conduct.
Pace is released under the Apache License 2.0. The Pace name and icon are not covered by that grant. Pi is a separate project with its own license.
