@hyperpuncher/pi-ui
v0.53.0
Published
keyboard-first minimal gui for pi
Readme
pi-ui
keyboard-first minimal gui for pi
features
- background sessions
- git review with commit history and inline comments
- markdown, syntax highlighting, and rich diffs
- file attachments with image previews
built with
try
requires bun 1.4+
bunx @hyperpuncher/pi-uiinstall
quick install
the quick installers start pi-ui in the background and at login
linux and macos
curl -fsSL https://pi-ui.app/install | shwindows
irm https://pi-ui.app/install.ps1 | iexopen http://127.0.0.1:31415 in your browser
package managers
bun
requires bun 1.4+
bun i -g @hyperpuncher/pi-uiarch
paru -S pi-ui-binhomebrew
brew install hyperpuncher/tap/pi-uipackage-manager installs must be started with
pi-uior configured as a background service below
background service
start pi-ui now and at login:
pi-ui service installstop pi-ui and remove the service:
pi-ui service uninstallhomebrew
homebrew manages the service separately:
brew services start pi-ui
brew services stop pi-uidevelopment
requires bun 1.4+
bun ci
bun run devconfiguration
pi-ui stores its configuration in:
- linux:
~/.config/pi-ui/config.json - macos:
~/.config/pi-ui/config.json - windows:
%APPDATA%\pi-ui\config.json
all options with their defaults:
{
"$schema": "https://pi-ui.app/config.schema.json",
"autoTitle": {
"enabled": true,
"models": [
"openai-codex/gpt-5.6-luna:minimal",
"opencode-go/deepseek-v4.1-flash:off"
],
"prompt": "use lowercase"
},
"codeTheme": {
"dark": "pierre-dark-soft",
"light": "pierre-light"
},
"fonts": {
"mono": "system",
"sans": "system"
},
"gitView": {
"changesRatio": 0.5,
"gitPaneRatio": 0.5,
"layout": "split",
"mode": "all",
"reviewSidebarWidth": 272,
"tab": "git",
"wrap": true
},
"keybindHints": true,
"keybinds": {
"new-chat": "ctrl o",
"new-temporary-chat": "ctrl alt o",
"resume-session": "ctrl r",
"previous-session": "ctrl ^",
"command-palette": "ctrl k",
"toggle-minimal-mode": "alt m",
"toggle-tool-output": "alt o",
"switch-model": "ctrl l",
"cycle-model": "ctrl p",
"cycle-thinking": "alt t",
"cycle-thinking-backward": "alt shift t",
"toggle-thinking": "ctrl alt t",
"toggle-review": "ctrl g",
"change-workspace": "ctrl /",
"cycle-model-backward": "ctrl shift p",
"toggle-sessions": "ctrl b",
"focus-prompt": "alt p",
"focus-conversation": "alt c",
"focus-sessions": "alt s",
"focus-workspace-files": "alt f",
"focus-workspace-changes": "alt g",
"focus-workspace-editor": "alt e"
},
"minimalMode": false,
"sessionSidebar": {
"open": true,
"width": 288
},
"toolOutputHidden": false,
"toolbarHidden": false,
"updateCheck": true
}keybinds
| key | action | | ---------------------------------------------------------- | --------------------------- | | ctrl/⌘ k | command palette | | alt p | focus prompt | | alt c | focus conversation | | alt f | focus workspace files | | alt g | focus git changes | | alt e | focus file or diff | | alt s | focus sessions | | j / k or ↑ / ↓ | move or scroll focused pane | | gg / G | top / bottom | | ctrl/⌘ o | new session | | ctrl/⌘ alt o | temporary chat | | ctrl/⌘ 1–9 | switch session | | ctrl/⌘ ^ | previous session | | ctrl/⌘ r | session picker | | ctrl/⌘ b | toggle session sidebar | | ctrl/⌘ / | workspace picker | | ctrl/⌘ g | toggle workspace | | ctrl/⌘ l | model picker | | ctrl/⌘ p | cycle favorite model | | ctrl/⌘ shift p | cycle favorite model back | | alt t | cycle thinking level | | alt shift t | cycle thinking back | | ctrl/⌘ alt t | toggle thinking blocks | | alt m | toggle minimal mode | | alt o | toggle tool output | | / | slash commands | | @ | file picker | | alt enter | queue follow-up | | alt ↑ | restore queued text |
license
mit
