Pi Web
Local-first coding-agent workspace

Chat, files, Git, and terminals
in one quiet workspace.

Pi Web runs on your machine — desktop or browser. The desktop client serves the UI over app:// and splits a light agent runtime from a heavy one over IPC, so session lists, files, and Git stay fast while the agent SDK warms.

macOS arm64 Windows x64 app:// + dual IPC Bundled Node MIT EN / 中文
Pi Web in light theme Pi Web in dark theme
Install

Download the desktop app

macOSApple Silicon
.dmg installer · arm64
↓ Download .dmg
Windowsx64
.exe installer · NSIS
↓ Download .exe

Free & open source (MIT). Installers ship a bundled Node runtime. Desktop UI is not a loopback web server — it uses app:// + IPC. macOS builds are ad-hoc signed (Right-click → Open on first launch if needed). All releases →

Layout

Three panes, zero noise

Projects & sessions
history · worktrees · trust
Chat + tools
model · mode · streaming
Right workspace
Review · Files · Context · Debug · TTY
Highlights

Everything in one place

Streaming agent chat
Live replies, tool calls & results, thinking levels, context usage & cost, compaction.
Agent modes
Ask · Auto edit · Plan · Full access — edit gates and confirmations in one control.
Permissions
Allow / ask / deny for tools, bash, and paths. Deny always wins over YOLO.
Session hub
Project-grouped history, AI titles, fork to a new session, in-session branches.
Git Review
Stage, discard, commit & push, AI commit messages, conflict helpers, review sessions.
Worktrees
List, switch, create, and remove Git worktrees from the sidebar.
Files
Explorer CRUD, fuzzy @-mentions, Monaco edit, Markdown / PDF / DOCX preview.
Terminals
Multi-tab PTY shells at project cwd — user and agent tabs.
Models & auth
Providers, OAuth / API keys, model roles (default / smol / plan), free catalog, smoke tests.
Skills & MCP
Search and install skills; configure MCP servers (stdio / HTTP).
Project memory
Retain / recall / reflect facts scoped to the project (opt-in in Settings).
Desktop shell
Tray (close hides), finish notifications, single-instance, shortcuts, update check.
Agent modes

One control for edit risk

Ask
Confirm file changes before applying.
Auto edit
edit/write auto-allowed; bash & outside-cwd still ask.
Plan
Read-only — strips edit/write; plan first.
Full access
YOLO: auto-approve ask; deny still blocks.
Desktop architecture

app:// UI · dual IPC runtimes

Electron mainapp://pi
desktop-diststatic SPA
IPC bridgepi-api
light runtimeSDK-free
+
heavy runtimeagent SDK

Assets leave the agent process: the main process serves the Vite SPA over app://pi, so SDK load cannot block rendering. SDK-free routes (session list, files, git, settings chrome) stay on the light runtime; chat, models, and live sessions go to heavy. Same app/api handlers as the browser — different transport. Details in desktop-architecture.md.

~246ms
UI ready (Win cold)
~396ms
/api/sessions
~191ms
/api/web-settings
isolated
SDK warm on heavy
Local data

Your data stays on your machine

~/.pi/agentDefault data root (PI_CODING_AGENT_DIR overrides)
…/sessions/…/*.jsonlConversation history, one file per session
…/models.jsonModel / provider config (editable in UI)
…/pi-web.jsonSettings — roles, proxy, agent mode, UI, GPU
…/project-memory/…Project-scoped memory facts (opt-in)
…/cache/jitiDesktop runtime transpile cache

File browsing is scoped to session cwds, project roots, ~/pi-cwd-*, and explicitly allowed roots. No login by default — the agent is high-privilege.

Develop from source

Desktop or browser

git clone https://github.com/ct-jyjntc/pi-web.git
cd pi-web
npm install
npm run desktop:build && npm run electron # app:// + dual IPC
# or browser:
npm run dev # http://127.0.0.1:30141
npm run build:electron npm run dist:mac / dist:win npm run smoke:ipc npm run smoke:electron
No login. Browser binds 127.0.0.1 by default. Binding outside loopback exposes a high-privilege agent surface — only do that on a network you trust.