Orbit is a native desktop workbench for the pi coding agent — a chat-style GUI rendered entirely in Rust on GPUI, the GPU-accelerated UI framework Zed is built on. It speaks the pi CLI's RPC protocol directly over stdio: no browser, no webview, no Node.
Sessions you create in Orbit and in the terminal are the same sessions (~/.pi/agent/sessions/), managed by pi's own session manager.
A live session — streaming transcript, tool rows, and the composer:
Usage — requests, tokens, cost, and cache, read from your own sessions:
| New task | Review |
|---|---|
![]() |
![]() |
| Git | Providers |
![]() |
![]() |
| Plugins | Skills |
![]() |
![]() |
| Models | Appearance |
![]() |
![]() |
| General | Agent |
![]() |
![]() |
Chat and transcript
- Chat-style agent sessions — composer with model selection, thinking effort, follow-up queueing, mid-run steering, cancel, and streaming replies
- GPU-rendered transcript — virtualized so cost is independent of message count, with stick-to-latest streaming and coalesced commits
- GFM markdown and syntax-highlighted code; highlighting is paint-only so streaming code blocks never reflow, and Mermaid fences stay copyable code blocks
- In-transcript find (⌘F) and a full-window image lightbox
- Tool activity — bash, edit, read, and thinking rows drawn natively, expanding into Arguments/Output cards with per-section copy
Sessions
- Grouped by project, persistent, reopenable, and cross-workspace
- Orbit-owned project list — remove a workspace from the sidebar without deleting pi's sessions
- Clone a session to branch off it
Safeguards
- Access modes — Supervised, Auto-accept edits, or Full access, chosen from the composer
- Enforced by a bundled pi extension that hooks
tool_calland confirms mutating calls the mode does not auto-approve - An inline bar above the composer offers Allow once / Always allow this tool / Deny (↑ ↓ ⏎ esc), with the allowlist recorded per mode
- A confirmation guard, not a sandbox — pi ships no sandbox, and Orbit does not add one
Review and Git
- Side pane with a live
git diff HEADof the workspace, refreshed when a run settles - Git page for Changes / History / Graph, staging, and commit
Workbench
- Usage, skills, plugins, models, providers, and appearance pages, backed by pi's on-disk data
- Providers — pi's live catalog plus custom endpoints, with API-key or OAuth sign-in and usage meters
- Plugins — install pi packages from npm, git, or a local path, global or per project, and update or remove them in place
- Models and thinking effort read from pi's own runtime
- Appearance — Light / Dark / System, independent light and dark theme palettes, background image, fonts, sizes, spacing density, and interface language (English, 简体中文, 日本語, 한국어, Español, Français, Deutsch, Português do Brasil, Русский, Italiano, or the system language). System follows OS appearance changes live; new installations use System, while existing theme choices are preserved.
Native
- Keyboard operability, custom macOS window chrome, native dialogs, and reduce-motion
- A signed, notarizable
.appbundle
┌───────────────────────────────────────────┐
│ Orbit (Rust) — GPUI, Metal-rendered UI │
│ crates/orbit-pi │
│ window, transcript, markdown, workbench │
└──────────────┬────────────────────────────┘
│ newline-delimited JSON RPC over stdio
┌──────────────▼────────────────────────────┐
│ pi CLI (child process, per open session) │
│ pi --mode rpc — sessions, models, tools │
└──────────────┬────────────────────────────┘
│
┌──────────────▼────────────────────────────┐
│ ~/.pi/agent/ — sessions, config, usage │
│ (same data the pi CLI uses) │
└───────────────────────────────────────────┘
Orbit spawns the pi CLI as a child process per open session and speaks its RPC protocol: JSON requests on stdin, JSON-line events on stdout (text/thinking deltas, tool calls, question dialogs, settle signals). Everything user-facing is painted by GPUI on Metal — no DOM, no CSS, no browser engine. The agent runtime stays pi itself, so the model catalog, thinking levels, and persistence remain pi's own.
crates/orbit-pi/ The GPUI app — window, transcript, markdown, workbench
crates/orbit-rpc/ pi CLI RPC client (process lifecycle + JSONL protocol)
contrib/ Bundled pi extensions (access guard, auth/quota bridges)
scripts/make-dmg.sh Build a signed .app + DMG (arm64 / universal)
assets/icons/ App icon (logo-icon.png source, icon.icns, icon.png)
marketing/ Next.js landing page
PRODUCT.md Product definition, capabilities, constraints
INTENT.md Architecture decisions + phase plan
AGENT.md Conventions for agents and humans working on this repo
Orbit is a workbench, not just a chat window. The confirmed direction lives in PRODUCT.md, architecture decisions in INTENT.md, and shipped work in CHANGELOG.md. Every unchecked item below is open for a pull request — read CONTRIBUTING.md and claim the linked issue before starting.
| Feature | Area | Description | Status | Tracking |
|---|---|---|---|---|
| Workflow modes | Composer | Start a session scoped to Plan Mode, Build Mode, or Ask Mode instead of one undifferentiated chat. | Planned | — |
| Follow-up on settle | Transcript | Show a queued follow-up inline once a run ends, not only in the compose queue. | Planned | — |
| Suggested follow-ups | Transcript | Propose 2–3 context-grounded next prompts as composer inserts after a run settles. | Proposed | #10 |
| AI review agent | Review | Run a read-only reviewer over current changes or the whole project; findings render in the Review pane. | Proposed | #6 |
| GitHub client | Workbench | Browse and manage remote commits, graph, issues, and pull requests in-app. | In progress — issues and PRs tabs ship today | #8 |
| Pi extension support | Workbench | First-class list / install / enable / configure / debug of pi extensions, including community ones. | Proposed | #7 |
| Global default model | Models | Pin pi's global default model and thinking effort from within Orbit. | Proposed | #9 |
| Voice dictation | Composer | Dictate prompts into the composer. | Planned | — |
| Diff review and terminal | Workbench | Inline diff review and an integrated terminal. | Planned | — |
| Parallel sessions | Sessions | Run multiple agents / sessions side by side. | Planned | — |
| Explorer gaps | Explorer | Quick-open, sticky scroll, and directory folding in the file tree. | Planned | — |
| Conversation fork/rewind | Sessions | Branch and rewind a conversation (clone ships today). | Planned | — |
| Scroll-perf measurement | Performance | On-device measurement of transcript scroll performance. | Planned | — |
- Workflow modes — Plan Mode / Build Mode / Ask Mode
- Follow-up on settle — show a queued follow-up inline when a run ends
- Suggested follow-ups — context-grounded next prompts (#10)
- AI review agent — read-only review of changes or the whole project (#6)
- GitHub client — commits, graph, issues, and pull requests (#8)
- Pi extension support — install and manage extensions, including community ones (#7)
- Global default model — set pi's default model and thinking effort (#9)
- Voice dictation — dictate prompts into the composer
- Diff review and terminal — inline review plus an integrated terminal
- Parallel sessions — multiple agents / sessions at once
- Explorer gaps — quick-open, sticky scroll, directory folding
- Conversation fork/rewind — branch and rewind a session
- Scroll-perf measurement — on-device transcript scroll benchmark
Setup, checks, and commit conventions live in CONTRIBUTING.md. Orbit is licensed under Apache-2.0; report vulnerabilities per SECURITY.md.











