Skip to content
Lowell137Public
forked from hyperpuncher/pi-ui

About

Keyboard-first GUI for the oh-my-pi coding agent; self-contained Linux AppImage (fork of pi-ui)

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

omp-ui

keyboard-first minimal gui for the oh-my-pi coding agent, in a desktop window

omp-ui demo

features

  • background sessions
  • git review with commit history and inline comments
  • markdown, syntax highlighting, and rich diffs
  • file attachments with image previews

this fork

Two things are different from upstream: the agent behind the UI, and how it ships.

  • Backend is oh-my-pi. omp-shim/ re-implements the @earendil-works/pi-* surface on top of omp, and bun run shim:link (part of dev and build) swaps the packages inside node_modules, because a plain install restores the pi tarballs and drops the links. The shim is why / lists omp's builtin commands and why /btw can answer a side question without touching the session. omp reads ~/.omp for its native modules and provider credentials, so oh-my-pi has to be installed and signed in.
  • It ships as one Linux AppImage with the server inside. desktop/ is a Tauri v2 shell: an undecorated window with its own title bar and File/Edit/View/Help menus, which starts the compiled Bun server as a sidecar on a free loopback port and owns its process group. Closing the window takes the server, its terminals and its headless Chrome with it; nothing is left behind.
  • Workspace panel on the right: file tree, real terminals, and a browser tile fed by CDP screencast frames from a headless Chrome, so the agent's own browsing is visible and clickable. Width is draggable and remembered.
  • Session list grouped by workspace folder, collapsible, and noticeably faster to switch (click to paint about 200 ms, down from about 870 ms).

install

Linux x86_64. Needs a WebKitGTK 4.1 runtime (webkit2gtk-4.1), fd for file search, and Google Chrome for the browser tile.

curl -fsSL https://raw.githubusercontent.com/Lowell137/omp-ui/main/install.sh | bash

That puts the AppImage under ~/.local/share/omp-ui, links omp-ui into ~/.local/bin, and adds a desktop entry. install.sh --uninstall removes all three; bash install.sh <tag> installs a specific release.

build

bun install
bun run dev                          # server on http://127.0.0.1:31415
bash desktop/package-appimage.sh     # -> ~/Downloads/omp-ui_0.1.0_amd64.AppImage

The AppImage step needs a Rust toolchain and appimagetool. cargo tauri build fails in its own linuxdeploy stage on this host, so the script finishes packaging by hand.

Fork status: bun run lint and bun run check still report failures coming from the shim and from SDK type drift between pi and omp, so the upstream Verify workflow is not enabled here.

built with

server only

The AppImage above already runs the server inside itself. To use the browser UI without the desktop window, run the server directly:

bun install
bun run dev

then open http://127.0.0.1:31415. bun run build compiles it to a single dist/omp-ui executable, and omp-ui service install runs that one now and at login (omp-ui service uninstall removes it).

development

requires bun 1.4+

bun ci
bun run dev

configuration

omp-ui stores its configuration in:

  • linux: ~/.config/omp-ui/config.json
  • macos: ~/.config/omp-ui/config.json
  • windows: %APPDATA%\omp-ui\config.json

all options with their defaults:

{
	"$schema": "https://raw.githubusercontent.com/Lowell137/omp-ui/main/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,
		"workspacePanelWidth": 560
	},
	"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": {
		"collapsedWorkspaces": ["/home/me/tmp"],
		"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

About

Keyboard-first GUI for the oh-my-pi coding agent; self-contained Linux AppImage (fork of pi-ui)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages